728x90
TCP/IP 4계층 모델
TCP와 UDP는 TCP/IP 4계층 모델을 기준으로 IP 프로토콜의 계층인 인터넷 계층의 상위에서 동작한다. 전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP와 4계층에서 동작하는 애플리케이션을 중개하는 역할을 한다.
4층 | 응용 계층 | HTTP, DNS, FTP, ... | 애플리케이션에 맞추어 통신 |
3층 | 전송 계층 | TCP, UDP, ... | IP와 애플리케이션을 중개해 데이터를 확실하게 전달 |
2층 | 인터넷 계층 | IP, ICMP, ARP, RARP | 네트워크 주소를 기반으로 데이터를 전송 |
1층 | 네트워크 접근 계층 | Ethernet, wifi, ... | 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송이 가능하도록 함 |
TCP, UDP 특징
TCP는 3-way handshake 과정을 통해 통신 신뢰성을 높인다. UDP는 신뢰성을 높이는 기능이 없지만 높은 속도와 효율성을 제공한다.
이러한 특징때문에 데이터의 신뢰성이 필요한 애플리케이션은 TCP를, 빠른 속도나 실시간 통신이 중요한 애플리케이션의 경우 UDP를 사용한다.
웹 애플리케이션에서 많이 사용하는 HTTP는 모든 데이터를 안전하게 송수신해야 하기 때문에 TCP를 많이 사용한다.
TCP | UDP | |
서비스 타입 | 연결지향적 프로토콜 | 데이터그램 지향적 프로토콜 |
신뢰성 | 데이터 전송 포적 기기까지의 전송을 보장 | 표적 기기까지의 전송이 보장되지 않음 |
순서 보장 | 전송하는 패킷들의 순서를 보장 | 전송하는 패킷들의 순서가 보장되지 않음 |
속도 | UDP에 비해 상대적으로 느림 | TCP에 비해 상대적으로 빠름. 단순하고 더 효율적인 속도를 가지고 있다. |
TCP 3-way handshake
TCP 3-way handshake는 양 끝단의(end to end) 기기의 신뢰성 있는 데이터 통신을 위해, TCP 방식이 연결을 설정하는 방식이다.
3-way handshake는 세 단계를 통해 연결 설정을 한다.
- SYN : 클라이언트는 서버와 연결 설정을 위해, segment를 랜덤으로 설정한 SYN(Synchronize Sequence Number)와 함께 보낸다. 이 요청은 클라이언트가 서버에게 통신을 시작하고 싶다고 알리는 요청이다.
- SYN / ACK : 서버는 받은 요청을 바탕으로 SYN / ACK 신호 센트를 응답한다. ACK(Acknowledgement) 응답으로 보내는 segment가 유효한 SYN 요청을 받았는지를 의미한다.
- ACK : 클라이언트는 전달받은 ACK을 서버에게 전송한다. 이를 통해 서버와 클라이언트 양쪽에서 신뢰성 있는 연결이 성립되었다는 사실을 알 수 있고, 실제 데이터 전송이 시작되게 된다.
UDP
TCP는 신뢰성을 보장하는데도 UDP를 사용하는 이유가 뭘까?
- 애플리케이션의 정교한 제어가 가능하다 : TCP는 신뢰성을 보장하기 위해서 세그먼트를 반복적으로 재전송하기 때문에 latency가 발생할 수 있다. 실시간 전송에 중요한 애플리케이션은 latency를 지양하기 때문에 약간의 데이터 손실을 감수하고 UDP를 사용한다. 대신 개발자 스스로 이를 보완하기 위해 애플리케이션에 추가 기능을 구현할 수 있다. 대표적으로 HTTP3에서는 QUIC를 사용하는데 UDP를 기반으로 하고 있으며 추가 기능을 구현하여 신뢰성까지 보장하고 있다.
- 연결설정에 무관하다 : UDP는 연결설정 관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않는다. 이 때문에 서버에서도 TCP와 비교해서 더 많은 클라이언트를 수용할 수 있다.
- 빠르다 : TCP처럼 3-way handshake를 거치지 않기 때문에 설정 단계에서 발생하는 latency가 없고, 반응 속도가 빠르다(스트리밍)
728x90
'Network' 카테고리의 다른 글
HTTP - 헤더 정보 (0) | 2023.08.01 |
---|---|
HTTP - 알아두면 좋은 URI 설계 개념 (0) | 2023.08.01 |
HTTP - HTTP 메서드 (0) | 2023.07.20 |
HTTP - HTTP 기본 메시지 (0) | 2023.07.20 |