전송계층(Transport Layer)
전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로 신뢰성, 흐름제어 등의 기능을 수행할 수 있으며 데이터의 전달을 담당한다. 전송계층에서 데이터를 전달하기 위해 사용되는 프로토콜들이 있는데, 이 프로토콜들이 TCP와 UDP이다.
TCP(Transmission Control Protocol)
네트워크 계층 중 전송계층에서 동작하는 프로토콜이며 장치들간의 연결을 설정하여 신뢰성을 보장하는 연결형 서비스이다. TCP는 네트워크에 연결된 컴퓨터들 사이에 실행되는 프로그램간의 통신과정에서 패킷을 안정적으로 순서대로 에러없이 교환하는 방식을 제공한다.
TCP의 특징
- 연결지향적
- 3-way handshake로 연결설정 및 4-way handshake로 연결해제
- 가상회선 패킷 교환 방식
- 흐름제어
- 송신자와 수신자의 데이터 처리 속도 차이를 해결하기 위한 기법이다. 송신자의 데이터 전송 속도를 조절해 수신자의 버퍼 오버플로우를 방지한다. 이때 흐름제어 기법 중 하나인 슬라이딩 윈도우를 사용한다.
- 혼잡제어
- 수신측에 따라 송신측의 데이터 전송량을 조절하여 네트워크내의 패킷수가 과도하게 증가해 네트워크를 혼잡하게 만드는것을 방지하는 기법이다.
- 높은 신뢰성 보장
- Triple-Duplicate-ACK-based retransmission: 송신측에서 세그먼트를 전송했는데, 수신된 세그먼트의 순서가 틀렸을 경우 수신측에서 다시 보내달라는 의미의 ACK를 보낸다. 송신 측에서 동일한 ACK를 3개 이상 받았을 경우 해당 패킷은 손실됐다고 판단해 재전송을 요청한다.
- Timeout-based retransmission: 송신자는 일정시간동안 수신자로부터 ACK를 받지 못하면 손실됐다고 판단해 재전송을 요청한다.
- UDP에 비해 느린 속도
- 연결 및 해제과정 등 신뢰성 보장을 위한 과정들 때문에 UDP에 비해 속도가 느리다.
- 전이중(Full-Deuplex), 점대점(point to point) 방식
- 전이중: 데이터 전송의 흐름 방향이 항상 양 방향으로 동시에 전송할 수 있다.
- 점대점: 각 연결이 2개의 종단점을 가지고 있다.
TCP 주요 제어비트(Flag Bit)
UDP
UDP는 네트워크 계층 중 전송 계층에서 동작하는 프로토콜로 장치간에 연결을 설정하지 않는 비연결형 프로토콜이다. 연결을 하지 않기 때문에 정해진 경로가 없고 각각의 패킷들은 다른 경로로 독립적으로 전송된다. 또한, 데이터의 순서를 보장하지 않고 수신 여부를 확인하지 않는 특징을 가지고 있다.
UDP의 특징
- 비연결지향적
- 데이터그램 패킷 교환 방식 사용
- 신뢰성 없는 데이터 전송
- 흐름제어, 혼잡제어를 제공하지 않아 신뢰성이 낮다.
- 단순하며 빠른 전송속도
- 신뢰성을 보장하기 위한 과정들이 없기때문에 TCP보다 데이터 전송속도가 빠르다.
- 1:1과 1:N 그리고 N:N 통신까지 모두 가능
UDP 사용이유
TCP는 네트워크의 안정적인 통신을 위한 메커니즘이 이미 정의되어있다. 이런 매커니즘덕에 안정적인 데이터 전송이 가능하다. 하지만, 실시간 방송이나 온라인 게임 등 실시간성의 보장이 중요한 분야에서는 단점으로 작용한다. 이런 경우 데이터 전송의 신속성이 정확성보다 중요하기 때문이다. 따라서, TCP의 대안으로 UDP가 사용되고 있다. 또한, 매커니즘이 정해져있어 기능을 수정할 수 없는 TCP 기반을 더 최적화 하고 싶을 경우 TCP는 그대로두고 UDP를 이용해 애플리케이션 레벨에서 기능을 추가하여 최적화가 가능하다.
TCP와 UDP 비교
글이 많은 도움이 되었습니다, 감사합니다.