본문 바로가기
CS 지식/컴퓨터 네트워크

[네트워크] IP 데이터그램 형식과 주소 할당 방식(서브넷, DHCP, CDIR)

by 코딩하는 동현 2025. 5. 30.

Network Layer: Internet

Network Layer는 인터넷에서 host와 router의 핵심 기능을 담당한다.

  • 주요 기능에는 Path-selection algorithms(경로 선택 알고리즘), IP protocol(IP 프로토콜), ICMP protocol(ICMP 프로토콜)이 있다.

Path-selection algorithms

  • routing protocols(OSPF, BGP), SDN controller 등에 의해 구현된다.
  • forwarding table(포워딩 테이블)을 사용해 데이터가 목적지까지 가는 경로를 결정한다.

IP protocol

  • datagram format(데이터그램 포맷), addressing(주소 지정), packet handling conventions(패킷 처리 규칙)을 정의한다.

ICMP protocol

  • error reporting(오류 보고), router signaling(라우터 신호 전달) 기능을 담당한다.

IP Datagram format

IP Datagram은 인터넷에서 데이터가 이동할 때 사용하는 기본 단위이다.

  • 32비트 단위로 구성되며, 여러 필드로 나뉜다.

주요 필드 설명

  • version: IP protocol version number(프로토콜 버전)
  • header length: header length(헤더 길이, 바이트 단위)
  • type of service: 서비스 유형, diffserv/ECN 등
  • length: total datagram length(전체 데이터그램 길이, 바이트 단위)
  • 16-bit identifier, flags, fragment offset: fragmentation/reassembly(분할/재조립) 관련
  • TTL(time to live): 각 라우터에서 감소, 패킷 생존 시간
  • upper layer: upper layer protocol(TCP, UDP 등)
  • header checksum: 헤더 오류 검출
  • source IP address: 32비트 소스 IP 주소
  • destination IP address: 32비트 목적지 IP 주소
  • options: 옵션(예: 타임스탬프, 경로 기록 등)
  • payload data: 실제 데이터(가변 길이, 주로 TCP/UDP segment)

오버헤드

  • TCP 20 bytes + IP 20 bytes = 40 bytes + application layer overhead

IP addressing: introduction

IP address

  • 32-bit identifier(식별자)로, 각 host 또는 router의 interface(인터페이스)에 할당된다.

interface

  • host/router와 physical link(물리적 링크) 사이의 연결을 의미한다.
  • router는 보통 여러 개의 인터페이스를 가진다.
  • host는 보통 1~2개 인터페이스(예: wired Ethernet, wireless 802.11)를 가진다.

dotted-decimal IP address notation

  • 예: 223.1.1.1
  • 32비트 이진수로 표현되며, 8비트씩 끊어서 10진수로 표기한다.
  • 예시: 223.1.1.1 = 11011111 00000001 00000001 00000001

Subnet(서브넷)

  • 서브넷(subnet)이란, 서로 직접(라우터를 거치지 않고) 물리적으로 도달할 수 있는 device interface들의 집합이다.

IP 주소의 구조

  • subnet part(서브넷 부분): 같은 서브넷에 속한 device들은 IP 주소의 high-order bits(상위 비트)가 동일하다.
  • host part(호스트 부분): 나머지 low-order bits(하위 비트)는 개별 device를 식별한다.

Subnet 정의 방법

서브넷을 정의하는 절차는 다음과 같다.

  • 각 interface를 그 host나 router에서 분리(detach)하여, isolated network(고립된 네트워크) "island"를 만든다.
  • 이렇게 분리된 각 네트워크를 subnet(서브넷)이라고 부른다.

서브넷 마스크(subnet mask)

  • 예시: /24 (high-order 24 bits가 subnet part)
  • 예시 주소: subnet 223.1.1.0/24, subnet 223.1.2.0/24, subnet 223.1.3.0/24

Subnet 예시와 주소

네트워크 내 서브넷의 위치와 /24 서브넷 주소는 다음과 같다.

Subnet Address 포함하는 IP 주소 범위 예시
223.1.1.0/24 223.1.1.1, 223.1.1.2 등
223.1.2.0/24 223.1.2.1, 223.1.2.9 등
223.1.3.0/24 223.1.3.1, 223.1.3.2 등
223.1.7.0/24 223.1.7.0, 223.1.7.1 등
223.1.8.0/24 223.1.8.1, 223.1.8.2 등
223.1.9.0/24 223.1.9.1, 223.1.9.2 등

각 서브넷은 해당 범위 내의 IP 주소를 가진 device들이 라우터를 거치지 않고 직접 통신할 수 있는 네트워크 구간을 의미한다.

  • subnet(서브넷)은 라우터 없이 직접 연결된 device interface들의 집합이다.
  • IP 주소는 subnet part(상위 비트)와 host part(하위 비트)로 구성된다.
  • /24와 같은 subnet mask는 상위 24비트가 서브넷을 식별함을 의미한다.

IP Addressing: CIDR

  • CIDR(Classless InterDomain Routing)는 IP 주소의 subnet part(서브넷 부분) 길이를 자유롭게 지정할 수 있는 방식이다.
  • 주소 표기 형식: a.b.c.d/x 여기서 x는 subnet part의 비트 수를 의미한다.
  • 예시: 200.23.16.0/23 이 경우, 앞의 23비트가 subnet part이고, 나머지 비트가 host part이다.
  • 이진수로 보면, subnet part와 host part가 명확히 구분된다.

IP 주소 할당 방식

IP 주소를 얻는 방법에는 두 가지 주요 질문이 있다.

  1. host(호스트)가 자신의 네트워크 내에서 어떻게 IP 주소(host part)를 할당받는가?
  2. network(네트워크)가 어떻게 자신의 IP 주소(network part)를 할당받는가?

host의 IP 주소 할당 방식

  • 수동 할당: 시스템 관리자가 설정 파일(예: UNIX의 /etc/rc.config)에 직접 입력
  • 동적 할당: DHCP(Dynamic Host Configuration Protocol)를 통해 서버로부터 동적으로 할당받음 (plug-and-play 방식)

DHCP(Dynamic Host Configuration Protocol)

DHCP의 목적

  • host가 네트워크에 접속(join)할 때, 네트워크 서버로부터 동적으로 IP 주소를 할당받도록 한다.
  • 주소 임대(lease) 갱신 가능
  • 주소 재사용 가능(연결되어 있는 동안만 주소를 보유)
  • 네트워크에 들어오고 나가는 모바일 사용자 지원

DHCP 동작 개요

  • host가 DHCP discover 메시지를 브로드캐스트(옵션)
  • DHCP 서버가 DHCP offer 메시지로 응답(옵션)
  • host가 DHCP request 메시지로 IP 주소 요청
  • DHCP 서버가 DHCP ack 메시지로 주소 할당

DHCP Client-Server 시나리오

  • 일반적으로 DHCP 서버는 라우터와 함께 위치하며, 해당 라우터에 연결된 모든 서브넷에 서비스를 제공한다.
  • 네트워크에 새로 들어온 DHCP client는 이 네트워크에서 사용할 IP 주소가 필요하다.

DHCP 메시지 교환 과정

  1. DHCP discover
    • 클라이언트: "Broadcast: is there a DHCP server out there?"
  2. DHCP offer
    • 서버: "Broadcast: I'm a DHCP server! Here's an IP address you can use"
  3. DHCP request
    • 클라이언트: "Broadcast: OK. I would like to use this IP address!"
  4. DHCP ack
    • 서버: "Broadcast: OK. You've got that IP address!"

만약 클라이언트가 이전에 할당받은 네트워크 주소를 기억하고 있다면, discover/offer 단계를 생략하고 바로 request/ack만 사용할 수 있다.


DHCP: more than IP addresses

  • DHCP(Dynamic Host Configuration Protocol)는 단순히 IP address만 할당하는 것이 아니라, 다양한 네트워크 정보를 함께 전달할 수 있다.
  • first-hop router(클라이언트가 사용할 첫 번째 라우터)의 주소를 반환할 수 있다.
  • DNS server(DNS 서버)의 이름과 IP 주소를 함께 제공할 수 있다.
  • network mask(네트워크 마스크, 즉 주소에서 네트워크 부분과 호스트 부분을 구분하는 정보)도 함께 전달한다.

DHCP: example

1. 새로운 host 추가시 DHCP request 전송

  • 노트북 등 클라이언트가 네트워크에 연결될 때, DHCP를 사용해 IP address, first-hop router의 주소, DNS server의 주소 등을 할당받는다.
  • DHCP REQUEST 메시지는 UDP에 캡슐화되고, 다시 IP, Ethernet에 캡슐화되어 LAN에 브로드캐스트된다(목적지 MAC: FFFFFFFFFFFF).

2. DHCP 서버가 수신 후 de-multiplex

  • 이 프레임은 DHCP 서버가 내장된 라우터에서 수신된다.
  • Ethernet 프레임이 해체되고, IP, UDP, DHCP 순서로 각각 de-multiplexing된다.

3. DHCP 서버가 ACK 메세지를 클라이언트로 전송한다.

  • DHCP 서버는 DHCP ACK 메시지를 생성하여, 클라이언트의 IP address, first-hop router의 IP address, DNS server의 이름과 IP address를 포함시킨다.
  • 이 DHCP 서버 응답은 캡슐화되어 클라이언트로 전달되고, 클라이언트에서는 DHCP 계층까지 de-multiplexing된다.
  • 이제 클라이언트는 자신의 IP address, DNS server의 이름과 IP address, first-hop router의 IP address를 모두 알게 된다.

IP addresses: how to get one?

Q: network(네트워크)는 어떻게 subnet part(서브넷 부분)의 IP address를 할당받는가?

A: 상위 ISP(Internet Service Provider)로부터 주소 공간의 일부를 할당받는다.

  • 예시: ISP가 200.23.16.0/20 주소 블록을 가지고 있다면, ISP는 이를 여러 개의 작은 블록으로 나누어(예: 8개) 여러 조직에 할당할 수 있다.

  • 각 조직은 할당받은 주소 블록 내에서 자체적으로 서브넷을 나누어 사용할 수 있다.

Hierarchical Addressing: Route Aggregation

  • Hierarchical addressing(계층적 주소 지정)은 route aggregation(경로 집약)을 가능하게 하여, 라우팅 정보의 효율적 광고를 돕는다.
  • 여러 조직(Organization 0~7)이 각각 /23 주소 블록(예: 200.23.16.0/23, 200.23.18.0/23 등)을 할당받는다.
  • 상위 ISP인 Fly-By-Night-ISP는 이 주소 블록들을 하나로 묶어(aggregation) "200.23.16.0/20으로 시작하는 모든 패킷을 나에게 보내라"는 식으로 인터넷에 광고한다.
  • 또 다른 ISP(ISPs-R-Us)는 자신이 보유한 199.31.0.0/16 주소 블록을 광고한다.
  • 이 방식은 라우팅 테이블의 크기를 줄이고, 관리 효율성을 높인다.

Hierarchical Addressing: More Specific Routes

조직이 ISP를 변경할 때, 더 구체적인 경로(more specific route)가 필요하다.

  • 예를 들어, Organization 1이 Fly-By-Night-ISP에서 ISPs-R-Us로 이동하면, ISPs-R-Us는 200.23.18.0/23에 대한 더 구체적인 경로를 인터넷에 광고한다.
  • 이제 ISPs-R-Us는 "내가 199.31.0.0/16뿐 아니라 200.23.18.0/23도 직접 관리한다"고 광고한다.
  • 인터넷 라우터들은 200.23.18.0/23로 향하는 패킷을 ISPs-R-Us로 라우팅한다.
  • 이처럼 계층적 주소 지정은 집약(aggregation)과 예외(구체적 경로 광고)를 모두 지원한다.

IP Addressing: Last Words

Q: ISP는 어떻게 주소 블록을 할당받는가?

  • ICANN(Internet Corporation for Assigned Names and Numbers)이 5개의 regional registry(RR, 지역 레지스트리)를 통해 IP 주소 블록을 할당한다.
  • 각 RR은 로컬 레지스트리에 추가 할당을 할 수 있다.
  • ICANN은 DNS root zone 관리와 TLD(.com, .edu 등) 위임도 담당한다.

Q: 32비트 IP 주소가 충분한가?

  • ICANN은 2011년에 마지막 IPv4 주소 블록을 regional registry에 할당했다.
  • NAT(Network Address Translation)는 IPv4 주소 고갈 문제를 완화한다.
  • IPv6는 128비트 주소 공간을 제공하여 주소 부족 문제를 해결한다.

 

 

반응형

댓글