[컴퓨터네트워크] 3. Transport Layer (1)
Chapter 3: Transport Layer
3-1. Transport-layer Services
Transport Services and Protocols
- Transport protocol provides logical communication between application ptocesses running on different hosts.
- Transport protocols runs in end systems(hosts) only.
- Receiver: segment를 application message로 합쳐서, application layer로 전달한다.
- Sender: application message를 segment로 분할 --> network layer로 전달한다. - Two transport protocols available to Internet applications: TCP, UDP
TCP vs. UDP
▶ TCP: Segmentation at Transport Layer
- Application layer --> Transport layer: 트랜스포트 계층에서 application message를 segment로 분할한다. (TCP: byte stram) (크기: MSS)
- Transport layer --> Network layer: 네트워크 계층의 데이터(datagram) (크기: MTU)
- Network layer --> Transport layer
- Transport layer --> Application layer
▶ UDP: IP Fragmentation at Network Layer
- Application layer --> Transport layer: application message
- Transport layer --> Network layer: segment (UDP: application message 인식 가능)
- Network layer --> Transport layer: 네트워크 계층의 데이터(datagram)로 분할한다. (크기: MTU)
- Transport layer --> Application layer
Transport vs. Network Layer Services and Protocols
- Transport layer: Logical communication between processes.
- Network layer: Logical communication between hosts.
- Application message = 편지
- 프로세스(sockets) = 아이들
- Transport-layer protocol = '앤'과 '빌'
- Network-layer protocol = 우체국 서비스
Transport Layer Actions
: Client --> Server로 메시지를 보내는 상황
▶ Sender:
- Application layer: socket을 이용하여, application message를 transport layer로 보낸다.
- Transport layer: segment header field value를 정하고, segment를 만든다.
- Transport layer: segment를 network layer로 보낸다. (multiplexing)
▶ Receiver:
- Network layer: IP에서 segment를 받는다.
- Transport layer: header value를 확인한다. 맞으면, application message를 추출한다.
- Transport layer: socket을 이용하여, 메시지를 application layer로 보낸다. (demultiplexing)
Two principal Internet Transport Protocols
▶ TCP, UDP 공통: Mux/Demux
▶ TCP (Transport Control Protocol): connection setup
--> reliable/in-order delivery, congestion control, flow control
3-2. Multiplexing and Demultiplexing
Multiplexing and Demultiplexing
▶ Multiplexing
: Transport 계층에서 segment를 Network 계층으로 보낸다.
Transport header를 붙인다. 나중에 목적지에서 demultiplexing에 이용된다.
▶ Demultiplexing
: Transport 계층에서 적절한 socket을 선택하여 segment를 Application 계층으로 보낸다.
적절한 socket을 선택하기 위해 transport header 정보를 이용한다.
How Demultiplexing Works
: Transport 계층 --> Application 계층 (socket)
- Transport 계층 host: receives IP datagrams
- 각각의 datagram에는 source IP address, destination IP address가 있다.
- 각각의 datagram에는 source port number, destination port number가 있다.
- 각각의 datagram은 하나의 transport 계층 segment를 전달한다. - Transport 계층에서는 IP address, port number를 이용해서 segment를 적절한 socket으로 전달한다.
1) Connectionless Demultiplexing (UDP)
▶ Sender
- Transport 계층에서는 application 계층의 socket을 만들 때, host-local port number를 배정한다.
- Transport 계층에서 application 계층으로 datagram을 보낼 때, destination IP address, destination port number를 붙인다. (segment format)
▶ Receiver
- Transport 계층에서는 network 계층으로부터 온 UDP header의 destination IP address, destination port number를 확인한다.
- Demultiplexing: Transport 계층에서는 UDP header 정보에 맞는 socket을 골라 segment를 보낸다.
--> 만약 destination IP address와 destination port number가 같다면, 같은 목적지로 향한다.
Connectionless Demultiplexing: Example
- 구분 방법: sorce port number, destination port number
--> 다른 source, 같은 destination: 순차적으로 처리한다.
2) Connection-oriented Demux (TCP)
▶ Each TCP socket identified by 4-tuple:
- source IP address
- source port number
- destination IP address
- destination port number
▷ Server host may support many simultaneous TCP sockets!
: TCP socket은 welcome socket과 connection socket이 있는데, connection socket 통해 동시에 많은 TCP socket을 제공할 수 있다. 그리고 각각의 socket은 서로 다른 client들과 연결된다.
Connection-oriented Demux: Example
- destination IP address, destination port number도 socket을 구분하는 수단에 추가된다. 따라서 같은 destination으로 가는 socket이 여러 개이고, 이 socket에 배정된 client가 여러 개일 수 있으며, 여러 socket을 동시에 처리할 수 있다.
- 또, port number는 host local하기 때문에, 서로 다른 host의 socket은 같은 port number를 가질 수 있다.
3-3. Connectionless transport UDP
UDP: User Datagram Protocol
- "best effort" service, UDP datagram(segment) may be:
- lost
- delivered out-of-order to application-layer. - connectionless:
- no handshaking between UDP sender and receiver.
- each UDP datagram handled independently of others. - UDP use:
- straming multimedia applications (loss tolerant, rate sensitive)
- DNS
- SNMP
- HTTP/3 - Reliable transfer over UDP: HTTP/3
: Add needed reliability at application layer.
UDP Datagram Format
Transport 계층 프로토콜인 UDP에서는 Mux/Demux만 한다.
- UDP header
- source port #, destination port #
- length, checksum - Application data (payload): data to/from application layer
UDP: Transport Layer Actions
UDP checksum
- Goal: error 유무만 판단!