학교
[컴퓨터 네트워크] Chapter 3. Transport Layer (Part1) - (1)
일자 : 24-2 6주차 2차시
0. Transport layer : overview
[1] 전송 계층 서비스의 원리를 이해한다.
Multiplexing & Demultiplexing
Multiplexing: 여러 응용 프로그램의 데이터를
한 네트워크 연결에서 보내기 위한 과정이다.Demultiplexing:
도착한 데이터를 적절한 응용 프로그램으로 분리하는 과정이다.
Reliable Data Transfer
데이터가 손실되거나 중복되지 않고 정확하게 전달되도록 하는 메커니즘이다.TCP는 이를 보장하기 위해확인 응답(ACK)과 재전송을 사용한다.
Flow Control
송신자가 수신자의 처리 능력을 넘지 않도록 전송 속도를 제어하는 과정이다.TCP는수신자의 버퍼 상태를 고려하여 전송 속도를 조절한다.
Congestion Control
네트워크 혼잡을 방지하기 위해송신자가 전송 속도를 조절하는 방법이다.TCP는혼잡을 탐지하고,네트워크 상태에 맞춰 전송 속도를 조정한다.
[2] 인터넷 전송 계층 프로토콜에 대해 배운다.
UDP (User Datagram Protocol)
연결을 설정하지 않고 데이터를 전송하는 비연결형 프로토콜이다. 빠르고 단순하지만, 신뢰성 보장이 없다.
TCP (Transmission Control Protocol)
연결을 설정하고 데이터의 신뢰성을 보장하는 연결형 프로토콜이다. 데이터 손실, 중복, 순서 오류 없이 데이터를 전송한다.
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
애플리케이션 계층 메세지 수신: 송신자는 애플리케이션 계층으로부터 메세지를 전달 받는다.
세그먼트 헤더 필드 값 결정: 송신자는 세그먼트 헤더 필드 값을 결정하여 전송 정보를 설정한다.
세그먼트 생성: 송신자는 애플리케이션 메세지를 포함한 세그먼트를 생성한다.
세그먼트를 IP로 전달: 송신자는 생성된 세그먼트를 네트워크 계층(IP)으로 전달하여 전송을 시작한다.
2) Receiver
IP로부터 세그먼트 수신:수신자는 네트워크 계층(IP)으로부터 세그먼트를 수신한다.
헤더 값 확인:수신자는 세그먼트의 헤더 값을 확인하여, 정보의 정확성을 검증한다.
애플리케이션 계층 메세지 추출:수신자는 세그먼트에서 애플리케이션 계층 메세지를 추출한다.
소켓을 통한 메세지를 애플리케이션으로 전달 (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]
Transport Service and Protocols:
전송 계층은두 호스트 간 논리적 통신을 제공하며,데이터를 세그먼트로 분할해 네트워크 계층으로 전달한다. 주로 TCP와 UDP라는 두 가지전송 프로토콜이 사용된다.Transport vs Network Layer:
네트워크 계층은호스트 간 논리적 통신을 제공하고, 전송 계층은 이를 기반으로프로세스 간 논리적 통신을 관리한다. 네트워크 계층은 데이터를 전송하는 반면, 전송 계층은 데이터를 적절한 프로세스로 연결해 준다.Transport Layer Actions:
송신자는 애플리케이션 계층으로부터 받은 메시지를 세그먼트로 만들어 IP에 전달하며, 수신자는 IP에서 받은 세그먼트를 메시지로 재조립해 애플리케이션에 전달한다.TCP vs UDP:
TCP는 신뢰성 있는 순차적 전송과 혼잡 및 흐름 제어를 제공하며, 연결 지향적이다.
UDP는 신뢰성 없는 비연결성 전송 프로토콜로, 간단한 확장 기능을 제공하지만 추가적인 보장은 없다.
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 (요약)
소켓 생성 시 포트 번호 지정
: 소켓 생성 시,host-local port #를 지정해야 한다.JavaDatagramSocket mySocket1 = new DatagramSocket(12543);UDP 소켓 전송 시 정보 지정
: Datagram을 생성할 때 destination IP address와 destination port #를 지정해야 한다.수신 측에서 수행할 작업
: 수신 호스트는 UDP 세그먼트를 받을 때 destination port #를 확인하고, 해당 번호에 맞는 소켓으로 세그먼트를 전달한다.동일한 소켓 연결
: 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 소켓은 네 가지 값으로 고유하게 식별된다:
source IP address
source port number
dest IP address
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로부터 세그먼트 수신: 네트워크로부터 수신된 U
DP 세그먼트를 받는다.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)
데이터 크기: 가변 (전송할 데이터의 크기에 따라 다름)
