TCP, UDP
이 포스트는 김영한님의 ‘모든 개발자를 위한 HTTP 웹 기본 지식’을 수강하고 작성하였습니다.
TCP/IP 4계층 (TCP/IP 4 Layer)
TCP/IP 4계층 |
---|
응용 계층 (Application Layer) HTTP, FTP |
전송 계층 (Transport Layer) TCP, UDP |
인터넷 계층 (Internet Layer) IP |
네트워크 접근 계층 (Network Access Layer) |
프로토콜 계층
- 채팅 프로그램이 ‘I am Yejin’이라는 메시지를 생성한다.
- SOCKET 라이브러리를 통해 OS 계층에 메시지를 전달한다.
- TCP는 ‘I am Yejin’이라는 메시지에 TCP 정보를 씌운다.
- IP는 TCP 바깥에 IP 정보를 씌워 IP 패킷을 생성한다.
- 이후 네트워크 인터페이스를 통해 인터넷으로 서버에 전달된다.
TCP 패킷 정보
TCP 패킷 정보 |
---|
출발지 IP, 목적지 IP, 기타… |
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보, 기타… |
전송 데이터 |
TCP (전송 제어 프로토콜; Transmission Control Protocol)
- 연결 지향이다. - TCP 3 way handshake (가상 연결)
- 데이터 전달을 보증한다.
- 패킷의 도착 순서를 보장한다.
- 신뢰할 수 있는 프로토콜이다
- 현재는 대부분 TCP를 사용한다.
TCP 3 way handshake
- 클라이언트가 서버에게 SYN를 보낸다.
- 서버는 클라이언트에게 ACK에게 보내면서 SYN을 보낸다.
- 클라이언트는 서버에게 ACK를 보낸다. 이 때 클라이언트는 ACK와 함께 데이터를 전송할 수 있다.
- TCP 3 way handshake를 이용하면 클라이언트와 서버가 연결이 되었음을 인식할 수 있고, TCP 3 way handshake는 논리적 연결 방식이다.
단점
- 클라이언트와 서버에 응답이 오가면서 시간이 걸린다.
- 데이터 양이 크고, 전송 속도를 더 빠르게 만들기 어렵다.
데이터 전달 보증
- 클라이언트가 서버에 데이터를 전송하면 서버는 데이터를 받았다고 서버에 응답한다.
순서 보장
- 클라이언트가 서버에 패킷1, 패킷2, 패킷3을 전송했는데, 서버에 패킷1, 패킷3, 패킷2의 순서로 패킷들이 도착하면 서버는 클라이언트에 패킷2부터 다시 보내라고 응답한다.
- TCP 내의 전송 제어, 순서, 검증 정보를 이용한다.
- 서버에서 패킷 순서를 최적화하는 방법은 각각 다르다.
UDP (사용자 데이터그램 프로토콜; User Datagram Protocol)
- 기능이 거의 없다.
- 연결 지향이다. -
TCP 3 way handshake 데이터 전달 보증순서 보장- 단순하고 빠르다.
- IP와 거의 같은데, PORT와 체크섬 정도만 추가되었다.
- 어플리케이션에서 추가 작업이 필요하다.
UDP를 쓰는 이유
- HTTP3 통신을 할 때 UDP를 쓴다.
댓글남기기