[Network] 네트워크 기초 이론 4강 — IPv4 주소 체계, 네트워크 ID와 서브넷 마스크
네트워크 기초 이론 시리즈 정리 — 4강. 참고: 널널한 개발자 TV, IPv4주소 체계에 대한 암기사항 (재생목록)
IP 주소가 호스트를 식별한다는 것까지는 앞에서 정리했다. 이번에는 그 IP 주소가 어떻게 생겼고, 어떤 구조로 쪼개지는지를 본다. 서브넷 마스크가 무엇인지가 이 편의 목적지다.
IP 주소는 호스트의 주민등록번호다
행정 체계에 비유하면 이해가 빠르다.
| 현실 | 네트워크 |
|---|---|
| 대한민국의 행정 체계 | 네트워크(인프라) |
| 개인 | 호스트 |
| 주민등록번호 | IP 주소 |
체계 안에서 개인을 유일하게 식별하기 위해 주민등록번호를 쓰듯이, 네트워크 안에서 호스트를 유일하게 식별하기 위해 IP 주소를 쓴다.
IP는 Internet Protocol의 약자다. 프로토콜은 통신 규약, 즉 규칙이다.
버전은 둘 — IPv4와 IPv6
| 주소 길이 | 전체 경우의 수 | |
|---|---|---|
| IPv4 | 32비트 | 2³² ≈ 42.9억 |
| IPv6 | 128비트 | 2¹²⁸ |
IPv5는 없다. v4 다음이 v6다.
둘의 가장 큰 차이는 주소 길이다. 이 두 숫자(32비트 / 128비트)는 최소한의 암기 대상이다.
IPv4의 주소 공간은 2³² = 4,294,967,296개, 즉 43억이 채 되지 않는다. 인터넷에 참여할 수 있는 호스트 수가 그만큼으로 제한된다는 뜻이다. 전 세계 컴퓨터가 43억 대보다 적을 리 없고, 한 사람이 여러 대를 쓰기까지 하니 주소는 이미 한참 모자란다. 그럼에도 인터넷이 도는 것은 NAT 같은 기술로 버티고 있기 때문이다.
그럼에도 현재 인터넷의 주류는 여전히 IPv4다. IPv6를 쓰는 구간이 있지만 아직 일반적이지 않다.
표기법 — 8비트씩 네 덩이
내 IP 주소를 직접 보려면 명령 하나면 된다.
ipconfig # Windows
ip addr # Linux
이런 값이 나온다.
IPv4 주소 . . . . . : 192.168.60.14
서브넷 마스크 . . . : 255.255.255.0
기본 게이트웨이 . . : 192.168.60.1
192.168.60.14를 보면 점이 3개, 숫자 덩이가 4개다. 각 덩이에 올 수 있는 값의 범위는 0~255, 즉 2⁸ = 8비트다.
8비트 × 4덩이 = 32비트
40억이 넘는 숫자 하나를 그대로 외우는 것보다, 8비트씩 끊어 점으로 구분하는 편이 표기와 관리에 편하기 때문에 이렇게 쓴다.
2진수로 바꿔 볼 줄 알아야 한다
서브넷 마스크를 이해하려면 각 덩이를 2진수로 바꿔 보는 감각이 필요하다.
| 10진수 | 2진수 | 16진수 |
|---|---|---|
| 192 | 11000000 |
0xC0 |
| 255 | 11111111 |
0xFF |
| 14 | 00001110 |
0x0E |
| 0 | 00000000 |
0x00 |
8비트 자리값은 왼쪽부터 128 64 32 16 8 4 2 1이다. 192는 128 + 64이므로 앞의 두 비트만 1이다.
IP 주소는 둘로 나뉜다 — 네트워크 ID와 호스트 ID
IP 주소는 하나의 통짜 번호가 아니다. 앞뒤 두 부분으로 나뉜다.
192.168.60.14
└─── 네트워크 ID ───┘└ 호스트 ID ┘
- 네트워크 ID — 어느 네트워크에 속하는가
- 호스트 ID — 그 네트워크 안에서 어느 호스트인가
중요한 것은 자르는 위치가 고정이 아니라는 점이다. 어디서 자를지는 주소 자체를 봐서는 알 수 없다.
길이로만 보면 이렇다. IP 주소는 32비트이므로,
호스트 ID 길이 = 32 − 네트워크 ID 길이
네트워크 ID가 24비트면 호스트 ID는 8비트다.
서브넷 마스크 — 네트워크 ID의 길이
그래서 자르는 위치를 알려 주는 값이 따로 필요하다. 그것이 서브넷 마스크(넷마스크)다.
서브넷 마스크는 IP 주소에서 네트워크 ID의 길이를 나타낸다.
255.255.255.0을 2진수로 펼치면 이렇다.
11111111 11111111 11111111 00000000
└──────── 1이 24개 ───────┘└ 0이 8개 ┘
1이 연속으로 24개 — 네트워크 ID가 24비트라는 뜻이다. 남은 8비트가 호스트 ID다.
네트워크 ID 구하기 — AND 연산
IP 주소와 서브넷 마스크를 비트 AND 하면 네트워크 ID가 떨어진다. AND는 양쪽 모두 1일 때만 1이다.
IP 192.168.60.14 11000000 10101000 00111100 00001110
마스크 255.255.255.0 11111111 11111111 11111111 00000000
─────────────── AND ───────────────
결과 192.168.60.0 11000000 10101000 00111100 00000000
마스크가 1인 자리는 원래 비트가 그대로 남고, 0인 자리는 무조건 0이 된다. 그래서 마지막 8비트(호스트 ID)가 통째로 지워지고 네트워크 ID 192.168.60.0 만 남는다.
이것이 서브넷 마스크가 하는 일의 전부다. 네트워크 부분만 남기고 호스트 부분을 덮어 가린다(mask).
CIDR 표기 — /24
255.255.255.0이라고 매번 쓰는 건 번거롭다. 어차피 1의 개수가 정보의 전부이므로, 그 개수만 슬래시 뒤에 붙여 쓴다.
192.168.60.14/24
이 표기를 보면 바로 읽어낼 수 있다.
- 네트워크 ID는 앞의 24비트
- 호스트 ID는 나머지 8비트
- 네트워크 ID는
192.168.60.0
이 표기법의 이름은 CIDR(Classless Inter-Domain Routing, 사이더) 표기다. "클래스가 없다"는 이름 그대로, 예전에 주소를 A/B/C 클래스로 나눠 네트워크 ID 길이를 8·16·24비트로 못 박던 방식을 버리고 길이를 자유롭게 정하는 방식이다.
정리
- IP = Internet Protocol. IPv4는 32비트, IPv6는 128비트. v5는 없다.
- IPv4의 주소 공간은 2³² ≈ 43억 미만이라 이미 부족하다. 그래도 현재 주류는 IPv4다.
- 표기는 8비트씩 4덩이, 각 덩이는 0~255.
- IP 주소는 네트워크 ID + 호스트 ID로 나뉘고, 자르는 위치는 고정이 아니다.
- 서브넷 마스크는 네트워크 ID의 길이를 나타낸다. IP와 마스크를 AND 하면 네트워크 ID가 나온다.
- 마스크의 1 개수만 적는
/24표기를 CIDR 표기라고 한다.
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.