IP 주소·서브넷·IPv6
IPv4 주소와 마스크로 네트워크·브로드캐스트·호스트 범위를 계산하고 FLSM·VLSM·CIDR의 차이를 구분한다. IPv6의 128비트 표기, 주소 유형, 기본 헤더와 IPv4 전환 방식까지 연결한다.
IPv4 주소와 마스크로 네트워크·브로드캐스트·호스트 범위를 계산하고 FLSM·VLSM·CIDR의 차이를 구분한다. IPv6의 128비트 표기, 주소 유형, 기본 헤더와 IPv4 전환 방식까지 연결한다.
그림으로 확인하기

IP 주소와 프리픽스의 기본 구조
IP 주소가 식별하는 대상
IP 주소는 네트워크 계층에서 인터페이스에 부여되는 논리 주소다. 한 장치가 유선·무선 인터페이스를 모두 가지면 서로 다른 IP 주소를 가질 수 있고, 한 인터페이스에도 목적과 범위가 다른 여러 주소가 동시에 설정될 수 있다.
IP 주소는 다음 세 가지를 함께 해석해야 한다.
- 주소값: 인터페이스 또는 통신 종단을 식별한다.
- 프리픽스 길이: 주소 중 네트워크 경계에 해당하는 왼쪽 비트 수다.
- 라우팅 정보: 목적지가 직접 연결된 범위인지, 다음 홉으로 보내야 하는지 판단한다.
192.0.2.130만 주어지면 그 주소가 /24, /26, /28 중 어느 네트워크에 속하는지 확정할 수 없다. 주소와 프리픽스가 함께 있어야 네트워크 범위를 계산할 수 있다.
프리픽스 표기
CIDR 표기 주소/프리픽스길이에서 프리픽스 길이는 왼쪽부터 연속된 네트워크 비트의 수다.
IPv4: 192.0.2.130/26
32비트 중 앞 26비트가 프리픽스, 뒤 6비트가 호스트 부분
IPv6: 2001:db8:1234:5678::1/64
128비트 중 앞 64비트가 프리픽스, 뒤 64비트가 나머지 부분
프리픽스가 길어질수록 네트워크 범위는 작아지고, 프리픽스가 짧아질수록 포함하는 주소 범위는 커진다.
/24는/26보다 큰 IPv4 블록이다./64는/48보다 작은 IPv6 블록이다./0은 어느 비트도 고정하지 않으므로 전체 주소 공간을 포괄하는 기본 경로 표현에 사용한다.- IPv4
/32와 IPv6/128은 한 주소를 특정한다.
네트워크 주소는 정렬된 경계다
프리픽스를 네트워크 자체로 쓸 때는 프리픽스 밖의 비트를 0으로 만든 정렬된 값을 사용한다.
192.0.2.130/26 → 주소가 포함된 네트워크는 192.0.2.128/26
2001:db8:1:2::abcd/64 → 주소가 포함된 프리픽스는 2001:db8:1:2::/64
192.0.2.130/26은 인터페이스 주소 표기로는 유효하지만 네트워크 자체의 정규 표기는 192.0.2.128/26이다.
IPv4 주소 표현과 이진수 해석
32비트와 점으로 구분한 10진수
IPv4 주소는 32비트를 8비트씩 네 옥텟으로 나누어 표현한다. 각 옥텟의 범위는 0~255다.
192.0.2.130
= 11000000.00000000.00000010.10000010
8비트 자리값은 다음과 같다.
| 비트 위치 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 자리값 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
130 = 128 + 2이므로 이진수는 10000010이다.
주소와 마스크의 AND
네트워크 주소는 각 비트에 AND 연산을 적용해 구한다.
| 입력 | 마지막 옥텟 이진수 |
|---|---|
| IP 주소 130 | 10000010 |
/26 마스크 192 | 11000000 |
| AND 결과 128 | 10000000 |
따라서 192.0.2.130/26의 네트워크 주소는 192.0.2.128이다.
브로드캐스트 주소는 네트워크 주소의 호스트 비트를 모두 1로 만든 값이다.
네트워크 마지막 옥텟 10000000
호스트 비트 111111
브로드캐스트 10111111 = 191
비트 순서를 바꾸지 않는다
프리픽스 비트는 항상 가장 왼쪽의 상위 비트부터 연속된다. /26은 임의의 26개 비트가 아니라 왼쪽 26개 비트가 1인 마스크다. 시험에서 사용하는 정상적인 CIDR 마스크는 1과 0이 번갈아 나오지 않는다.
프리픽스 길이와 서브넷 마스크 변환
한 옥텟에서 가능한 정상 마스크값
연속된 1비트 뒤에 0비트가 오는 옥텟의 값은 다음 아홉 가지다.
| 1비트 수 | 이진수 | 10진수 |
|---|---|---|
| 0 | 00000000 | 0 |
| 1 | 10000000 | 128 |
| 2 | 11000000 | 192 |
| 3 | 11100000 | 224 |
| 4 | 11110000 | 240 |
| 5 | 11111000 | 248 |
| 6 | 11111100 | 252 |
| 7 | 11111110 | 254 |
| 8 | 11111111 | 255 |
예를 들어 /20은 8비트 옥텟 두 개와 세 번째 옥텟의 4비트를 사용한다.
/20 = 11111111.11111111.11110000.00000000
= 255.255.240.0
자주 쓰는 IPv4 마스크
| 프리픽스 | 서브넷 마스크 | 마지막 경계 블록 | 총 주소 수 | 일반 사용 가능 호스트 수 |
|---|---|---|---|---|
/24 | 255.255.255.0 | 256 | 256 | 254 |
/25 | 255.255.255.128 | 128 | 128 | 126 |
/26 | 255.255.255.192 | 64 | 64 | 62 |
/27 | 255.255.255.224 | 32 | 32 | 30 |
/28 | 255.255.255.240 | 16 | 16 | 14 |
/29 | 255.255.255.248 | 8 | 8 | 6 |
/30 | 255.255.255.252 | 4 | 4 | 2 |
/31 | 255.255.255.254 | 2 | 2 | 점대점 링크에서는 2개 종단 주소 |
/32 | 255.255.255.255 | 1 | 1 | 단일 주소·호스트 경로 |
/31과 /32를 일반 서브넷의 2^h - 2 표에 기계적으로 넣지 않는다.
네트워크 주소·브로드캐스트·호스트 범위
기본 계산 절차
IPv4 주소 A와 프리픽스 /p가 주어지면 다음 순서로 계산한다.
/p를 서브넷 마스크로 바꾼다.A AND 마스크로 네트워크 주소를 구한다.- 호스트 비트를 모두 1로 바꾸어 브로드캐스트 주소를 구한다.
- 일반
/30이하 유니캐스트 서브넷이면 네트워크 다음 주소부터 브로드캐스트 이전 주소까지를 호스트 범위로 본다. - 총 주소 수와 사용 가능한 주소 수를 구분한다.
/26 예제
주소: 192.0.2.130/26
마스크: 255.255.255.192
호스트 비트 수: 32 - 26 = 6
총 주소 수: 2^6 = 64
| 항목 | 결과 |
|---|---|
| 네트워크 주소 | 192.0.2.128 |
| 첫 일반 호스트 | 192.0.2.129 |
| 마지막 일반 호스트 | 192.0.2.190 |
| 브로드캐스트 주소 | 192.0.2.191 |
| 일반 사용 가능 호스트 수 | 64 - 2 = 62 |
옥텟 경계를 넘는 /20 예제
주소: 172.16.37.200/20
마스크: 255.255.240.0
경계 옥텟: 세 번째 옥텟
블록 크기: 256 - 240 = 16
세 번째 옥텟 37이 속한 블록: 32~47
| 항목 | 결과 |
|---|---|
| 네트워크 주소 | 172.16.32.0 |
| 첫 일반 호스트 | 172.16.32.1 |
| 마지막 일반 호스트 | 172.16.47.254 |
| 브로드캐스트 주소 | 172.16.47.255 |
| 총 주소 수 | 2^(32-20) = 4096 |
| 일반 사용 가능 호스트 수 | 4094 |
경계 옥텟 뒤의 옥텟은 네트워크 주소에서 모두 0, 브로드캐스트 주소에서 모두 255가 된다.
/31과 /32
/31: 두 주소만 포함한다. RFC 3021 방식의 IPv4 점대점 링크에서는 두 주소를 양 끝 인터페이스에 사용할 수 있으며, 전통적인 네트워크·브로드캐스트 예약을 적용하지 않는다./32: 하나의 주소를 정확히 나타낸다. 호스트 경로, 루프백 인터페이스, 정책 식별 등에 사용할 수 있다.
문제가 단순히 “일반 서브넷에서 사용 가능한 호스트 수”를 묻는지, “점대점 링크”를 명시하는지 먼저 확인한다.
블록 크기로 빠르게 계산하기
블록 크기 공식
마스크가 255도 0도 아닌 경계 옥텟에서 다음 값을 구한다.
블록 크기 = 256 - 경계 옥텟의 마스크값
/26의 경계 마스크값은 192이므로 블록 크기는 64다.
0, 64, 128, 192
이 값들이 마지막 옥텟의 네트워크 시작점이다. 주소 130은 128~191 블록에 속한다.
시작값과 끝값
경계 옥텟 값이 x, 블록 크기가 B라면 시작값은 다음과 같다.
시작값 = floor(x / B) × B
끝값 = 시작값 + B - 1
x=130, B=64이면 다음과 같다.
floor(130 / 64) = 2
시작값 = 2 × 64 = 128
끝값 = 128 + 64 - 1 = 191
자주 생기는 실수
256 - 프리픽스 길이로 계산하지 않는다. 256에서 빼는 값은 경계 옥텟의 마스크값이다.- 주소 옥텟에서 블록 크기를 단순히 한 번 빼는 것이 아니라 어느 배수 구간에 속하는지 찾는다.
- 경계 옥텟 다음의 모든 옥텟을 네트워크에서는 0, 브로드캐스트에서는 255로 처리한다.
/8,/16,/24처럼 옥텟 경계에서 끊기면 다음 옥텟 전체가 호스트 부분이다.
같은 서브넷 판단과 기본 게이트웨이
같은 서브넷인지 판정하기
두 주소에 같은 마스크를 AND한 결과가 같으면 같은 IPv4 서브넷에 속한다.
192.0.2.130/26 → 네트워크 192.0.2.128
192.0.2.190/26 → 네트워크 192.0.2.128 → 같은 서브넷
192.0.2.192/26 → 네트워크 192.0.2.192 → 다른 서브넷
주소의 앞 세 옥텟만 같다고 같은 서브넷인 것은 아니다. /26에서는 마지막 옥텟도 네트워크 비트 일부를 포함한다.
호스트의 전송 판단
IPv4 호스트는 일반적으로 자신의 주소와 마스크를 이용해 목적지가 직접 연결된 네트워크인지 판단한다.
- 목적지가 같은 온링크 서브넷이면 목적지의 링크 계층 주소를 해석해 직접 프레임을 보낸다.
- 목적지가 다른 네트워크면 라우팅 표에 따라 기본 게이트웨이 또는 더 구체적인 다음 홉으로 보낸다.
- 이때 첫 프레임의 목적지 MAC은 게이트웨이일 수 있지만, IP 목적지 주소는 최종 목적지로 유지된다.
두 호스트의 마스크가 잘못 다르면 각자 같은 주소를 온링크로 판단하는 결과가 달라져 비대칭 통신 장애가 생길 수 있다.
게이트웨이 주소의 조건
일반적인 직접 연결 게이트웨이는 호스트와 같은 온링크 서브넷에 있어야 링크 계층으로 도달할 수 있다. 단순히 “첫 번째 호스트 주소”나 “마지막 호스트 주소”여야 하는 규칙은 없다. 어느 사용 가능한 주소를 게이트웨이로 정할지는 설계·운영 정책이다.
주소 수·호스트 수·서브넷 수 계산
IPv4 총 주소 수
프리픽스가 /p이면 호스트 비트 수 h는 다음과 같다.
h = 32 - p
총 주소 수 = 2^h
일반적인 IPv4 브로드캐스트 서브넷에서 /30 이하라면 다음 공식을 사용한다.
일반 사용 가능 호스트 수 = 2^h - 2
네트워크 주소와 브로드캐스트 주소를 제외하기 때문이다.
필요한 호스트 수에서 프리픽스 찾기
필요한 일반 호스트 수가 N이면 다음 조건을 만족하는 가장 작은 h를 찾는다.
2^h - 2 ≥ N
프리픽스 = 32 - h
호스트 50개가 필요하면 다음과 같다.
2^5 - 2 = 30 → 부족
2^6 - 2 = 62 → 충족
h = 6, 프리픽스 = /26
필요 수와 정확히 같은 주소 수가 아니라, 조건을 만족하는 가장 작은 블록을 선택한다.
부모 네트워크를 같은 크기로 나누기
부모 프리픽스 /P를 자식 프리픽스 /p로 나눌 때 p ≥ P이고 자식 서브넷 수는 다음과 같다.
자식 서브넷 수 = 2^(p-P)
/24를 /27로 나누면 3비트를 더 사용하므로 다음과 같다.
2^(27-24) = 8개 서브넷
각 서브넷 총 주소 수 = 2^(32-27) = 32
각 일반 호스트 수 = 30
현대 CIDR 서브넷 계산에서는 과거의 “첫 서브넷과 마지막 서브넷을 빼는 2^s-2” 규칙을 일반적으로 적용하지 않는다. 문제에서 특별히 오래된 클래스 기반 제한을 전제로 하지 않는 한 정의 가능한 서브넷을 모두 센다.
서브넷 수와 호스트 수를 동시에 만족하기
/24 블록에서 최소 6개 서브넷과 서브넷당 최소 25개 호스트가 필요하다고 하자.
- 서브넷 6개: 최소 3비트 필요 → 8개 서브넷
- 호스트 25개: 최소 5비트 필요 → 30개 일반 호스트
24 + 3 = /27, 남은 호스트 비트 5개
따라서 /27이 두 조건을 모두 만족한다.
FLSM과 VLSM
FLSM
FLSM(Fixed Length Subnet Mask)은 하나의 부모 네트워크를 모두 같은 프리픽스 길이로 나눈다.
10.20.30.0/24를 /27로 나누면 블록 크기는 32다.
10.20.30.0/27
10.20.30.32/27
10.20.30.64/27
10.20.30.96/27
10.20.30.128/27
10.20.30.160/27
10.20.30.192/27
10.20.30.224/27
각 서브넷의 크기가 같아 관리가 단순하지만, 요구 호스트 수가 크게 다른 조직에서는 주소 낭비가 생길 수 있다.
VLSM
VLSM(Variable Length Subnet Mask)은 같은 상위 주소 블록 안에서 서로 다른 프리픽스 길이를 사용한다. 큰 요구량부터 배정하면 작은 블록 사이에 큰 블록이 들어갈 수 없는 단편화를 줄일 수 있다.
10.20.30.0/24에서 일반 호스트 요구량이 100, 50, 20, 10인 네 네트워크를 배정한다.
| 요구 호스트 | 필요한 최소 블록 | 배정 프리픽스 | 배정 범위 | 일반 호스트 범위 |
|---|---|---|---|---|
| 100 | 128주소 | /25 | 10.20.30.0~127 | .1~.126 |
| 50 | 64주소 | /26 | 10.20.30.128~191 | .129~.190 |
| 20 | 32주소 | /27 | 10.20.30.192~223 | .193~.222 |
| 10 | 16주소 | /28 | 10.20.30.224~239 | .225~.238 |
남은 10.20.30.240~255는 정렬된 /28 블록이다.
VLSM 배정 원칙
- 요구 호스트 수를 큰 순서로 정렬한다.
- 각 요구량을 만족하는 최소 2의 거듭제곱 블록을 찾는다.
- 가장 앞의 사용 가능한 정렬된 경계부터 배정한다.
- 네트워크·브로드캐스트·호스트 범위를 기록한다.
- 블록 간 중복과 상위 블록 범위 초과를 검사한다.
- 향후 증가분이 필요하면 별도 여유를 설계한다.
/25 블록은 128의 배수 경계에서, /26은 64의 배수 경계에서 시작해야 한다. 남은 공간이 충분해 보여도 정렬되지 않으면 해당 크기의 네트워크로 사용할 수 없다.
CIDR·경로 집계·최장 프리픽스 일치
CIDR의 의미
CIDR은 주소 첫 옥텟에 따른 A·B·C 기본 마스크 대신, 주소/프리픽스로 네트워크 크기를 명시한다. 이를 통해 다음이 가능하다.
- 필요한 규모에 가까운 주소 블록 배정
- VLSM 기반 내부 주소 설계
- 여러 연속 경로의 집계
- 라우팅 표에서 겹치는 프리픽스의 최장 일치 선택
경로 집계 조건
여러 동일 크기 네트워크를 하나의 더 짧은 프리픽스로 정확히 묶으려면 다음 조건을 확인한다.
- 주소 블록이 연속적이다.
- 각 블록의 크기가 같다.
- 블록 수가 2의 거듭제곱이다.
- 시작 주소가 요약 블록 크기 경계에 정렬된다.
- 실제 라우팅에서 같은 방향·정책으로 전달해도 되는 경로다.
다음 네 /24는 하나의 /22로 집계할 수 있다.
10.0.4.0/24
10.0.5.0/24
10.0.6.0/24
10.0.7.0/24
→ 10.0.4.0/22
/22는 세 번째 옥텟 블록 크기가 4이므로 시작값 4는 정렬된 경계이고 4~7을 포함한다.
공통 비트로 요약하기
서로 다른 네트워크 주소를 이진수로 놓고 왼쪽부터 같은 비트가 끝나는 지점을 찾는다. 공통 비트 수가 요약 프리픽스 길이다. 다만 공통 비트만 찾은 결과가 원래 경로 외의 주소를 추가로 포함하는지 확인해야 한다.
정확히 묶을 수 없는 경로를 너무 짧은 프리픽스로 광고하면 의도하지 않은 목적지까지 같은 경로로 유도하는 과도한 집계가 된다.
최장 프리픽스 일치
라우팅 표에 여러 경로가 목적지와 일치하면 프리픽스 길이가 가장 긴, 즉 가장 구체적인 경로를 선택한다.
| 경로 | 다음 홉 |
|---|---|
0.0.0.0/0 | A |
10.0.0.0/8 | B |
10.20.0.0/16 | C |
10.20.30.0/24 | D |
목적지 10.20.30.77은 네 경로 모두 또는 일부와 일치하지만 /24가 가장 길므로 D를 선택한다. “먼저 적힌 경로”나 “숫자가 큰 네트워크 주소”를 선택하는 규칙이 아니다.
클래스 기반 주소의 역사적 의미
전통적 클래스
| 구분 | 첫 옥텟의 전통적 범위 | 기본 마스크 | 원래 용도 |
|---|---|---|---|
| Class A | 1~126 | /8 | 매우 큰 유니캐스트 네트워크 |
| Class B | 128~191 | /16 | 중간 유니캐스트 네트워크 |
| Class C | 192~223 | /24 | 작은 유니캐스트 네트워크 |
| Class D | 224~239 | 해당 없음 | 멀티캐스트 |
| Class E | 240~255 | 해당 없음 | 예약·특수 용도 |
127.0.0.0/8은 루프백으로 예약되어 일반 Class A 네트워크 배정에 사용하지 않는다. 0.0.0.0/8도 특수 의미가 있어 일반 네트워크 범위로 보지 않는다.
클래스와 현대 계산을 섞지 않는다
현대 라우팅과 주소 배정은 CIDR을 사용한다. 따라서 172.20.1.1이 과거 Class B 범위라는 이유만으로 마스크를 /16으로 단정할 수 없다. 172.20.1.1/24, /20, /30 모두 문맥에 따라 가능하다.
시험에서 클래스의 기본 마스크를 직접 묻는 문제와, 명시된 프리픽스로 서브넷을 계산하는 문제를 구분한다.
IPv4 사설·특수 목적 주소
RFC 1918 사설 주소
| 범위 | 프리픽스 | 포함 범위 |
|---|---|---|
| 사설 블록 1 | 10.0.0.0/8 | 10.0.0.0~10.255.255.255 |
| 사설 블록 2 | 172.16.0.0/12 | 172.16.0.0~172.31.255.255 |
| 사설 블록 3 | 192.168.0.0/16 | 192.168.0.0~192.168.255.255 |
172.15.255.255와 172.32.0.0은 사설 범위가 아니다. “172로 시작하면 사설”이라는 판단은 틀리다.
자주 구분하는 특수 범위
| 주소·범위 | 대표 의미 | 사설 주소인가? |
|---|---|---|
0.0.0.0/32 | 미지정 주소·이 호스트의 아직 정해지지 않은 주소 | 아니오 |
0.0.0.0/0 | 모든 IPv4 목적지와 일치하는 기본 경로 | 주소 하나가 아니라 경로 프리픽스 |
100.64.0.0/10 | 통신사업자 CGN용 공유 주소 공간 | RFC 1918 사설 주소 아님 |
127.0.0.0/8 | 루프백 | 아니오 |
169.254.0.0/16 | IPv4 링크 로컬 | 아니오 |
192.0.2.0/24 | 문서·예제용 TEST-NET-1 | 아니오 |
198.51.100.0/24 | 문서·예제용 TEST-NET-2 | 아니오 |
203.0.113.0/24 | 문서·예제용 TEST-NET-3 | 아니오 |
224.0.0.0/4 | IPv4 멀티캐스트 | 아니오 |
255.255.255.255/32 | 제한 브로드캐스트 | 아니오 |
“RFC 1918 사설 주소가 아니다”와 “공용 인터넷에서 일반 유니캐스트로 사용할 수 있다”는 같은 말이 아니다. 특수 목적 주소 레지스트리에는 사설 외에도 전역 도달성이 제한된 여러 범위가 있다.
사설 주소와 NAT
사설 주소는 조직 내부에서 중복 사용할 수 있는 주소 범위다. 공용 인터넷과 통신할 때 NAT를 사용하는 경우가 많지만 다음을 구분한다.
- 사설 주소 자체가 NAT 기능을 수행하지 않는다.
- NAT 없이도 사설 주소끼리 전용망·터널·조정된 라우팅으로 통신할 수 있다.
- 공인 주소를 사용해도 방화벽 정책은 별도로 필요하다.
- NAT는 주소·포트 변환이지 암호화나 신원 인증이 아니다.
100.64.0.0/10은 가입자 내부용 RFC 1918 공간이 아니라 사업자 공유 공간이다.
IPv4 유니캐스트·브로드캐스트·멀티캐스트
유니캐스트
유니캐스트는 하나의 목적지 인터페이스를 대상으로 한다. 일반 호스트 주소와 라우터 인터페이스 주소가 대표적이다. 같은 주소를 여러 위치에서 라우팅하는 애니캐스트 운영도 가능하지만, 전통적인 IPv4 시험 분류에서는 유니캐스트·브로드캐스트·멀티캐스트를 중심으로 구분한다.
브로드캐스트
IPv4에는 다음과 같은 브로드캐스트 개념이 있다.
- 제한 브로드캐스트
255.255.255.255: 현재 로컬 네트워크에서 사용하며 라우터가 일반적으로 전달하지 않는다. - 지정 브로드캐스트: 특정 IPv4 서브넷의 호스트 비트를 모두 1로 만든 주소다. 예를 들어
192.0.2.128/26의 지정 브로드캐스트는192.0.2.191이다.
운영 네트워크에서는 보안상 지정 브로드캐스트 전달을 차단할 수 있지만, 서브넷 계산에서 브로드캐스트 주소의 수학적 경계는 그대로 구한다.
멀티캐스트
IPv4 멀티캐스트 주소 범위는 224.0.0.0/4다. 하나의 그룹 주소로 그룹 구성원에게 데이터를 보낸다. 멀티캐스트 주소를 일반 단말의 유니캐스트 인터페이스 주소처럼 배정하지 않는다.
IPv6 주소 구조와 표기
128비트 주소
IPv6 주소는 128비트를 16비트씩 여덟 그룹으로 나누고 각 그룹을 16진수 1~4자리로 쓴다.
2001:0db8:1234:5678:0000:0000:0000:0001
각 16진수 한 자리는 4비트이므로 한 그룹의 최대값 ffff는 16비트다.
8그룹 × 16비트 = 128비트
선행 0 생략
각 그룹 안의 왼쪽 선행 0은 생략할 수 있다.
0db8 → db8
0000 → 0
0001 → 1
따라서 다음 두 표기는 같은 주소다.
2001:0db8:0000:0001:0000:0000:0000:000a
2001:db8:0:1:0:0:0:a
그룹 전체가 0이어도 각 그룹을 개별 표시할 때는 최소 0 하나를 남긴다.
:: 압축
연속된 하나 이상의 0 그룹은 ::로 한 번 압축할 수 있다.
2001:db8:0:1:0:0:0:a
→ 2001:db8:0:1::a
::를 두 번 사용하면 각각 몇 개의 0 그룹인지 복원할 수 없어 주소가 모호해진다.
압축 주소 복원
2001:db8:0:1::a에서 명시된 그룹은 다섯 개다.
2001, db8, 0, 1, a
전체는 여덟 그룹이어야 하므로 ::는 세 개의 0000 그룹을 나타낸다.
2001:0db8:0000:0001:0000:0000:0000:000a
복원할 때는 콜론 개수만 세지 말고, 실제로 쓰인 16비트 그룹 수를 센다.
IPv6 주소 유형과 범위
유니캐스트·애니캐스트·멀티캐스트
| 유형 | 전달 대상 | 주소 표기 특징 |
|---|---|---|
| 유니캐스트 | 하나의 인터페이스 | 일반 유니캐스트 주소 |
| 애니캐스트 | 같은 주소를 가진 인터페이스 집합 중 라우팅상 하나 | 유니캐스트 주소 형식을 사용하므로 주소만으로 식별 불가 |
| 멀티캐스트 | 그룹에 속한 모든 인터페이스 | ff00::/8 범위 |
IPv6에는 브로드캐스트 주소가 없다. 한 링크의 모든 노드처럼 여러 수신자에게 보내는 기능은 멀티캐스트 주소를 이용한다.
주요 IPv6 주소 범위
| 주소·프리픽스 | 의미 | 핵심 범위 |
|---|---|---|
::/128 | 미지정 주소 | 아직 특정 유니캐스트 주소가 없는 상태를 나타내며 목적지로 사용하지 않는다. |
::1/128 | 루프백 | 자기 자신과의 통신이며 라우터가 전달하지 않는다. |
fe80::/10 | 링크 로컬 유니캐스트 | 같은 링크 안에서 사용하며 라우터가 다른 링크로 전달하지 않는다. |
fc00::/7 | 고유 로컬 주소(ULA) 블록 | 조직 내부 통신용이며 현재 일반적인 로컬 생성은 fd00::/8 형태다. |
2000::/3 | 현재 IANA 전역 유니캐스트 할당의 대표 영역 | 일반적인 인터넷 전역 유니캐스트 배정 영역이지만 내부에 특수 목적 범위가 있을 수 있다. |
2001:db8::/32 | 문서·예제용 | 실제 운영 주소로 배정하지 않는다. |
ff00::/8 | 멀티캐스트 | 플래그와 범위 값을 포함하는 그룹 주소다. |
fec0::/10 사이트 로컬 주소는 폐기된 개념이므로 ULA와 같은 현재 주소로 설명하지 않는다.
링크 로컬과 ULA
- 링크 로컬은 한 링크에서만 유효하며 라우터를 넘어 전달하지 않는다.
- ULA는 조직 내부의 여러 서브넷 사이에서 라우팅할 수 있다.
- 두 주소 모두 일반 공용 인터넷 전역 주소와 목적이 다르지만 범위와 라우팅 가능성이 같지 않다.
- IPv6 인터페이스는 링크 로컬과 전역 또는 ULA 주소를 동시에 가질 수 있다.
IPv6 프리픽스와 자동 설정
IPv6에서 /p는 앞 p비트가 프리픽스임을 뜻한다. 주소 수는 2^(128−p)이다. 예를 들어 /64에는 하위 64비트가 남는다. IPv4의 일반적인 호스트 수 계산처럼 무조건 2를 빼지 않는다. IPv6에는 브로드캐스트 주소가 없다.
일반적인 자동 주소 설정 LAN에서는 /64를 널리 사용하지만 모든 IPv6 경로와 링크의 프리픽스가 반드시 /64인 것은 아니다. /128은 단일 주소를 나타낸다.
IPv6는 ARP 대신 ICMPv6 기반의 이웃 탐색(NDP)을 사용한다. NDP는 이웃의 링크 계층 주소 확인과 라우터 발견 등에 관여한다. SLAAC는 라우터 광고 등을 이용하는 자동 주소 설정 방식이고 DHCPv6는 서버를 이용해 주소나 설정 정보를 제공하는 방식이다. IPv6를 사용한다고 수동 설정이 불가능해지는 것은 아니다.
IPv6 기본 헤더와 IPv4 비교
IPv6 기본 헤더 필드
IPv6 기본 헤더는 고정 40바이트이며 다음 핵심 필드를 가진다.
| 필드 | 역할 |
|---|---|
| Version | IPv6 값 6 |
| Traffic Class | 트래픽 분류와 혼잡 알림 관련 값 |
| Flow Label | 같은 흐름의 패킷 식별을 지원 |
| Payload Length | 기본 헤더 뒤의 페이로드 길이 |
| Next Header | 다음 확장 헤더 또는 TCP·UDP·ICMPv6 같은 상위 프로토콜 식별 |
| Hop Limit | 라우터를 지날 때 감소하는 홉 제한 |
| Source Address | 128비트 출발지 주소 |
| Destination Address | 128비트 목적지 주소 |
IPv4와 IPv6 비교
| 항목 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 기본 표기 | 점으로 구분한 10진수 | 콜론으로 구분한 16진수 |
| 기본 헤더 길이 | 일반적으로 20바이트, 옵션 포함 최대 60바이트 | 고정 40바이트 |
| 헤더 체크섬 | 있음 | 기본 헤더에 없음 |
| 선택 기능 | IPv4 헤더 옵션 | 확장 헤더 연결 |
| 수명 제한 | TTL | Hop Limit |
| 브로드캐스트 | 있음 | 없음 |
| 주소 해석 | ARP | NDP의 NS·NA |
| 자동 구성 | DHCPv4·정적 구성·링크 로컬 등 | SLAAC·DHCPv6·정적 구성 등 |
| 라우터 단편화 | 조건에 따라 가능 | 라우터는 단편화하지 않음 |
단편화 차이
IPv4에서는 DF 설정과 경로 MTU 조건에 따라 중간 라우터가 단편화할 수 있다. IPv6 라우터는 너무 큰 패킷을 직접 조각내지 않고 ICMPv6 Packet Too Big 메시지로 송신 측에 알린다. 필요한 경우 송신 노드가 Fragment 확장 헤더를 사용한다.
따라서 “IPv6는 단편화가 전혀 없다”가 아니라 “중간 라우터가 단편화하지 않는다”가 정확하다.
IPv4·IPv6 전환 방식
IPv4와 IPv6는 헤더와 주소 체계가 달라 한쪽 프로토콜만 지원하는 종단끼리 직접 통신할 수 없는 경우가 있다. 대표 전환 방식은 다음과 같다.
| 방식 | 핵심 원리 | 주의점 |
|---|---|---|
| 듀얼 스택 | 장비가 IPv4와 IPv6를 모두 실행 | 양쪽 주소·보안·운영 정책을 모두 관리해야 한다. |
| 터널링 | 한 프로토콜 패킷을 다른 프로토콜 안에 캡슐화 | 터널 종단과 추가 헤더·MTU를 고려해야 한다. |
| 변환 | IPv4와 IPv6 헤더·주소·프로토콜 표현을 변환 | 종단 간 주소 투명성과 일부 프로토콜 특성이 달라질 수 있다. |
“NAT가 있으므로 IPv6가 필요 없다”, “IPv6를 쓰면 NAT나 보안 정책이 항상 불필요하다”와 같은 절대 표현을 피한다. 주소 공간 확대, 종단 연결성, 보안 정책, 응용 호환성은 서로 다른 판단 항목이다.