IP addressing
인터넷에서 데이터를 전달하려면, 어디로 보낼 것인지를 명확히 지정할 수 있어야 한다. 이를 위해 네트워크 계층은 **각 장치에 고유한 주소(IP 주소)**를 부여하고, 이 주소를 기반으로 데이터그램을 전달하는 구조를 갖는다.
네트워크 계층의 핵심 프로토콜은 IP(Internet Protocol)다. 이 프로토콜은 데이터그램의 형식, 주소 체계, 전송 방식 등 여러 규약을 정의한다. 전송 계층에서 생성된 세그먼트는 IP 데이터그램으로 캡슐화되어 다음 홉까지 전달된다.
경로 선택(path selection)은 데이터그램이 목적지에 도달하기까지 어떤 경로를 거칠지를 결정하는 과정이다. 일반적으로 OSPF, BGP와 같은 라우팅 프로토콜에 의해 수행되고, 최근에는 SDN 컨트롤러를 통해 중앙에서 계산되기도 한다. 계산된 경로는 포워딩 테이블에 저장되어 라우터는 각 패킷을 어떤 출력 포트로 보낼지를 빠르게 결정할 수 있다.
또한 네트워크 계층에는 ICMP 프로토콜도 포함된다. ICMP는 오류 메시지를 전달하거나 라우터 간의 상태 정보를 교환하는 데 사용된다. 예를 들어 목적지에 도달할 수 없거나 TTL(Time To Live)이 초과된 경우 ICMP 메시지가 생성되며, ping과 traceroute 같은 도구가 이 기능을 활용한다.
📡 datagram format
기본 정보 필드
-
Version (ver)
IP의 버전을 나타내는 4비트 필드. IPv4의 경우 4, IPv6의 경우 6이 들어간다.
-
Header Length (head len)
IP 헤더의 길이를 32비트(4바이트) 단위로 나타낸다. 일반적으로 5가 설정되어 바이트가 기본 길이이다. 옵션 필드가 포함되면 더 길어질 수 있다.
-
Type of Service (ToS)
패킷의 처리 우선순위나 지연, 신뢰성 등을 지정할 수 있는 품질 관련 필드다.
- 상위 6비트는 DiffServ(Differentiated Services)로, 트래픽 우선순위를 설정하는 데 사용된다.
- 하위 2비트는 ECN(Explicit Congestion Notification)으로, 네트워크 혼잡 상태를 수신 측에 알리는 데 쓰인다.
-
Total Length
헤더와 데이터를 포함한 IP 데이터그램 전체의 길이를 나타낸다 (단위: 바이트). 최대 값은 65,535바이트이며, 실제로는 이더넷의 MTU 제한(보통 1500바이트) 때문에 이보다 작은 경우가 대부분이다.
분할(Fragmentation) 관련 필드
-
Identifier
패킷이 조각(fragment)으로 나뉘는 경우, 같은 원본 패킷에서 왔음을 구별하기 위한 식별자.
-
Flags
조각이 더 남아 있는지를 나타내는 플래그 비트들. 예: ‘더 있음(MF)’ 비트.
-
Fragment Offset
각 조각이 원본 데이터그램 내에서 어떤 위치에 해당하는지를 나타냄. 재조립 시 사용된다.
전송 제어 및 프로토콜 지정
-
Time To Live (TTL)
패킷이 네트워크를 무한히 떠돌지 않도록 하는 제한 수치. 라우터를 한 번 지날 때마다 1씩 감소하고, 0이 되면 폐기된다.
-
Protocol
IP 상위 계층에서 사용하는 프로토콜을 지정하는 필드. 예: TCP(6), UDP(17), ICMP(1) 등.
-
Header Checksum
헤더의 오류를 검출하기 위한 값으로, 패킷이 라우터를 지날 때마다 다시 계산된다.
주소 및 선택 필드
-
Source IP / Destination IP Address
발신자와 수신자의 IP 주소. 각각 32비트(IPv4 기준)로 구성된다.
-
Options (선택 필드)
잘 쓰이진 않지만, 경로 기록, 타임스탬프 등 특수 기능을 위해 사용될 수 있다. 이 필드가 포함되면 헤더 길이가 늘어난다.
기타
-
Payload
실제 전송하려는 상위 계층의 데이터. 주로 TCP/UDP 세그먼트가 위치한다.
-
Overhead
일반적인 IP 헤더(20바이트)와 TCP 헤더(20바이트)의 합으로 최소 40바이트 이상의 오버헤드가 발생한다.
-
MTU (Maximum Transmission Unit)
한 번에 전송할 수 있는 최대 데이터그램 크기. 이더넷에서는 보통 1500바이트이며, 이보다 큰 패킷은 분할(fragmentation)되어 전송된다.
📡 IP addressing
인터넷에서 IP 주소는 각 장치의 인터페이스에 할당되는 32비트 식별자다. 네트워크 상의 모든 장치가 고유하게 식별될 수 있다.
인터페이스란 호스트나 라우터가 네트워크에 연결되는 지점을 의미한다. 예를 들어 노트북의 유선 이더넷 포트나 무선 WiFi 어댑터가 각각 하나의 인터페이스다. 라우터는 여러 네트워크를 연결해야 하므로 여러 개의 인터페이스를 가지는 반면, 일반적인 호스트는 보통 하나 또는 두 개의 인터페이스만 가진다.
IP 주소는 사람이 읽기 쉬운 형식으로 점-10진법(dotted decimal notation)으로 표현된다. 예를 들어 223.1.1.1은 내부적으로는 32비트 이진수 11011111 00000001 00000001 00000001로 저장되고 각 8비트 블록(옥텟)을 10진수로 변환한 값이다.
호스트와 라우터는 유선 또는 무선 인터페이스를 통해 네트워크에 연결된다. 유선의 경우 일반적으로 이더넷 스위치, 무선의 경우 WiFi 액세스 포인트(기지국)를 통해 다른 장치와 통신한다. 지금 단계에서는 세부적인 연결 구조보다는, 각 인터페이스가 고유한 IP 주소를 가지며 이 주소를 통해 서로 통신한다는 점을 이해하는 것이 중요하다. 보다 복잡한 연결 방식은 이후에 다루게 된다.