Computer Network/컴퓨터네트워크

[컴퓨터네트워크] 3. Transport Layer (1)

leziwn.cs 2023. 10. 12. 19:47
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

  1. Application layer --> Transport layer: 트랜스포트 계층에서 application message를 segment로 분할한다. (TCP: byte stram) (크기: MSS)
  2. Transport layer --> Network layer: 네트워크 계층의 데이터(datagram) (크기: MTU)
  3. Network layer --> Transport layer
  4. Transport layer --> Application layer

 

▶ UDP: IP Fragmentation at Network Layer

  1. Application layer --> Transport layer: application message
  2. Transport layer --> Network layer: segment (UDP: application message 인식 가능)
  3. Network layer --> Transport layer: 네트워크 계층의 데이터(datagram)로 분할한다. (크기: MTU)
  4. 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

Transport Layer Actions

: Client --> Server로 메시지를 보내는 상황

▶ Sender:

  1. Application layer: socket을 이용하여, application message를 transport layer로 보낸다.
  2. Transport layer: segment header field value를 정하고, segment를 만든다.
  3. Transport layer: segment를 network layer로 보낸다. (multiplexing)

▶ Receiver:

  1. Network layer: IP에서 segment를 받는다.
  2. Transport layer: header value를 확인한다. 맞으면, application message를 추출한다.
  3. 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 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으로 전달한다.

TCP/UDP segment format

 

 

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

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

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 Datagram Format: Application 계층-Transport 계층

 

UDP: Transport Layer Actions

UDP: Transport Layer Actions

 

UDP checksum
  • Goal: error 유무만 판단!