학교
[컴퓨터 네트워크] Chapter 4. Networks Layer Data Plane (Part 2) - (1)
일자 : 24-2 12주차 2차시 (2)
3. IP: the Internet Protocol
datagram format
addressing
network address translation
IPv6
[1] Network Layer: Internet
: 네트워크 레이어에서의 호스트와 라우터의 기능

: 이 구조는 네트워크에서 데이터가 어떻게 라우팅되고 처리되는지를 보여주며, 특히 네트워크 레이어에서 일어나는 주요 기능들을 상세히 설명하고 있다.
1) 주요 구성 요소
Path-selection algorithms (경로 선택 알고리즘):
routing protocols (OSPF, BGP)를 통해 구현
SDN controller를 통해 구현
이 알고리즘은 forwarding table로 정보를 전달
Forwarding table (포워딩 테이블):
경로 선택 알고리즘으로부터 정보를 받아 패킷 전달을 위한 테이블 유지
IP protocol (IP 프로토콜):
datagram format (데이터그램 형식)
addressing (주소 지정)
packet handling conventions (패킷 처리 규약)
ICMP protocol (ICMP 프로토콜):
error reporting (오류 보고)
router "signaling" (라우터 시그널링)
2) 계층 구조:
상단: Transport layer (TCP, UDP)
중간: Network layer (위에서 설명한 구성요소들)
하단: Link layer
최하단: Physical layer
[2] IP Datagram format

: Maximum length : 64K bytes (Typically 1500 bytes or less)
1) ver
: IP 프로토콜 버전 번호. IPv4의 경우 4, IPv6의 경우 6이 설정된다.
2) head len
: IP 헤더의 길이 (바이트 단위). IP 헤더의 크기를 지정하며, 최소 20바이트이다.
3) type of service
: 서비스 유형을 정의한다.
diffserv (0:5): 서비스 품질을 정의하는 필드.
ECN (6:7): 혼잡 제어 관련 정보.
4) length
: 전체 데이터그램 길이 (바이트 단위). 헤더와 페이로드를 모두 포함한 전체 길이를 나타낸다.
5) 16-bit identifier
: 데이터그램 식별자. 데이터그램을 분할한 경우 재조합할 때 사용된다.
6) flags
: 데이터그램이 분할되었는지 여부와 관련된 플래그. 재조합을 위한 정보이다.
7) fragment offset
: 데이터그램이 분할된 경우, 각 조각의 위치를 나타내는 오프셋이다.
8) time to live (TTL)
: 데이터그램이 네트워크를 통해 얼마나 많은 라우터를 통과할 수 있는지를 나타낸다. 라우터를 통과할 때마다 1씩 감소한다.
9) upper layer
: 상위 프로토콜을 나타낸다. 예를 들어 TCP나 UDP와 같은 프로토콜이다.
10) header checksum
: IP 헤더의 무결성을 확인하기 위한 체크섬 값이다.
11) source IP address
: 출발지 IP 주소 (32비트).
12) destination IP address
: 목적지 IP 주소 (32비트).
13) options (if any)
: 선택적 필드로, 예를 들어 타임스탬프나 경로 기록 등의 정보가 포함될 수 있다.
14) payload data (variable length)
: 실제 데이터가 포함되는 부분입니다. 길이는 가변적이다.
[3-1] IP 분할/재조합

분할 (Fragmentation)
입력: 하나의 큰 데이터그램
출력: 3개의 더 작은 데이터그램
재조합 (Reassembly)
1) 특징
네트워크 링크에는
MTU(최대 전송 단위)가 있다. - 가장 큰 링크 수준 프레임링크 유형에 따라 MTU가 다를 수 있다.
큰 IP 데이터그램은 네트워크 내에서"분할"(fragmented)된다.하나의 데이터그램이 여러 개의 데이터그램으로 나뉜다."재조합"은 오직
목적지에서만 이루어진다.IP 헤더 비트는관련된 조각들을 식별하고, 순서를 지정하는 데 사용된다.
[3-2] IP 분할/재조합
1) IP 패킷의 분할(fragmentation)과 재조립(reassembly) 과정을 보여주는 예시

1) 예시
원본 데이터그램:
크기가 4000 바이트인 하나의 큰 데이터그램
MTU(Maximum Transmission Unit)가 1500 바이트로 제한됨원본 데이터그램의
fragflag = 0, offset = 0
분할 과정:
MTU 제한 때문에 하나의 큰 데이터그램이 여러 개의 작은 데이터그램으로 분할됨
모든 조각은
동일한 ID(=x)를 가짐데이터 필드에는1480 바이트씩들어감 (헤더 공간 제외)
분할된 조각들:
첫 번째 조각: length=1500, fragflag=1(더 조각이 있음을 표시), offset=0
두 번째 조각: length=1500, fragflag=1, offset=185(1480/8)
마지막 조각: length=1040, fragflag=0(마지막 조각임을 표시), offset=370
주요 포인트:
offset은 8바이트 단위로 계산됨 (1480/8 = 185)
fragflag가 1이면 뒤에 더 조각이 있다는 의미
fragflag가 0이면 마지막 조각이라는 의미
모든 조각은 동일한 ID를 가져 재조립 시 같은 데이터그램의 조각임을 알 수 있음
이러한 분할과 재조립 과정은 네트워크의 서로 다른 MTU를 가진 구간을 통과할 때 필요한 중요한 메커니즘입니다.
2) 예시 설명
(1) 왜 length가 1500으로 나누어졌는가?
MTU(Maximum Transmission Unit) 때문에 데이터그램이 분할된다. MTU가 1500 바이트로 제한되면, 데이터그램은 1500 바이트 이하로 나누어진다. IP 헤더는 20 바이트이므로 데이터 부분은 1500 - 20 = 1480 바이트가 된다. 따라서 각 조각은 1480 바이트의 데이터와 20 바이트의 헤더로 1500 바이트가 된다.
(2) offset은 어떻게 지정되는가?
offset은 각 조각이 원본 데이터그램에서 어디에 해당하는지를 나타내며, 8바이트 단위로 계산된다.
예시:
첫 번째 조각의
offset은0이다.두 번째 조각의
offset은185이다 (1480 바이트 ÷ 8).세 번째 조각의
offset은370이다 (185 × 2).
offset 값은 8바이트 단위로 실제 바이트 위치를 계산하려면 이를 8로 곱하면 된다. 예를 들어, offset = 185이면 실제 위치는 185 * 8 = 1480 바이트이다.
(3) 세 번째 조각의 length가 1040인 이유
: 는앞선 두 조각에서 이미 1480 바이트씩 데이터를 처리했기 때문이다. 원본 데이터그램의 전체 크기가 4000 바이트이고, 앞의 두 조각에서 1480 바이트씩 처리되었으므로, 마지막 조각에서는 남은 데이터를 모두 처리해야 한다.
구체적인 계산:
원본 데이터그램 크기: 4000 바이트
헤더 크기: 20 바이트 (각 조각마다)
데이터 크기:
첫 번째 조각: 1480 바이트 (헤더 제외)
두 번째 조각: 1480 바이트 (헤더 제외)
세 번째 조각에서 남은 데이터는 4000 - (1480 + 1480) = 1040 바이트
따라서, 마지막 세 번째 조각의 데이터 필드는 1040 바이트로, 이 조각의 전체 크기는 1040 + 20 = 1060 바이트가 된다.
3) 결론:
length는 MTU에 의해 제한되고, 데이터 필드는 MTU에서 헤더 크기를 뺀 값으로 설정된다.offset은 8바이트 단위로 계산되며, 각 조각의 위치를 나타낸다.
