트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는 애플리케이션 프로세스 간의 논리적 통신(logical communication)을 제공한다
즉 어플리케이션 계층에서 내려온 메세지를 받아 네트워크를 통해 다른 장치에서 실행 중인 애플리케이션과 데이터를 주고받을 수 있도록 한다.
세그먼트(segment)으로 분할한다.수신 측에서 네트워크 계층은 데이터그램으로부터 트랜스포트 계층 세그먼트를 추출하고 트랜스포트 계층으로 세그먼트를 보낸다.
트랜스포트 계층은 수신 애플리케이션에서 세그먼트 내부의 데이터를 이용할 수 있도록 수신된 세그먼트를 처리한다.
TCP UDP 프로토콜을 사용한다.

트랜스포트 계층 프로토콜은 종단 시스템에 존재한다.
트랜스포트 계층 프로토콜은 각기 다른 호스트에서 동작하는
프로세스들 사이의 논리적 통신을 제공한다.
네트워크 계층 프로토콜은
호스트들 사이의 논리적 통신을 제공한다.
트랜스포트 계층은 종단 시스템에 위치하며,
네트워크 계층은 애플리케이션 프로세스에서 네트워크 계층 사이에서 메시지를 운반하는 역할을 한다.
LA와 NY에
앤의 가족과빌의 가족이 산다.
1. 각 가족은 12명으로 구성되고, 1명씩앤의 가족 구성원들은빌의 가족 구성원 모두에게 편지를 쓴다. (12통씩 -> total 144 통이 뉴욕에 간다)
2.앤은 가족들의 편지를 모아 LA우편부에게 전달한다.
3. LA 우편부는 NY 우편부에게 편지를 전달한다.
4.빌은 NY 우편부에게 편지를 받아 12명에게 편지를 나누어 준다.
여기서
집 위치(뉴욕, LA) - 호스트
가족구성원 - 프로세스
편지 - 앱 메세지
빌과 앤 - Transport 프로토콜 (프로세스-프로세스 연결)
(빌의 경우 Demultiplexing / 앤의 경우 Multiplexing)
뉴욕/LA 우편부 - Network 프로토콜 (호스트와 호스트 연결)
multiplexing
1. 출발지 호스트에서 소켓으로 부터 데이터를 모으고,
2. 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보로 캡슐화(encapsulation) 한다
3. 그 세그먼트들을 네트워크 계층으로 전달한다.

Demultiplexing
각 세그먼트의 트랜스포트 헤더 정보를 확인하고, 이를 바탕으로 메시지를 추출한 후, 해당 메시지를 올바른 소켓(애플리케이션)으로 보내는 전체 과정

소켓은 유일한 식별자인 포트번호를 갖는다
우선 UDP부터 알아 보자
UDP는 트랜스포트 계층 프로토콜이 할 수 있는 최소 기능으로 동작한다.
커넥션을 하지 않음으로서 오버헤드가 적고
헤더 사이즈가 작다
애플리케이션 프로세스로부터 메시지를 가져와서
다중화/역다중화 서비스에 필요한 출발지 포트 번호 필드와 목적지 포트 번호 필드를 첨부한다.(UDP 세그먼트를 추가하는 과정.)
네트워크 계층으로 넘겨준 후, 출발지 호스트의 IP 주소 필드, 목적지 호스트의 IP 주소 필드를 추가한다.
네트워크 계층은 트랜스포트 계층 세그먼트를 IP 데이터그램으로 캡슐화하고,
세그먼트를 수신 호스트에게 전달한다.
세그먼트가 수신 호스트에 도착한다면,
UDP는 세그먼트의 데이터를 해당하는 애플리케이션 프로세스로 전달하기 위해 목적지 포트 번호를 사용한다.



헤더
페이로드
체크섬의 목표
받은 세그먼트의 에러를 체크!
(송신자가 체크섬 필드 정의 후 보낸 것을 비교하여 에러 체크)


체크섬은 완벽한 에러체크를 제공할수 없다!
