[네트워크] TCP와 UDP

2022. 3. 27. 23:10CS/스터디

TCP 란?

TCP (Transmission Control Protocol) 전송 제어 프로토콜

TCP는 IP와 함께 사용된다. IP는 패킷을 목적지까지만 보내는 일을 한다. 네트워크상에서 발생할 수 있는 데이터 누락, 패킷의 순서 뒤바뀜 등 데이터 검사 및 교정과 관련된 기능이 있다.

신뢰성이 있는 데이터 전송을 위한 방법으로, 클라이언트 , 서버라는 개념을 도입하였고 이러한 연결을 만드는 특성으로 연결 지향 프로토콜이라고 한다.

 

* 프로토콜 : 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다.

osi 7계층

* 패킷 : 정보 기술에서 패킷 방식의 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다. 즉, 컴퓨터 네트워크에서 데이터를 주고받을 때 정해놓은 규칙이다. 정보를 보낼 때 어떠한 특정 형태를 맞추어서 보낸다는 것이다. 데이터 조각이라고 보면 편하다.

 

TCP 특징

 

  • point-to-point : 하나의 송신 측과 하나의 수신 측이 통신하는 1:1 통신이다.
  • reliable : 신뢰성 있는 데이터 전송을 보장한다.
  • pipelined : TCP 흐름 제어와 혼잡 제어가 window size를 설정한다.
  • full duplex(전이중 통신) : 쌍방향 통신이 가능하다. 즉 데이터를 주고받을 수 있다.
  • connection-oriented : 연결 지향적이다. 송신 측과 수신 측이 데이터를 교환하기 전에 handshaking을 한다.
  • flow control : 흐름 제어를 한다.
  • congestion control : 혼잡 제어를 한다.

 

 

UDP 란?

UDP (User Datagram Protocol) 비연결형, 신뢰성이 없는 전송 프로토콜이다. 

IP 데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다.

 

* 신뢰성이 없다는 말은 데이터 전송하기 전에 프로세스 간에 3단계 연결 설정 과정을 필요로 하지 않는다. (패킷 순서가 일치하지 않는다. 패킷 손실이 발생해도 UDP 에서 이걸 찾아내지 못한다.)

* 3단계 연결 과정이란 

[STEP 1]
Client는 Server에 접속을 요청하는 SYN 패킷을 보낸다. 이때 Client는 SYN을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태가 된다.

[STEP 2]
Server는 Client의 SYN 요청을 받고 Client에게 요청을 수락한다는 ACK와 SYN 가 설정된 패킷을 발송하고 A가 다시 ACK로 응답

[STEP 3]
Client가 Server에게 SYN+ACK를 받게되면 Server에게 응답을 확인했다는 ACK을 보낸다.
그 이후부터는 연결이 이루어지게되고 데이터가 오가게 된다.

위의 3단계를 거쳐 통신하는 것이 신뢰성 있는 연결을 맺어준다는 TCP의 3-Way HandShake방식이다. 

 

UDP 특징

 

  • UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다. 
  • 따라서 내용이 전송 중에 손실될 수 있고, 전송되는 세그먼트의 순서가 바뀔 수 있다.
  • UDP는 TCP보다 간단하고 빠르다.
  • 작은 header size를 가지고 있다.
  • 흐름 제어를 하지 않기 때문에 전송 속도를 최대한 빠르게 할 수 있다.
  • 수신자와 송신자 간의 handshaking이 없는 connectionless 성질을 가진다.

 

 

+ 질문 ) TCP와 UDP의 차이점에 대해서 설명해보세요.

 

TCP는 연결 지향형 프로토콜이고 UDP는 데이터를 데이터그램 단위로 전송하는 프로토콜입니다.

TCP는 가상 회선을 만들어 신뢰성을 보장하도록(흐름 제어, 혼잡 제어, 오류 제어) 하는 프로토콜로 따로 신뢰성을 보장하기 위한 절차가 없는 UDP에 비해 속도가 느린 편입니다.

TCP는 그래서 파일 전송과 같은 신뢰성이 중요한 서비스에 사용되고, UDP는 스트리밍, RTP와 같이 연속성이 더 중요한 서비스에 사용됩니다.

 

+) 하지만 UDP도 신뢰성을 UDP자체에서 보장하지 않는 것뿐이지, 개발자가 직접 신뢰성을 보장하도록 할 수 있습니다. 그래서 HTTP/3은 QUIC이라는 프로토콜을 기반으로 하는데, QUIC은 UDP를 기반으로 합니다. 즉, UDP 자체는 신뢰성을 보장하지 않지만, 추가적인 정의를 통해 신뢰성을 보장받을 수 있습니다.

728x90