3.1 Introduction and Transport-Layer Services
Transport Layer Protocol은 서로 다른 호스트에서 동작하고 있는 애플리케이션 프로세스에 논리적 통신(logical communication)을 제공한다.
Logical communication 을 통해 애플리케이션의 관점에서 프로세스가 실행 중인 두 호스트가 직접 연결되어 있는 것처럼 느끼게 한다. 물론 현실적으로는 서로 정반대에 서서 셀 수 없이 많은 라우터와 다양한 링크들을 통해 연결되어 있는 것이지만 말이다. 애플리케이션 프로세스는 Transport layer가 제공하는 Logical communication을 이용하며, 서로에게 message를 보낼 수 있다. 그리고 이를 통해 애플리케이션 프로세스는 실제로 메시지를 전달해주는 물리적인 인프라에 대한 걱정으로부터 자유롭다.
Transport Layer Protocols은 종단 시스템에는 구현되어 있으나, 네트워크 라우터에는 그렇지 않다. Transport Layer는 전송 측 애플리케이션 프로세스로부터 온 Application Layer message를 transport-layer segments 라고 알려진 transport-layer packet으로 변환한다.
3.1.1 Relationship Between Transport and Network Layers
Transport-layer protocol은 서로 다른 호스트에서 실행 중인 processes들 간의 logical communication을 제공하는 반면, network-layer protocol은 hosts간의 logical communication을 제공한다.
transport-layer가 제공할 수 있는 서비스는 하위의 network-layer protocol의 서비스 모델에 의해 제약을 받는다. 만약, network-layer protocol이 host 사이에서 전송되는 transport-layer segments에 대한 지연 보장이나 대역폭 보장을 해줄 수 없다면, transport-layer protocol은 process 사이의 메시지에 대한 지연 보장이나 대역폭 보장을 제공할 수 없다.
3.1.2 Overview of the Transport Layer in the Internet
인터넷 즉, TCP/IP Network는 application layer에게 두 가지의 transport-layer protocol을 제공함을 알고 있다. 첫 번째는 애플리케이션에 비신뢰적이고, 비연결형인 서비스를 제공하는 UDP (User Datagram Protocol)이다. 두 번째는 신뢰적이고 연결지향적 서비스를 제공하는 TCP (Transmission Control Protocol)이다.
앞으로는 인터넷에서 transport-layer packet을 segments라고 하자. 그러나 RFC (인터넷 문서)에서는 TCP에 대한 transport-layer packet을 segment라고 하기에, UDP에 대한 패킷을 datagram이라고 표현한다는 것을 기억하자.
Internet의 network-layer protocol은 Internet Protocol로 줄여서 'IP'라고 부른다. IP 서비스 모델은 hosts간의 논리적인 통신을 제공하는 best-effort delivery service 이다. 이것은 IP가 호스트 간의 segment를 전달하기 위해서 최대한 노력은 하지만, 어떠한 보장도 하지 않는다는 것을 의미한다. IP는 세그먼트의 전달을 보장하지 않고, 그 순서가 지켜진다는 것을 보장할 수 없으며, IP는 세그먼트 내부 데이터의 무결성 (integrity)을 보장하지 않는다.
UDP와 TCP 서비스 모델을 살펴보면, TCP의 가장 기본적인 기능은 end system 사이의 IP 전달 서비스를 end-system에서 동작하는 두 프로세스 간의 전달 서비스로 확장하는 것이다. 즉, 'host-to-host delivery'를 'process-to-process delivery'로 확장하는 것을 "transport multiplexing"과 "demultiplexing"이라고 부른다.
UDP와 TCP는 헤더에 오류 검출 필드를 포함함으로써 무결성에 대한 검사를 제공한다. UDP는 앞서 이야기한 '두 프로세스 간의 전달 서비스 제공'과 '오류 검출' 두 가지 서비스만을 제공한다. UDP는 IP와 같이 비신뢰적인 서비스다.
반면, TCP는 애플리케이션에 추가적인 서비스를 제공한다. reliable data transfer, flow control, sequence numbers, acknowledgments, timers 등을 사용함으로써 송신하는 프로세스로부터 수신하는 프로세스에게 데이터가 순서대로 정확히 전달되도록 한다. 또, TCP는 congestion control 을 통해 한 TCP 연결이 과도한 야의 트래픽으로 통신하는 모든 호스트들 사이의 스위치와 링크가 폭주하는 것을 방지한다.