TCP/UDP란?

4계층인 전송 계층에서 사용되는 프로토콜이며, 컴퓨터가 다른 컴퓨터와 통신을 하기 위한 프로토콜이다.

 

TCP(Transmission Control Protocol)

  • 연결지향
  • 신뢰성 있는 데이터 통신
  • 데이터 순서 보장
  • 혼잡제어, 흐름제어, 오류제어

특징을 설명하기 전에 TCP 세그먼트 구조를 알아보자. 전송 계층의 프로토콜 데이터 단위(PDU)는 세그먼트이다. PDU는 상위 계층에서 하위 계층으로 데이터를 전달될 때 데이터에 각 계층의 특성에 맞는 헤더가 추가되는데 이를 캡슐화라고 하며, 그 과정의 결과물이라고 보면 되겠다. 즉, 세그먼트는 응용계층 PDU인 데이터에 헤더가 추가된 것으로 보면 된다. 

 

그림 1

그림 1은 TCP 세그먼트의 헤더 구조이다. 여기서 몇가지만 알아보자면 Sequence Number는 송신 데이터에 순서를 부여, Acknowledgement Number는 수신 데이터에 순서를 부여하여 순차 전송에 신뢰성을 보장한다. 

 

Window는 흐름제어를 위해 사용하는 필드로, 송신자에게 자신의 가용 수신 버퍼의 크기를 알려준다.

 

Checksum은 오류를 검출하기 위해 사용되는 필드이다.

 

TCP는 송신자와 수신자가 연결된 이후에 데이터를 전송하기 때문에 연결지향적인 특징을 가지고 있다. 3-way handshake 과정을 거쳐 연결하며, 연결을 종료할 때는 4-way handshake 과정을 거쳐 종료한다. 연결/종료 과정에 대한 설명은 따로 포스팅할 예정이다. 

 

UDP(User Datagram Protocol)

  • 비 연결지향
  • 신뢰성 X
  • 오류검출

그림2

어찌보면 UDP는 TCP의 반대라고 볼 수 있다. 헤더 구조도 보면 TCP에 비해 필드도 단순하다. UDP는 TCP와 다르게 양방향 연결을 하지 않고 일방적으로 데이터를 보낸다. 그래서 TCP보다 속도가 빠르지만, 별도의 연결 과정이 없어 신뢰성이 떨어진다. 대표적인 사용처는 실시간 스트리밍에 사용된다.

+ Recent posts