본문 바로가기
네트워크

TCP, UDP

by 상원윤 2022. 10. 1.

TCP/IP 4계층 모델

4층 응용계층                   - HTTP, DNS, FTP, ...
3층 전송계층                   - TCP, UDP, ...
2층 인터넷 계층              - IP, ICMP, ARP, RARP
1층 네트워크 접근 계층   - Ethernet, wifi, ... 

전송계층에 속하는 TCP와 UDP는 2계층에서 동작하는 IP 와 4계층에서 동작하는 애플리케이션(http 등)을 중개하는 역할을 한다.

TCP와 UDP는 중개하는 역할을 하는점에서는 동일하지만, 각각이 다른특징을 가지고 있다.

 

  TCP(Transmission control protocol) UDP(User datagram protocol)
서비스 타입 연결 지향적 프로토콜 데이타그램 지향적 프로토콜
신뢰성 데이터 전송 표적 기기까지의 전송을 보장한다 표적 기기까지의 전송이 보장되지 않는다
순서 보장 전송하는 패킷들의 순서가 보장된다 패킷순서가 보장이 안된다. 패킷 순서를 보장하기 위해서는 애플리케이션 레이어에서 관리 되어야함
속도 UDP의 비해서 느리다 TCP와 비교해 빠르고, 단순하며 효율적인 속도를 가짐

TCP는 통신 신뢰성을 높이는 실현하는 기능이 구현되어 있다.

UDP에는 신뢰성을 높이는 기능이 없는 대신 보다 높은 속도와 효율성을 제공한다.

 

TCP 3-way handshake

TCP 3-way handshake 는 양 끝단의(end to end) 기기의 신뢰성 있는 데이터 통신을 위해, TCP 방식이 연결을 설정하는 방식이다.

마치 전화를 거는 것 같이 연결을 설정하는 이 방식은 세단계를 통해 연결 설정을 한다.

 

Step 1 (SYN): 처음으로, sender는 receiver와 연결 설정을 위해, segment를 랜덤으로 설정된 SYN(Synchronize Sequence Number)와 함께 보낸다. 이 요청은 receiver에게 sender가 통신을 시작하고 싶다고 알림.

Step 2(SYN / ASK): receiver 는 받은 요청을 바탕으로 SYN/ACK 신호 세트를 응답한다. Acknowledgement(ACK) 응답으로 보내는 segment가 유효한 SYN요청을 받았는지를 의미한다.

Step 3(ACK): 마지막 단계에서, sender는 받은 ACK를 receiver에게 전송을 하면서, 신뢰성 있는 연결이 성립되었다는 사실을 sender와 receiver 양쪽에서 알 수 있고, 실제 데이터 전송이 시작되게 된다.

 

UDP

TCP 처럼 가상의 회선을 설정해 신뢰성을 보장하면 당연히 좋은데 왜 UDP를 사용할까?

화상체팅을 한다고 가정했을때 상대방에게 데이터를 보낼때 마다 지연시간이 조금씩 발생하면 싱크가 맞지 않는다.

 

UDP는 애플리케이션의 정교한 제어가 가능하다.

TCP의 경우 receiver가 전송 받을 준비가 될 때까지 세그먼트를 반복적으로 재전송한다. 실시간 전송에 대한 요구가 큰 애플리케이션 들은 높은 지연시간를 지양하므로 약간의 데이터 손실을 감수한다. 

연결설정에 무관하다.

TCP 3-way handshake 가 없는 UDP는 예비과정 없이 바로 전송을 시작한다. 설정단계에서 발생하는 지연이 없는 만큼, 반응속도가 빠르다. 또한, TCP 가 신뢰성을 위해 많은 파라미터와 정보 전달이 필요함과 비교해 UDP는 연결설정 관리를 하지 않기 때문에 어떠한 파라미터도 기록하지 않는다. 이때문에 서버에서도 TCP와 비교에 더 많은 클라이언트를 수용이 가능하다.

'네트워크' 카테고리의 다른 글

웹(WEB)  (0) 2022.10.03
URL, DNS  (0) 2022.10.02
PORT  (0) 2022.10.01
IP 주소 구조  (0) 2022.10.01
TCP/IP  (0) 2022.10.01