| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 다중화
- 네트워크
- docker
- namespace
- 혼잡제어
- 클라우드 네이티브 5회차
- configmap
- 고가용성
- 해커톤
- 도커
- 온프레미스
- daemonset
- 빅데이터
- Web
- cronjob
- 웹 스토리지
- 핸드셰이크
- 하둡
- Urn
- k8s
- LimitRange
- 해시
- goorm
- Replicaset
- 클라우드
- OverTheWire
- 리소스 풀링
- ResourceQuota
- 네트워크 가상화
- dns
- Today
- Total
NakedFlower 님의 블로그
IP의 핵심 기능 본문
지난 게시물에서 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
- 10진수로 직접 표기
여기까지 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 주소는 사용할 기간(임대 기간)이 정해짐
DHCP로 IP주소를 할당 받는 것 = IP주소를 임대한다

IP 주소 할당 과정에서 주고받는 메시지
- DHCP Discover
- DHCP Offer
- DHCP Request
- 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주소를 지칭할 떄
'CS > 네트워크' 카테고리의 다른 글
| 전송 계층, NAT (0) | 2025.10.02 |
|---|---|
| 라우팅에 대하여 (0) | 2025.10.01 |
| 네트워크 계층의 기능, 존재 목적, IP 패킷 그리고 ARP (0) | 2025.10.01 |
| 물리 계층과 데이터링크 계층 네트워크 장비 (0) | 2025.09.30 |
| NIC, 케이블 (0) | 2025.09.29 |