티스토리 뷰

TCP(Transmission Control Protocol)

  • IP 프로토콜 위에서 연결형 서비스를 지원하는 전송계층 프로토콜, 인터넷 환경에서 기본으로 사용한다.
    • 3-way handshaking 과정을 통해 연결을 설정하고
    • 4-way handshaking 과정을 통해 연결을 해제한다.
  • 데이터가 전달될 때 수신이 가능한지, 데이터가 잘 갔는지 확인하는 과정을 거치면서 오류와 흐름을 제어하고 신뢰성 있는 데이터가 전달될 수 있도록 한다.
  • 중간 확인 과정이 추가되고 연결을 유지하는 과정에서 추가 리소스가 발생한다.
  • 안정적으로, 순서대로, 에러없이 교환 가능
  • 전이중(Full Duplex) 방식의 양방향 가상 회선 지원
  • 신뢰성 있는 데이터 전송 보장
  • 흐름제어
    • 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
  • 혼잡제어
    • 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지
  • 점대점

 


UDP(User Datagram Protocol)

  • 비연결형 프로토콜로 인터넷상에서 서로 정보를 주고받을 때, 정보를 보내거나 받는다는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜이다.
  • 보내는 쪽에서 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없고, 또 확인할 필요도 없도록 만들어진 프로토콜이다.
  • 데이터가 제대로 전달되는지 확인하지 않고, 데이터를 빠르게 전달하는데 초점을 두고 있다.
  • TCP에 비해 안정성은 떨어지지만, 오버헤드가 적은 장점이 있다.
  • 연속적인 특성을 가진 스트리밍과 같은 서비스에서 주로 사용한다.
  • 비연결형 서비스 제공
  • 헤더와 전송 데이터에 대한 체크섬 기능 제공
  • Best Effort(전달만 하는 최선 서비스) 전달 방식 지원
  • 신뢰성 낮음
  • 1:1, 1:N, N:N 통신 가능

 


TCP vs UDP

프로토콜 종류 TCP UDP
연결 방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서가 바뀔 수 있음
수신 여부 확인 수신 여부를 확인함 수신 여부를 확인하지 않음
통신 방식 1:1 통신 1:1 OR 1:N OR N:N 통신
신뢰성 높다. 낮다.
속도 느리다. 빠르다.

 

TCP 연결형, 신뢰성 전송 프로토콜이다.
연결지향적 서비스를 제공하기 위해 데이터를 전송하기 전에 3way handsaking을 하여 두 호스트의 전송 계층 사이에 논리적 연결을 설립한다. 신뢰성 있는 서비스를 제공하기 위해 오류제어, 흐름제어, 혼잡제어 등을 실행한다. 신뢰성을 보장하기 위해서 header가 더 크고 속도가 비교적 느리다는 단점이 있다.

 

UDP 비연결형 프로토콜로 3-way handshake 등의 세션 수립 과정이 없다. 또한 비신뢰성 프로토콜로 흐름제어, 오류제어, 혼잡 제어를 제공하지 않는다. 이러한 단순성 덕분에 적은 양의 오버헤드갖고 수신여부를 확인하지 않아서 속도가 빠르다.

 

TCP는 신뢰성이 중요한 통신(HTTP, File 전송 등)에 쓰이고, UDP는 실시간성이 중요한 통신(동영상 스트리밍 등)에 주로 사용된다.