✨출처✨
모든 개발자를 위한 HTTP 웹 기본 지식
김영한님의 인프런 강의를 듣고 정리한 글입니다.
전송 데이터를 전달하기 전에, 출발지 IP, 목적지 IP를 포함하여 IP 패킷을 만든다.
클라이언트는 출발, 도착 IP 정보와, 전송 데이터가 포함된 패킷을 서버에 전달한다.
이때 패킷은 200.200.200.2(도착지)의 IP를 알아서 찾아간다.
클라이언트 패킷과 동일하게 100.100.100.1 IP를 찾아간다.
이러한 IP 프로토콜의 한계를 해결해주는 것이 TCP이다.
출발지 PORT, 목적지 PORT
전송 제어, 순서, 검증 정보가 추가로 들어간다.
전송 제어 프로토콜
특징 3가지
1. 연결 지향 - TCP 3 way handshake(가상 연결)
2. 데이터 전달 보증
3. 순서 보장
1. 클라이언트 -> 서버 : SYN 전송
2. 서버 -> 클라이언트 : SYN + ACK 전송
3. 클라이언트 -> 서버: ACK 전송
4. 데이터 전송
물리적으로 연결된 것이 아닌, 개념적으로 연결된 것.
클라이언트와 서버가 서로 믿을 수 있다.
클라이언트: 나 데이터 보냈다~
서버: 나 데이터 전달 잘 받았어!🙋🏻♀️
🤔 아니..데이터 전달 보증이랑 순서보장..그래서 이게 어떻게 가능한건데?
TCP/IP 패킷에 전송 제어, 순서, 검증 정보가 추가로 들어가기 때문
🤔 뭐야..아무것도 못하는데 왜 써?
인증, 확인 등 절차가 없기 때문에 전송 속도가 빠름
최근에는 최적화하기 위해 UDP가 각광받고 있다.
출발지 IP, PORT
도착지 IP, PORT
전송 데이터
같은 IP 내에서 프로세스를 구분하기 위해 사용.
예를 들자면..?
ip: 아파트
port: 몇동 몇호
🤯 IP는 기억하기 어렵고, 변경될 수 있다.
DNS가 있다면 이 문제를 해결할 수 있다!