IP 주소는 인터넷에 붙은 장치마다 매기는 번호로, 패킷이 어느 네트워크의 어느 장치로 가야 하는지 가리킵니다. 지금 널리 쓰는 IPv4는 32비트이고, 주소가 모자라 새로 만든 IPv6는 128비트입니다.
TCP/IP 모델과 주요 프로토콜의 IP는 주소 하나로 '어느 네트워크의 어느 장치인가'를 알아내 패킷을 나릅니다. 아래 그림은 IPv4 주소의 32비트가 네트워크 부분과 호스트 부분으로 갈리는 자리와, IPv6 주소를 줄여 쓰는 규칙을 보여 줍니다.
1IPv4 주소와 클래스
IPv4 주소는 32비트를 8비트씩 넷(옥텟, octet)으로 끊어 10진수로 적고 점으로 잇습니다. 8비트의 자리 값은 왼쪽부터 128·64·32·16·8·4·2·1이라, 192는 128 + 64로 11000000이고 77은 64 + 8 + 4 + 1로 01001101입니다.
앞쪽 네트워크 부분은 어느 네트워크인지, 뒤쪽 호스트 부분은 그 안의 어느 장치인지 가리킵니다. 처음 IPv4는 이 경계를 클래스(class)로 정했고, 클래스는 첫 옥텟의 앞 비트로 갈립니다.
| 클래스 | 앞 비트 | 첫 옥텟 | 네트워크 · 호스트 | 호스트 수 |
|---|---|---|---|---|
| A | 0 | 0~127 | 8 · 24비트 | 2²⁴ − 2 |
| B | 10 | 128~191 | 16 · 16비트 | 2¹⁶ − 2 |
| C | 110 | 192~223 | 24 · 8비트 | 2⁸ − 2 |
| D | 1110 | 224~239 | 멀티캐스트(여러 대에 한꺼번에) | — |
| E | 1111 | 240~255 | 남겨 둠 | — |
2를 빼는 까닭은 서브넷과 CIDR에서 봅니다. 127로 시작하는 주소는 자기 자신을 가리키는 루프백(loopback) 주소라 나눠 주지 않습니다.
2사설 주소와 NAT
IPv4 주소는 2³²개, 약 43억 개뿐이라 모자랍니다. 그래서 인터넷에서 쓰지 않을 범위를 떼어 기관마다 안에서 겹쳐 쓰게 했습니다. 이것이 사설 IP 주소(private IP address)이고, 인터넷에서 쓰는 주소는 공인 IP 주소(public IP address)입니다. 그림의 세 주소가 모두 사설 주소입니다.
| 클래스 | 사설 주소 범위 |
|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 |
| B | 172.16.0.0 ~ 172.31.255.255 |
| C | 192.168.0.0 ~ 192.168.255.255 |
사설 주소로는 인터넷에서 길을 찾을 수 없어, 내부망 출입구의 공유기나 라우터가 네트워크 주소 변환(NAT, Network Address Translation)을 합니다. 나가는 패킷의 출발 주소를 공인 주소로 바꾸고, 돌아온 응답의 도착 주소를 다시 사설 주소로 바꿉니다.
3IPv6 주소
IPv6는 주소를 128비트로 늘렸습니다. 16비트씩 여덟 칸으로 나눠 칸마다 16진수 네 자리(한 자리가 4비트)로 적고 콜론(:)으로 잇습니다. 그림의 주소를 두 줄로 적습니다.
2001:0db8:0000:0000
0000:00ff:0000:0001
줄일 때는 칸마다 앞에 붙은 0을 빼고(00ff → ff), 0만 있는 칸이 이어진 곳을 ::로 줄입니다. ::는 한 번만 쓰고, 이어진 곳이 여럿이면 가장 긴 곳을, 길이가 같으면 앞쪽을 줄입니다. 그림의 주소는 2001:db8::ff:0:1입니다.
| 가르는 기준 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 적는 꼴 | 8비트씩 넷, 10진수, 점 | 16비트씩 여덟, 16진수, 콜론 |
| 주소 종류 | 유니캐스트 · 멀티캐스트 · 브로드캐스트 | 유니캐스트 · 멀티캐스트 · 애니캐스트 |
유니캐스트(unicast)는 한 대에게, 멀티캐스트(multicast)는 한 묶음의 모두에게, 브로드캐스트(broadcast)는 같은 네트워크의 모두에게, 애니캐스트(anycast)는 한 묶음에서 가장 가까운 한 대에게 보냅니다.
예제
첫 옥텟으로 클래스를 가려 보세요.
| 주소 | 첫 옥텟 2진수 | 클래스 |
|---|---|---|
| 126.1.1.1 | 01111110 | A |
| 150.10.20.30 | 10010110 | B |
| 200.1.1.1 | 11001000 | C |
126과 128은 2 차이지만 128부터 첫 비트가 1이라 B입니다.
IPv6 주소도 줄여 보세요.
fe80:0000:0000:0000
0a1b:0000:0000:00c2
칸마다 앞 0을 빼면 fe80:0:0:0:a1b:0:0:c2입니다. 0 줄이 2~4번째 칸(셋)과 6·7번째 칸(둘)이라 긴 쪽만 줄여 fe80::a1b:0:0:c2입니다.
시험 포인트
- 필기: 클래스는 첫 옥텟으로 가립니다 — A 0~127, B 128~191, C 192~223, D 224~239, E 240~255. 사설 주소가 아닌 것을 고르게 합니다 — 172.32는 사설이 아닙니다. IPv6는 128비트이고
::는 한 번만 쓰며, 브로드캐스트가 없고 애니캐스트가 있습니다. - 실기: 이름을 한글 이름과 영문으로 씁니다 — 네트워크 주소 변환(NAT, Network Address Translation), 사설 IP 주소(Private IP Address), IPv6(Internet Protocol Version 6), 유니캐스트(Unicast), 멀티캐스트(Multicast), 브로드캐스트(Broadcast), 애니캐스트(Anycast).
확인 문제
1. 다음 가운데 C 클래스이면서 사설 주소인 것을 고르세요.
- ① 172.20.1.5
- ② 192.168.200.9
- ③ 193.168.1.1
- ④ 10.192.168.1
정답
②입니다. 첫 옥텟 192는 2진수 11000000으로 앞 세 비트가 110이라 C 클래스이고, 192.168로 시작해 사설 주소 범위에 듭니다.
- ① 172.20은 172.16~172.31 안이라 사설 주소이지만, 첫 옥텟 172가 128~191이라 B 클래스입니다.
- ③ 193은 C 클래스이지만 사설 주소는 192.168로 시작하는 것뿐입니다.
- ④ 사설 주소이지만 첫 옥텟 10이 0~127이라 A 클래스입니다. 뒤 옥텟의 192.168에 끌리면 틀립니다.
2. 다음 (가)~(다)에 맞는 이름을 쓰세요. (가)·(나)는 한글 이름과 영문으로 함께, 약어가 있으면 약어와 영문 원어까지 씁니다. (다)는 약어와 영문 원어로 씁니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 회사 안 컴퓨터들은 10.1로 시작하는 번호를 쓰는데, 같은 번호를 다른 회사도 안에서 씁니다. 그래서 이 번호로는 인터넷에서 길을 찾을 수 없습니다.
- (나) (가)의 컴퓨터가 웹 서버에 요청을 보낼 때, 회사 출입구의 라우터가 출발 번호를 회사가 받은 번호 하나로 바꿔 내보내고, 응답이 오면 원래 번호로 돌려 안으로 넣습니다.
- (다) 32비트 번호가 모자라는 문제를 근본에서 풀려고 번호 길이를 네 배로 늘린 판입니다. 16비트씩 여덟 칸을 16진수로 적습니다.
정답
받는 답: (가) 사설 IP 주소(Private IP Address) · (나) 네트워크 주소 변환(NAT, Network Address Translation) · (다) IPv6(Internet Protocol Version 6)
(가)의 실마리는 '여러 회사가 같은 번호를 안에서 겹쳐 쓴다', (나)는 '나갈 때 출발 주소를 바꾸고 돌아올 때 되돌린다', (다)는 '128비트 · 16진수 여덟 칸'입니다.
- 같은 이름의 다른 꼴: (나) NAT만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
- 틀리는 꼴 공인 IP 주소 — (가)에: 인터넷에서 쓰는, 겹치지 않는 주소입니다. 다른 회사와 겹쳐 쓰는 쪽은 사설 주소입니다.
- 틀리는 꼴 IPv6 — (나)에: 주소를 128비트로 늘려 모자람을 푸는 길입니다. 이미 있는 주소를 바꿔 끼우는 일은 NAT입니다.
- 틀리는 꼴 IPv4 — (다)에: 모자라게 된 쪽, 곧 32비트 주소입니다.
3. 다음 (가)~(라)는 데이터를 받는 쪽을 정하는 방식입니다. 이름을 한글 이름과 영문으로 함께 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 같은 서비스를 하는 서버 여러 대가 한 주소를 나눠 갖고, 요청은 그 가운데 가장 가까운 한 대로 갑니다. IPv6가 주소 종류로 따로 정해 둔 방식입니다.
- (나) 같은 네트워크에 있는 장치 모두에게 한꺼번에 보냅니다. IPv6에는 없습니다.
- (다) 화상 강의를 신청한 장치들만 한 묶음으로 받습니다.
- (라) 내 컴퓨터가 웹 서버 한 대에게만 요청을 보냅니다.
정답
받는 답: (가) 애니캐스트(Anycast) · (나) 브로드캐스트(Broadcast) · (다) 멀티캐스트(Multicast) · (라) 유니캐스트(Unicast)
(가)의 실마리는 '여러 대 가운데 가까운 한 대', (나)는 '네트워크의 모두', (다)는 '신청한 묶음만', (라)는 '한 대에게만'입니다.
- 틀리는 꼴 멀티캐스트 — (가)에: 묶음에 든 모두가 받습니다. (가)는 그 가운데 한 대만 받습니다.
- 틀리는 꼴 멀티캐스트 — (나)에: 묶음에 들기로 한 장치만 받습니다. (나)는 가리지 않고 네트워크의 모두가 받습니다.
4. 다음 IPv6 주소를 본문의 규칙대로 줄여 쓰세요. 위 줄이 앞 네 칸, 아래 줄이 뒤 네 칸입니다. 답을 끝까지 쓴 뒤 정답을 펼치세요.
2001:0db8:0000:0000
0001:0000:0000:0001
정답
받는 답: 2001:db8::1:0:0:1
칸마다 앞 0을 빼면 2001:db8:0:0:1:0:0:1입니다. 0만 이어진 곳이 3·4번째 칸과 6·7번째 칸으로 길이가 같으므로, 앞쪽을 ::로 줄입니다.
- 틀리는 꼴
2001:db8:0:0:1::1: 뒤쪽을 줄였습니다. 길이가 같으면 앞쪽을 줄입니다. - 틀리는 꼴
2001:db8::1::1:::를 두 번 썼습니다. 어느 쪽에 0이 몇 칸씩 있었는지 알 수 없어 주소가 되지 않습니다. - 틀리는 꼴
2001:0db8::0001:0:0:0001: 칸 앞의 0을 빼지 않았습니다.