NakedFlower 님의 블로그

IP의 핵심 기능 본문

CS/네트워크

IP의 핵심 기능

nakedflower 2025. 10. 1. 17:09

지난 게시물에서 IP의 핵심 기능으로 주소 지정과 단편화가 있다고 했고,

단편화 프로토콜이 어떻게 동작하는지 공부했으니 이번엔 주소 지정에 관련해서 공부해보자!

 

IP의 핵심 기능 : 주소 지정

 

주소 지정은 IP주소로 이루어짐
IP주소의 구조 : 네트워크 주소와 호스트 주소로 구성

 

- 네트워크 주소

  • '네트워크를 표현하는 부분'
  • '호스트가 속한 특정 네트워크를 식별

- 호스트 주소

  • '호스트를 표현하는 부분'
  • 특정 호스트를 식별

IP 주소에서 네트워크 주소와 호스트 주소 크기는 각각 어느 정도가 적당할까?

  • 네트워크 주소가 하나의 옥텟으로 이루어질 경우 한 네트워크당 호스트 주소 할당에 24비트를 사용할 수 있음
    • 상대적으로 많은 호스트에 IP 주소를 할당
  • 네트워크 주소가 세 개의 옥텟으로 이루어질 경우 한 네트워크당 호스트 주소 할당에 8비트를 사용할 수 있음
    • 상대적으로 적은 호스트에 IP 주소를 할당

 

  • 무조건 호스트 주소 공간을 크게 할당하면? 호스트가 할당되지 않은 다수의 IP 주소가 낭비
  • 무조건 호스트 주소 공간을 작게 할당하면? 호스트가 사용할 IP 주소가 부족

이런 고민을 해결하기 위해 생겨난 개념 = IP 주소의 클래스(class)

 


클래스란 무엇인가

 

 

  • 네트워크 크기에 따라 P주소를 분류하는 기준
  • 클래스풀 주소 체계 : 클래스를 기반으로 IP주소를 관리하는 주소 체계
  • 필요한 호스트의 수에 가까운 클래스를 골라 선택

-> 네트워크 크기 조절 가능

-> 많은 호스트 할당이 필요할수록 A클래스

 

 

각각의 클래스에 대해 더 자세하게 알아보자

 

A 클래스

  • 8비트 C 클래스에 비해 할당 가능한 호스트 주소의 수가 많음
  • 네트워크 주소는 비트 '0'으로 시작하는 3옥텟, 호스트 주소는 3옥텟으로 구성
  • 이론상 2(128)개의 클래스 네트워크 존재 가능
  • 각 네트워크에 224 (16,777,216)개의 호스트 주소 할당 가능
  • 가장 처음 옥텟의 주소가 0~127일 경우 A클래스 주소임을 짐작할 수 있음
  • 네트워크 주소가 0으로 시작

B 클래스

  • 네트워크 주소는 비트 '10'으로 시작하는 2옥텟, 호스트 주소도 2옥텟으로 구성
  • 이론상 214(16,384)개의 클래스 네트워크 존재 가능
  • 각 네트워크에 216(65,534)개의 호스트 주소 할당 가능
  • 네트워크 주소가 10으로 시작
  • 가장 처음 옥텟의 주소가 128~191일 경우, B클래스 주소임을 짐작할 수 있음

C 클래스

  • 네트워크 주소는 비트 '110'으로 시작하는 3옥텟, 호스트 주소는 1옥텟으로 구성
  • 이론상 221(2,097,152)개의 C 클래스 네트워크 존재 가능
  • 각 네트워크에 28(256)개 호스트 주소 할당 가능
  • 110으로 시작
  • 가장 처음 옥텟의 주소가 192 ~ 223일 경우 , C클래스 주소임을 짐작할 수 있음

 

위에서 할당 가능한 호스트의 주소를 2의 몇 제곱개라고 하는데 사실 그건 거짓말이다.

 

호스트의 주소 공간을 모두 사용할 수 없는 것은 아님

 

- 호스트 주소가 전부 0인 IP 주소

해당 네트워크 자체를 의미하는 네트워크 주소로 사용

- 호스트 주소가 전부 1인 IP 주소

브로드캐스트 주소로 사용

 

클래스별 할당 가능한 주소의 갯수 정리

 

클래스 주소 체계의 한계

  • 클래스 별 네트워크 크기가 고정되어 있어 여전히 낭비되는 IP주소가 많을 수 있다
  • 클래스별 네트워크 크기가 고정되어 있어 사전에 정해진 크기 외의 다른 크기 네트워크 구성 불가능

이걸 보완하기 위해 사용하는 주소 체계

  • 클래스 개념 없이 클래스에 구애받지 않고 네트워크의 영역을 나누고 호스트에게 IP주소 공간을 할당하는 방식
  • 클래스풀 주소 체계보다 더 유동적이고 정교한 네트워크 구축 가능
  • 오늘날 주로 활용되는 방식

클래스리스 주소 체계

  • 서브넷 마스크 (subnet mask)
    • 클래스 없이 IP 주소의 네트워크 주소, 호스트 주소를 구분하는 수단
    • IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열
      -> 네트워크 내의 부분적인 네트워크(서브네트워크 subnetwork)를 구분 짓는(마스크 mask) 비트열
    • A, B, C 클래스의 기본 서브넷 마스크
      • A 클래스: 255.0.0.0 (11111111.00000000.00000000.00000000)
      • B 클래스: 255.255.0.0 (11111111.11111111.00000000.00000000)
      • C 클래스: 255.255.255.0 (11111111.11111111.11111111.00000000)

서브넷: 이만큼이 네트워크 주소야, 호스트 주소야를 구분하는 수단

  • 서브네팅(subnetting)
    • 하나의 네트워크 주소를 클래스를 원하는 크기로 더 잘게 쪼개어 사용하는 것
    • (서브넷 마스크 이용법) 서브넷 마스크로 네트워크 주소와 호스트 주소를 구분 짓는 방법
      • IP 주소와 서브넷 마스크를 비트 AND 연산 -> 결과 = 네트워크 주소
      • 비트 AND 연산(bitwise AND operation) - 피연산자가 모두 1인 경우에는 1, 아닌 경우에는 0이 되는 연산
IP 주소 11000000.10101000.11011011.01100111
서브넷 마스크 11111111.11111111.11111111.00000000
비트 AND 연산 (네트워크 주소) 11000000.10101000.11011011.00000000 = 192.168.219.0

 

  • 서브넷 마스크 표기: CIDR 표기법
    • 10진수로 직접 표기
      • 255.255.255.0, 255.255.255.252 등
    • CIDR 표기법: CIDR(Classless Inter-Domain Routing notation)
      • IP 주소/서브넷 마스크상의 1의 개수 형식으로 표기
      • 예) C 클래스의 기본 서브넷 마스크는 255.255.255.0
      • 이를 2진수로 표기하면 11111111.11111111.11111111.00000000 (1의 총 24개) 따라서 /24 IP 주소 192.168.219.103과 서브넷 마스크 255.255.255.0 -> 192.168.219.103/24

여기까지 IP주소가 무엇이고 각각의 기능이 어떻게 되어있는지에 대해 공부했다. 그럼 IP 주소를 분류하는 또 다른 기준에 대해 공부하자.

IP 주소의 분류

  • 공인 IP주소와 사설 IP주소
  • 정적 IP주소와 동적 IP주소

공인 IP 주소 (public IP address)

  • 전 세계에서 유일한 IP 주소
  • 네트워크 간의 통신, 이를테면 인터넷을 이용할 때 사용하는 IP 주소
  • 공인 IP 주소는 ISP나 공인 IP 주소 할당 기관을 통해 할당

사설 IP 주소 (private IP address)

  • 사설 네트워크에서 사용하기 위한 IP 주소
  • 사설 IP 주소로 사용하도록 특별히 예약된 IP 주소 공간
    • 10.0.0.0/8 (10.0.0.0 – 10.255.255.255)
    • 172.16.0.0/12 (172.16.0.0 – 172.31.255.255)
    • 192.168.0.0/16 (192.168.0.0 – 192.168.255.255)
  • 사설 IP 주소의 할당 주체는 일반적으로 라우터(공유기)
  • 사설 IP주소는 호스트가 속한 사설 네트워크에서만 유효한 주소다.
  • 때문에 다른 네트워크 상의 사설 IP주소와 중복 가능
  • 일반적으로 네트워크 간의 통신은 사설 IP주소가 아닌 공인 IP주소를 통해 이루어짐

근데 이러면 사설이랑 공인 IP주소가 1대1 대응이 되고 공인 IP주소는 고유해야 하니까 주소 수가 부족해지지 않겠어?


  • NAT (Network Address Translation)
    • IP 주소 변환 기술. 주로 사설 IP 주소(네트워크 내부)와 공인 IP 주소(네트워크 외부)를 변환
    • 대부분의 라우터와 (가정용) 공유기는 NAT 기능 내장
      • 사설 네트워크의 패킷 -> 사설 IP 주소는 공유기를 거쳐 공인 IP 주소로 변경
      • 외부 네트워크의 패킷 속 공인 IP 주소는 공유기를 거쳐 사설 IP 주소로 변경

 

NAT를 통해 사설 IP주소를 사용하는 여러 호스트는 적은 수의 공인 IP주소를 공유 가능

 

 

정적 IP주소와 동적 IP주소

  • 정적 할당
    • 호스트에 직접 (수작업으로) IP 주소를 부여하는 방식
    • 이렇게 할당된 IP 주소 = 정적 IP 주소(static IP address)

정적 IP 주소 부여

  • 윈도우나 맥OS 등의 네트워크 설정에서 다음 화면처럼 IP 주소를 수동으로 설정
  • 일반적으로 부여하고자 하는 IP 주소, 서브넷 마스크, 게이트웨이(라우터) 주소, DNS 주소를 입력

여기서 게이트웨이에 대해 조오금만 공부해보자면

기본 게이트웨이

  • 게이트웨이(gateway)의 일반적인 의미
    • 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
  • 기본 게이트웨이(default gateway)
    • 호스트가 속한 네트워크 외부로 나가기 위한 기본적인 첫 경로(첫 번째 문)
    • 네트워크 내부의 라우터 입구(라우터의 IP 주소)를 의미하는 경우가 많음
    • IP 할당의 맥락에서 사용된 '게이트웨이'라는 용어는 기본 게이트웨이(라우터(공유기)의 주소)를 의미

모든 IP주소를 정적으로 할당할 수 없음

  • 호스트의 수가 많아질 경우 관리 곤란
  • 의도치 않게 잘못된 IP주소를 입력할 수도 있고, 중복된 IP 주소를 입력할 수도 있음

이를 해결하고자 동적 할당이 있다!

 

동적 할당

  • 호스트에 IP 주소를 프로토콜을 활용해 자동으로 할당하는 방식
    • IP 동적 할당에 사용되는 대표적인 프로토콜 DHCP(Dynamic Host Configuration Protocol)
  • 이렇게 할당된 IP 주소를 동적 IP 주소(dynamic IP address) 라고 함
  • DHCP를 통한 IP 주소 할당
    • 클라이언트와 DHCP 서버 간 메시지 송수신을 통해 할당이 이루어짐
    • 클라이언트: IP 주소를 할당받고자 하는 호스트
    • DHCP 서버: IP 주소를 관리 및 할당해주는 호스트
      • DHCP 서버의 역할은 일반적으로 라우터(공유기)가 수행
      • 특정 호스트에 DHCP 서버 기능을 추가할 수도 있음
      • DHCP 서버는 클라이언트에게 할당 가능한 IP 주소 목록을 관리하다, 클라이언트 요청 시 IP 주소를 할당
  • DHCP를 통한 IP 주소 할당
    • DHCP로 할당받은 동적 IP 주소는 사용할 기간(임대 기간)이 정해짐
      • 일반적으로 수 시간에서 수 일
    • 임대 기간이 끝난 IP 주소는 다시 DHCP 서버로 반납

DHCP로 IP주소를 할당 받는 것 = IP주소를 임대한다

 

 

 

 

 

IP 주소 할당 과정에서 주고받는 메시지

  1. DHCP Discover
  2. DHCP Offer
  3. DHCP Request
  4. DHCP Acknowledgment(이하 DHCP ACK)

 

 

 

 

 

 

  • DHCP Discover(클라이언트가 DHCP 서버로)
    • DHCP 서버 찾는 메시지
    • 브로드캐스트로 전송
    • 클라이언트는 아직 IP주소를 할당받지 못함: 송신지 IP주소는 0.0.0.0으로 설정
  • DHCP Offer(DHCP 서버가 클라이언트로)
    • 클라이언트에게 할당할 IP주소 및 기타 정보를 제안하는 메시지
    • 할당 가능한 IP주소, 서브넷 마스크, 임대 기간 등의 정보 포함
  • DHCP Request(클라이언트가 DHCP서버에게)
    • DHCP offer 메시지에 대한 응답
    • 브로드캐스트로 전송
  • DHCP ACK(DHCP서버가 클라이언트에게)
    • 최종 IP주소 할당 메시지
    • DHCP ACK 메시지를 클라이언트에게 이제 할당받은 IP주소를 자신의 IP주소로 설정
    • 후 임대 기간 동안 IP 주소 사용
    • 사용기간이 끝나면, IP 주소를 다시 DHCP 서버에 반납

원칙적으로는 다시 앞의 4과정을 주고 받아 IP주소를 재할당해야 하나

임대 갱신이라는 메시지를 통해서 임대 기간을 연장할 수 있음

 

임대 기간이 끝나기 전에 기본적으로 두 차례 자동으로 수행 자동 임대 갱신이 모두 실패하면 그때 IP주소 반납

 

예약 주소

  • 특수한 목적을 위해 예약된 IP 주소
예약 주소 IP 범위 사용 목적
10.0.0.0/8 10.0.0.0 - 10.255.255.255 사설 네트워크
127.0.0.0/8 127.0.0.0 - 127.255.255.255 루프백(loopback) 주소
169.254.0.0/16 169.254.0.0 - 169.254.255.255 링크 로컬(link local) 주소(DHCP 서버로부터 IP 주소 할당을 받지 못했을 경우 통신 범위가 제한된 주소)
172.16.0.0/12 172.16.0.0 - 172.31.255.255 사설 네트워크
192.0.2.0/24 192.0.2.0 - 192.0.2.255 테스트용
192.168.0.0/16 192.168.0.0 - 192.168.255.255 사설 네트워크
198.18.0.0/15 198.18.0.0 - 198.19.255.255 테스트용
224.0.0.0/4 224.0.0.0 - 239.255.255.255 멀티캐스트(D 클래스)
240.0.0.0/4 240.0.0.0 - 255.255.255.254 미래 사용 용도로 예약(E 클래스)
.
 
 
몇 가지 좀 더 자세하게 살펴보자
 
  • 127.0.0.1
    • 루프백 주소(loopback address), 로컬 호스트(localhost)
    • 자기 자신을 가리키는 특별한 주소
    • 루프백 주소로 전송된 패킷은 자기 자신에게 되돌아옴
    • 부메랑 역할을 수행하는 주소
    • 테스트나 디버깅 용도로 사용
  • 0.0.0.0/8
    • 호스트가 IP 주소를 할당받기 전에 임시로 할당되는 IP 주소
    • 예) DHCP Discover 메시지를 전송하는 시점의 클라이언트 IP 주소
    • 특별히 지정할 IP 주소가 없을 때 사용되는 IP 주소
    • 호스트 입장에서 마땅히 지정할 IP 주소가 없을 때
  • 0.0.0.0/8 마땅히 지칭할 IP주소가 없을 떄
  • 0.0.0.0/0 모든 임의의 IP주소를 지칭할 떄