0189

학교

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

일자 : 24-2 6주차 2차시

0. Transport layer : overview

[1] 전송 계층 서비스의 원리를 이해한다.

  1. Multiplexing & Demultiplexing

    • Multiplexing: 여러 응용 프로그램의 데이터를 한 네트워크 연결에서 보내기 위한 과정이다.

    • Demultiplexing: 도착한 데이터를 적절한 응용 프로그램으로 분리하는 과정이다.

  2. Reliable Data Transfer

    • 데이터가 손실되거나 중복되지 않고 정확하게 전달되도록 하는 메커니즘이다. TCP는 이를 보장하기 위해 확인 응답(ACK)과 재전송을 사용한다.

  3. Flow Control

    • 송신자가 수신자의 처리 능력을 넘지 않도록 전송 속도를 제어하는 과정이다. TCP수신자의 버퍼 상태를 고려하여 전송 속도를 조절한다.

  4. Congestion Control

    • 네트워크 혼잡을 방지하기 위해 송신자가 전송 속도를 조절하는 방법이다. TCP혼잡을 탐지하고, 네트워크 상태에 맞춰 전송 속도를 조정한다.

[2] 인터넷 전송 계층 프로토콜에 대해 배운다.

  1. UDP (User Datagram Protocol)

    • 연결을 설정하지 않고 데이터를 전송하는 비연결형 프로토콜이다. 빠르고 단순하지만, 신뢰성 보장이 없다.

  2. TCP (Transmission Control Protocol)

    • 연결을 설정하고 데이터의 신뢰성을 보장하는 연결형 프로토콜이다. 데이터 손실, 중복, 순서 오류 없이 데이터를 전송한다.

  3. TCP Congestion Control

    • TCP가 네트워크 혼잡을 감지하고, 혼잡을 줄이기 위해 윈도우 크기를 조정하는 방법이다. "Slow Start", "Congestion Avoidance", "Fast Retransmit", "Fast Recovery" 등의 알고리즘을 사용한다.


1. Transport-layer services

[1] Transport Service and Protocols (전송 서비스 및 프로토콜)

1) 논리적 통신 제공

  • 전송 계층은 네트워크 상의 두 호스트 간에 논리적 통신을 제공하여 서로 데이터를 주고받을 수 있게 한다.

2) 프로토콜 동작

  • 송신자(Sender): 애플리케이션 계층에서 전달받은 메시지를 작은 세그먼트로 분할하여 네트워크 계층으로 전달한다.

  • 수신자(Receiver): 네트워크 계층에서 받은 세그먼트를 원래 메시지로 재조립하여 애플리케이션 계층으로 전달한다.

3) 두 가지 전송 프로토콜

  • TCP (Transmission Control Protocol): 연결 기반의 신뢰성 있는 데이터 전송을 제공한다.

  • UDP (User Datagram Protocol): 연결을 설정하지 않고 빠르게 데이터를 전송하지만, 신뢰성은 보장하지 않는다.

[2] Transport vs Network Layer Services and Protocols (전송 vs 네트워크 계층 서비스 및 프로토콜)

1) Household Analogy

: Ann의 집에서 12명의 아이들이 Bill의 집에 있는 12명의 아이들에게 편지를 보내는 상황을 예시로 든 비유이다.

  • Hosts = Houses: 각 집(호스트)이 서로 통신한다.

  • Processes = Kids: 집 안에 있는 아이들(프로세스)이 서로 통신을 주고받는다.

  • App Messages = Letters in Envelopes: 아이들이 편지(애플리케이션 메시지)를 봉투에 넣어 전송하는 것과 같다.

  • Transport Protocol = Sibling Handling Demux: Ann과 Bill이 각각 자신의 집에 있는 형제자매들(프로세스)에게 도착한 편지를 나눠주는 것이 전송 계층에서의 demultiplexing 과정과 같다.

  • Network-Layer Protocol = Postal Service: 우편 서비스가 집(호스트) 간 편지를 전달하는 역할을 하는 것이 네트워크 계층과 같다.

2) Network Layer vs Transport Layer

  • Network Layer (네트워크 계층): 호스트 간 논리적 통신을 담당한다. 각 호스트 사이에서 데이터가 전송되는 과정을 관리한다.

  • Transport Layer (전송 계층): 프로세스 간 논리적 통신을 담당하며, 네트워크 계층을 기반으로 프로세스 간 데이터를 정확하게 주고받도록 한다.

    • 네트워크 계층 서비스에 의존하고(relies on), 네트워크 계층 서비스를 향상시킨다(enhances).

[3] Transport Layer Actions

1) Sender

  1. 애플리케이션 계층 메세지 수신: 송신자는 애플리케이션 계층으로부터 메세지를 전달 받는다.

  2. 세그먼트 헤더 필드 값 결정: 송신자는 세그먼트 헤더 필드 값을 결정하여 전송 정보를 설정한다.

  3. 세그먼트 생성: 송신자는 애플리케이션 메세지를 포함한 세그먼트를 생성한다.

  4. 세그먼트를 IP로 전달: 송신자는 생성된 세그먼트를 네트워크 계층(IP)으로 전달하여 전송을 시작한다.

2) Receiver

  1. IP로부터 세그먼트 수신:수신자는 네트워크 계층(IP)으로부터 세그먼트를 수신한다.

  2. 헤더 값 확인:수신자는 세그먼트의 헤더 값을 확인하여, 정보의 정확성을 검증한다.

  3. 애플리케이션 계층 메세지 추출:수신자는 세그먼트에서 애플리케이션 계층 메세지를 추출한다.

  4. 소켓을 통한 메세지를 애플리케이션으로 전달 (Demultiplexing):수신자는 추출한 메시지를 소켓을 통해 적절한 애플리케이션으로 전달하여 최종 처리를 수행한다.

[4] 두 가지 주요 인터넷 전송 프로토콜

1) TCP : Transmission Control Protocol

  • reliable, in-order delivery (신뢰성 있는 전송): 데이터를 신뢰성 있게, 순서대로 전달한다.

  • congestion control (혼잡 제어): 네트워크 혼잡을 감지하고 조정한다.

  • flow control (흐름 제어): 송신자가 수신자의 처리 능력에 맞춰 전송 속도를 조절한다.

  • connection-oriented (need setup) (연결 지향적): 데이터를 전송하기 전에 연결을 설정해야 한다.

2) UDP : User Datagram Protocol

  • unreliable, unordered delivery (신뢰성 없는 전송): 데이터가 손실되거나 순서가 뒤바뀔 수 있다.

  • connection-less (no need setup) (비연결성): 연결을 설정할 필요 없이 데이터를 바로 전송한다.

  • no-frills extension of “best-effort” IP (단순한 확장): 최선의 노력(best-effort)을 다하는 IP의 단순한 확장으로, 추가 기능이 거의 없다.

3) services not available (제공되지 않는 서비스)

  • delay guarantees (지연 보장): 네트워크에서의 지연 시간에 대한 보장은 없다.

  • bandwidth guarantees (대역폭 보장): 특정 대역폭을 보장하지 않는다.

[Summary]

  1. Transport Service and Protocols:
    전송 계층은 두 호스트 간 논리적 통신을 제공하며, 데이터를 세그먼트로 분할해 네트워크 계층으로 전달한다. 주로 TCP와 UDP라는 두 가지 전송 프로토콜이 사용된다.

  2. Transport vs Network Layer:
    네트워크 계층은 호스트 간 논리적 통신을 제공하고, 전송 계층은 이를 기반으로 프로세스 간 논리적 통신을 관리한다. 네트워크 계층은 데이터를 전송하는 반면, 전송 계층은 데이터를 적절한 프로세스로 연결해 준다.

  3. Transport Layer Actions:
    송신자는 애플리케이션 계층으로부터 받은 메시지를 세그먼트로 만들어 IP에 전달하며, 수신자는 IP에서 받은 세그먼트를 메시지로 재조립해 애플리케이션에 전달한다.

  4. TCP vs UDP:

    • TCP는 신뢰성 있는 순차적 전송과 혼잡 및 흐름 제어를 제공하며, 연결 지향적이다.

    • UDP는 신뢰성 없는 비연결성 전송 프로토콜로, 간단한 확장 기능을 제공하지만 추가적인 보장은 없다.

  5. Unavailable Services:
    전송 계층에서는 지연 및 대역폭 보장이 제공되지 않는다.


2. Multiplexing and Demultiplexing

[1] Multiplexing and Demultiplexing

1) Multiplexing at the Sender

  • 다중 소켓의 데이터 처리: 여러 소켓에서 들어오는 데이터를 처리한다.

  • 전송 헤더 추가: 나중에 수신 측에서 데이터 분배를 위한 정보를 포함한 헤더를 추가한다.

목적: 여러 프로세스의 데이터를 하나의 네트워크 연결을 통해 효율적으로 전송하기 위한 과정이다.

2) Demultiplexing at the Receiver

  • 헤더 정보를 사용: 수신된 세그먼트를 올바른 소켓으로 전달하는 과정이다. 헤더에 포함된 정보를 사용하여 세그먼트를 적절한 소켓(프로세스)에 전달한다.

목적: 수신된 데이터를 적절한 애플리케이션 프로세스로 분배하는 과정이다.

[2] How Demultiplexing Works

: 세그먼트의 구조

1) 호스트가 IP Datagram 수신

  • Source IP address, Destination IP address: 각 datagram은 송신자와 수신자의 IP 주소를 가지고 있다.

  • 전송 계층 세그먼트: 각 datagram은 하나의 전송 계층 세그먼트를 포함한다.

  • Source, Destination Port Number: 세그먼트에는 송신자 및 수신자의 포트 번호가 포함되어 있다.

2) Demultiplexing 동작

  • 호스트는 IP 주소포트 번호를 사용하여, 세그먼트를 적절한 소켓으로 전달한다.

[3-1] Connectionless Demultiplexing (무연결 Demultiplexing)

1) Recall (요약)

  1. 소켓 생성 시 포트 번호 지정
    : 소켓 생성 시, host-local port #를 지정해야 한다.

    Java
    DatagramSocket mySocket1 = new DatagramSocket(12543);
  2. UDP 소켓 전송 시 정보 지정
    : Datagram을 생성할 때 destination IP addressdestination port #를 지정해야 한다.

  3. 수신 측에서 수행할 작업
    : 수신 호스트는 UDP 세그먼트를 받을 때 destination port #를 확인하고, 해당 번호에 맞는 소켓으로 세그먼트를 전달한다.

  4. 동일한 소켓 연결
    : Source IP address 또는 source port number가 다른 IP/UDP Datagram이라 하더라도, destination port #가 동일하면 수신 호스트에서 동일한 소켓으로 전달된다.

  • 즉, 여러 출처에서 온 Datagram이라도 목적지 포트 번호가 같으면, 수신 호스트는 이를 구분하지 않고 하나의 소켓에서 처리하게 된다.

[3-2] Connectionless Demultiplexing (무연결 Demultiplexing) 예시

: UDP(User Datagram Protocol)를 사용하는 비연결형 통신의 예

: 여러 client가 오더라도 동일한 socket을 사용한다.

  • port 번호가 같더라도, ip address로 구분하기 때문에 문제 없다.

  • source port, dest port가 중요하다.

[4-1] Connection-oriented demultiplexing (연결 지향적 demultiplexing)

1) 4-튜플로 식별되는 TCP 소켓

TCP 소켓은 네 가지 값으로 고유하게 식별된다:

  1. source IP address

  2. source port number

  3. dest IP address

  4. dest port number

2) Demultiplexing

수신자는 이 네 가지 값(4-tuple)을 모두 사용하여, 수신된 세그먼트를 적절한 소켓으로 전달한다.

3) 여러 개의 동시 TCP 소켓 지원

서버는 여러 개의 TCP 소켓을 동시에 처리할 수 있다. 각 소켓은 고유한 4-tuple로 구분되며, 서로 다른 클라이언트와 연결된 각 소켓은 개별적으로 처리된다.

[4-2] Connection-oriented demultiplexing 예시

  • 3개의 세그먼트가 IP 주소가 B로 향하는 동일한 목적지로 전송된다.6683

  • 목적지 포트 번호가 80인 경우, 수신된 세그먼트는 서로 다른 소켓으로 demultiplexed되어 처리된다.

[5] Summary

  • Multiplexing and Demultiplexing: 이 과정은 세그먼트와 데이터그램 헤더 필드 값을 기반으로 이루어진다.

  • UDP: 수신 시 목적지 포트 번호만을 사용하여 demultiplexing을 수행한다.

  • TCP: 수신 시 소스 IP 주소, 목적지 IP 주소, 소스 포트 번호, 목적지 포트 번호의 4-tuple을 사용하여 demultiplexing을 수행한다.

  • 다양한 계층에서의 Multiplexing/Demultiplexing: 이 과정은 모든 계층에서 발생한다.

[summary]

1. Multiplexing and Demultiplexing

  • Multiplexing at the Sender: 여러 소켓에서 오는 데이터를 처리하고, 수신 측에서 데이터 분배를 위한 전송 헤더를 추가한다. 이는 여러 프로세스의 데이터를 하나의 네트워크 연결을 통해 효율적으로 전송하기 위한 과정이다.

  • Demultiplexing at the Receiver: 수신된 세그먼트를 올바른 소켓으로 전달하는 과정으로, 헤더 정보를 사용하여 적절한 애플리케이션 프로세스로 데이터를 분배한다.

2. How Demultiplexing Works

  • 호스트가 IP Datagram 수신: 각 datagram은 송신자와 수신자의 IP 주소, 전송 계층 세그먼트를 포함하고, 소스 및 목적지 포트 번호가 포함된다.

  • Demultiplexing 동작: 호스트는 IP 주소와 포트 번호를 사용하여 세그먼트를 적절한 소켓으로 전달한다.

3. Connectionless Demultiplexing

  • 소켓 생성 시 포트 번호 지정: UDP 소켓을 생성할 때 host-local port #를 지정해야 한다.

  • UDP 소켓 전송 시 정보 지정: Datagram을 생성할 때 destination IP address와 destination port #를 지정해야 한다.

  • 수신 측에서 수행할 작업: 수신 호스트는 UDP 세그먼트를 받을 때 destination port #를 확인하고, 해당 포트 번호에 맞는 소켓으로 세그먼트를 전달한다.

  • 동일한 소켓 연결: Source IP address 또는 source port number가 다른 IP/UDP Datagram이라 하더라도, destination port #가 동일하면 수신 호스트에서 동일한 소켓으로 전달된다.

4-1. Connection-oriented Demultiplexing

  • 4-튜플로 식별되는 TCP 소켓: TCP 소켓은 source IP address, source port number, destination IP address, destination port number의 네 가지 값으로 식별된다.

  • Demultiplexing: 수신자는 이 네 가지 값(4-tuple)을 모두 사용하여 수신된 세그먼트를 적절한 소켓으로 전달한다.여러 개의 동시 TCP 소켓 지원: 서버는 여러 개의 TCP 소켓을 동시에 처리할 수 있으며, 각 소켓은 고유한 4-tuple로 구분된다.

4-2. Connection-oriented Demultiplexing 예시

  • 세그먼트 처리: 3개의 세그먼트가 동일한 목적지 IP 주소로 전송되며, 목적지 포트 번호가 80인 경우 서로 다른 소켓으로 demultiplexed되어 처리된다.

5. Summary

  • Multiplexing and Demultiplexing: 이 과정은 세그먼트와 데이터그램 헤더 필드 값을 기반으로 이루어진다.

  • UDP: 수신 시 목적지 포트 번호만을 사용하여 demultiplexing을 수행한다.

  • TCP: 수신 시 소스 IP 주소, 목적지 IP 주소, 소스 포트 번호, 목적지 포트 번호의 4-tuple을 사용하여 demultiplexing을 수행한다.

  • 다양한 계층에서의 Multiplexing/Demultiplexing: 이 과정은 모든 계층에서 발생한다.

3. Connectionless transport : UDP

[1] UDP: User Datagram Protocol

1. 개요

  • "no frills", "bare bones": UDP는 최소한의 기능을 갖춘 인터넷 전송 프로토콜이다.

  • "best effort" 서비스: UDP는 전송 과정에서 세그먼트가 손실되거나, 애플리케이션에 정상적인 순서로 전달되지 않을 수 있는 서비스를 제공한다.

  • 비연결형 프로토콜:

    • UDP 발신자와 수신자 간에 핸드셰이킹 과정이 없다.

    • 각 UDP 세그먼트는 서로 독립적으로 처리된다.

2. UDP의 존재 이유

  • 연결 설정 필요 없음: 연결을 설정하지 않기 때문에, Round-Trip Time (RTT) 지연이 추가되지 않는다.

  • 단순함: 발신자와 수신자 간의 연결 상태를 유지할 필요가 없다.

  • 작은 헤더 크기: UDP는 헤더 크기가 작아 데이터 전송 시 효율적이다.

  • 혼잡 제어 없음: UDP는 필요한 만큼 빠르게 전송할 수 있으며, 혼잡한 상황에서도 작동할 수 있다.

3. UDP 사용 예시

  • 스트리밍 멀티미디어 앱: 손실을 허용하고 속도가 중요한 애플리케이션.

  • DNS (Domain Name System): 도메인 이름을 IP 주소로 변환하는 데 사용.

  • SNMP (Simple Network Management Protocol): 네트워크 관리 프로토콜.

  • HTTP/3: 최신 웹 전송 프로토콜로, UDP를 기반으로 한다.

4. 안정적인 전송 필요 시 (예: HTTP/3)

  • 애플리케이션 계층에서 안전성 추가: UDP의 신뢰성을 보완하기 위해 애플리케이션 계층에서 추가적인 안전성 기능을 제공해야 한다.

  • 애플리케이션 계층에서 혼잡 제어 추가: 필요에 따라 혼잡 제어 기능을 애플리케이션 계층에서 구현해야 한다.

[2] UDP: Transport Layer Actions

1. UDP 발신자 동작

  • 애플리케이션 계층 메시지 전달: 애플리케이션에서 생성된 메시지를 UDP로 전달한다.

  • UDP 세그먼트 헤더 필드 값 결정: 전송할 메시지에 필요한 헤더 정보를 설정한다.

  • UDP 세그먼트 생성: 헤더와 데이터를 포함한 UDP 세그먼트를 생성한다.

  • 세그먼트를 IP로 전달: 생성된 UDP 세그먼트를 IP 계층으로 전달하여 네트워크를 통해 전송하도록 한다.

2. UDP 수신자 동작

  • IP로부터 세그먼트 수신: 네트워크로부터 수신된 UDP 세그먼트를 받는다.

  • UDP 체크섬 헤더 값 확인: 데이터 전송 중 오류가 있는지 체크하기 위해 체크섬 값을 확인한다.

  • 애플리케이션 계층 메시지 추출: 세그먼트에서 애플리케이션 계층에서 사용할 메시지를 추출한다.

  • 소켓을 통해 애플리케이션까지 메시지 demultiplexing: 추출된 메시지를 적절한 소켓을 통해 해당 애플리케이션에 전달하여 처리할 수 있도록 한다.

[3] UDP segment header

: UDP 세그먼트 헤더는 총 32비트(4바이트)로 구성되어 있다.

  • 헤더는 네 개의 필드로 나뉘어 있으며, 각각 2바이트(16비트)씩 차지한다.

    • 소스 포트 번호 (Source port #)

    • 목적지 포트 번호 (Dest port #)

    • 길이 (Length): 'length' 필드는 UDP 세그먼트의 전체 길이를 나타내며, 이는 헤더와 데이터를 모두 포함한다.

    • 체크섬 (Checksum)

  • 헤더 아래에는 애플리케이션 데이터(페이로드)가 위치한다.: 이 부분이 애플리케이션 계층과 주고받는 실제 데이터라고 볼 수 있다.

1) UDP Segment Format

필드

크기 (바이트)

설명

Source Port

2

발신자의 포트 번호

Destination Port

2

수신자의 포트 번호

Length

2

UDP 헤더와 데이터의 전체 길이 (바이트 단위)

Checksum

2

데이터의 무결성을 검증하기 위한 체크섬

Data

가변

전송할 데이터 (헤더 크기를 제외한 나머지 부분)

2 total size

  • 헤더 크기: 8 바이트 (Source Port, Destination Port, Length, Checksum)

  • 데이터 크기: 가변 (전송할 데이터의 크기에 따라 다름)


목차
  1. 0. Transport layer : overview
  2. [1] 전송 계층 서비스의 원리를 이해한다.
  3. [2] 인터넷 전송 계층 프로토콜에 대해 배운다.
  4. 1. Transport-layer services
  5. [1] Transport Service and Protocols (전송 서비스 및 프로토콜)
  6. 1) 논리적 통신 제공
  7. 2) 프로토콜 동작
  8. 3) 두 가지 전송 프로토콜
  9. [2] Transport vs Network Layer Services and Protocols (전송 vs 네트워크 계층 서비스 및 프로토콜)
  10. 1) Household Analogy
  11. 2) Network Layer vs Transport Layer
  12. [3] Transport Layer Actions
  13. 1) Sender
  14. 2) Receiver
  15. [4] 두 가지 주요 인터넷 전송 프로토콜
  16. 1) TCP : Transmission Control Protocol
  17. 2) UDP : User Datagram Protocol
  18. 3) services not available (제공되지 않는 서비스)
  19. [Summary]
  20. 2. Multiplexing and Demultiplexing
  21. [1] Multiplexing and Demultiplexing
  22. 1) Multiplexing at the Sender
  23. 2) Demultiplexing at the Receiver
  24. [2] How Demultiplexing Works
  25. 1) 호스트가 IP Datagram 수신
  26. 2) Demultiplexing 동작
  27. [3-1] Connectionless Demultiplexing (무연결 Demultiplexing)
  28. 1) Recall (요약)
  29. [3-2] Connectionless Demultiplexing (무연결 Demultiplexing) 예시
  30. [4-1] Connection-oriented demultiplexing (연결 지향적 demultiplexing)
  31. 1) 4-튜플로 식별되는 TCP 소켓
  32. 2) Demultiplexing
  33. 3) 여러 개의 동시 TCP 소켓 지원
  34. [4-2] Connection-oriented demultiplexing 예시
  35. [5] Summary
  36. [summary]
  37. 3. Connectionless transport : UDP
  38. [1] UDP: User Datagram Protocol
  39. 1. 개요
  40. 2. UDP의 존재 이유
  41. 3. UDP 사용 예시
  42. 4. 안정적인 전송 필요 시 (예: HTTP/3)
  43. [2] UDP: Transport Layer Actions
  44. 1. UDP 발신자 동작
  45. 2. UDP 수신자 동작
  46. [3] UDP segment header
  47. 1) UDP Segment Format
  48. 2 total size