네트워크 라우터는 오직 데이터그램의 네트워크 계층 필드에 대해서만 동작한다. 즉, 데이터그램 안에 캡슐화된 트랜스포트 계층 세그먼트의 필드를 검사하지 않는다.
수신측 네트워크 계층은 데이터그램으로부터 트랜스포트 세그먼트를 추출하고, 트랜스포트 계층으로 세그먼트를 보낸다.
트랜스포트 계층은 수신 애플리케이션에서 세그먼트 내부의 데이터를 이용할 수 있도록 수신된 세그먼트를 처리한다.
네트워크 애플리케이션은 하나 이상의 트랜스포트 계층 프로토콜을 사용할 수 있다.
인터넷은 TCP와 UDP 프로토콜을 갖고 있고, 이들은 서비스를 요청하는 애플리케이션에게 각기 다른 서비스들을 제공한다.
트랜스포트 계층과 네트워크 계층의 관계
트랜스포트 계층이 제공하는 서비스는 하위 네트워크 계층 프로토콜의 서비스 모델에 의해 제약받는다.
네트워크 프로토콜이 호스트 간에 전송되는 트랜스포트 계층 세그먼트에 대한 지연 보장이나 대역폭 보장을 제공할 수 없다면, 트랜스포트 프로토콜은 프로세스 간에 전송하는 메시지에 대한 지연 보장이나 대역폭 보장을 제공할 수 없다.
하위 네트워크 프로토콜이 상응하는 서비스를 제공하지 못할 때도, 특정 서비스는 트랜스포트 프로토콜에 의해 제공될 수 있다.
네트워크 프로토콜이 비신뢰적일 때, 트랜스포트 계층이 애플리케이션에게 신뢰적인 데이터 전송 서비스를 제공할 수도 있다.
트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는 프로세스들 간의 논리적 통신을 제공하지만, 네트워크 계층 프로토콜은 호스트들 간의 논리적 통신을 제공한다.
우편서비스: 동부와 서부로 떨어져있는 두 집 간의 논리적 통신을 제공 (우편서비스는 우편물을 집→집으로만 이동시킴) 앤과 빌: 사촌형제들 간의 논리적 통신을 제공 (앤과 빌은 우편물을 받아서 집 안의 형제자매에게 나눠줌) 애플리케이션 메시지 = 봉투 안의 편지 프로세스 = 사촌형제들 호스트(종단시스템) = 집 트랜스포트 계층 프로토콜 = 앤과 빌 네트워크 계층 프로토콜 = 우편서비스(+집배원)
인터넷 트랜스포트 계층 개요
인터넷은 애플리케이션 계층에게 2가지 구별되는 트랜스포트 계층 프로토콜을 제공한다.
비신뢰적이고 비연결형인 서비스를 요청한 애플리케이션에게 제공하는 UDP
신뢰적이고 연결지향형 서비스를 요청한 애플리케이션에게 제공하는 TCP
애플리케이션 개발자는 소켓을 생성할 때 TCP, UDP 중에 하나를 선택해야 한다.
인터넷 네트워크 계층 프로토콜은 IP(인터넷 프로토콜)이라는 이름을 갖는다.
IP 서비스 모델은 호스트들 간의 논리적 통신을 제공하는 최선형(best-effort) 전달 서비스다.
IP는 통신하는 호스트들 간에 세그먼트를 전달하기 위해 최대한 노력하지만 어떤 보장도 하지 않는다는 것을 의미한다.
세그먼트의 전달 보장 x, 순서 보장 x, 내부 데이터의 무결성 보장 x → IP는 비신뢰적인 서비스
모든 호스트는 적어도 하나의 IP 주소를 갖고 있다.
UDP와 TCP의 가장 기본 기능은 종단 시스템 간의 IP 전달 서비스를 / 종단 시스템에서 동작하는 두 프로세스간의 전달 서비스로 확장하는 것이다.
호스트 대 호스트 전달 → 프로세스 대 프로세스 전달로 확장하는 것을 트랜스포트 계층 다중화(transport layer multiplexing)와 역다중화(demultiplexing)라고 부른다.
UDP와 TCP는 헤더에 오류검출 필드를 포함함으로써 무결성 검사를 제공한다.
프로세스 대 프로세스 데이터 전달과 오류검출이라는 트랜스포트 계층 서비스는 UDP가 제공하는 유일한 2가지 서비스다.
UDP는 IP와 마찬가지로 하나의 프로세스에 의해 전송된 데이터가 손상되지 않고 목적지 프로세스에 도착한다는 것을 보장하지 않는 비신뢰적인 서비스다.
TCP는 흐름 제어, 순서 번호, 확인 응답, 타이머를 사용함으로써 송신하는 프로세스로가 수신하는 프로세스에게 순서대로 데이터가 확실하게 전달되도록 하는 신뢰적인 데이터 전송을 제공한다.
이처럼 TCP는 종단 시스템 간의 IP의 비신뢰적인 서비스를 프로세스 사이의 신뢰적인 데이터 전송 서비스로 만들어준다.
또한 TCP 연결이 과도한 양의 트래픽으로 모든 통신하는 호스트들 간의 스위치와 링크를 혼잡하게 하는 것을 방지하는 TCP 혼잡제어를 제공한다.
TCP는 혼잡한 네트워크 링크에서 각 TCP 연결이 링크의 대역폭을 공평하게 공유하게 통과하도록 해준다. 이건 송신측 TCP가 네트워크에 보낼 수 있는 트래픽을 조절함으로써 수행된다. 반면 UDP의 트래픽은 조절되지 않는다. (UDP 사용 애플리케이션은 마음대로 속도를 전송함)