[CS] 네트워크 - IP 주소(ARP, 홉바이홉 통신, IP 주소 체계)
네트워크 - IP 주소
1. ARP(Address Resolution Protocol, 주소 결정 프로토콜)
1-1. ARP의 개념
- ARP란 IP 주소를 MAC 주소(물리적 네트워크 주소)와 매칭/대응 시키기 위한 프로토콜이다.
- IP 주소(Internet Protocol Address): 인터넷에 연결되어 있는 모든 호스트나 라우터 장비의 인터페이스에 할당된 논리적인 가상의 주소이다.
- MAC 주소(Media Access Control Address): 물리적 네트워크 주소라고도 하며, 이더넷 또는 데이터 링크 계층에서 사용하는 NIC(Network Interface Card)에 할당된 고유 식별 번호(주소)이다.
- 컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신한다.
- ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환한다. 이와 반대로 RARP(Reverse ARP)를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 한다.
1-2. ARP의 주소를 찾는 과정
- 송신지가 목적지 IP 주소를 지정해 패킷을 송신하는데, ARP request 메시지를 생성하여 Broadcast한다.
- Network Switch 장비에서 목적지 단말로 ARP request 메세지를 전송한다.
- 목적지 IP 주소에 해당하는 단말은 ARP reply를 생성하고 Unicast하여 자신의 MAC 주소를 반환한다.
- 송신지에서 ARP reply 메시지를 받아, 목적지 MAC 주소를 확인하고 ARP table에 업데이트한다.
- cf. 용어 정리
- 브로드캐스트(broadcast): 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에게 전송되는 방식
- 유니캐스트(unicast): 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 데이터를 전송하는 방식
- ARP table: IP 주소와 MAC 주소를 1:1 대응하여 정리한 테이블을 말한다.
2. 홉바이홉(Hop-by-hop) 통신
2-1. 홉바이홉 통신의 개념
- 홉바이홉 통신이란 IP 주소를 통해 통신하는 과정을 말한다.
- 홉(hop)이란 사전적 의미로는 '한 발로 깡충깡충 뛰다', '휙휙 바꾸다' 등의 뜻을 가지는데, 이는 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것이다.
- 수많은 서브 네트워크 속에서 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 또 전달해나가며 라우팅을 수행하며 최종 목적지까지 패킷을 전달한다.
- 즉, 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적지까지 도달하는 통신을 말한다.
- cf. 라우팅(routing): IP 주소를 찾아가는 과정을 말한다.
2-2. 라우팅 테이블(Routing table)
- 라우팅 테이블은 송신지에서 수신지까지 도달하기 위해 사용되며, 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 말한다.
- 라우팅 테이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 갖고 있다.
2-3. 게이트웨이(Gateway)
- 게이트웨이는 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 두루 일컫는 용어이다.
- 사용자는 인터넷에 접속하기 위해 수많은 톨게이트인 게이트웨이를 거쳐야 하며 게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할을 하기도 한다.
- 게이트웨이를 확인하는 방법은 라우팅 테이블을 통해 볼 수 있으며 라우팅 테이블은 윈도우 명령 프롬프트에서
$ netstat -r
명령어를 실행하여 확인할 수 있다.
- 해당 프롬프트에서 'IPv4 경로 테이블', 'IPv6 경로 테이블'이 바로 라우팅 테이블이며, 해당 테이블들 내에 게이트웨이 및 인터페이스 등을 확인할 수 있다.
3. IP 주소 체계
- IP 주소는 IPv4와 IPv6로 나뉜다.
- IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며,
123.45.67.89
같은 방식으로 IP 주소를 나타낸다.
- IPv6는 64비트를 16비트 단위로 점을 찍어 표기하며,
2001:db8:ff00:42:8329
같은 방식으로 IP 주소를 나타낸다.
3-1. 클래스 기반 할당 방식(Classful network addressing)
- 클래스 기반 할당 방식의 개념
- IP 주소의 체계는 처음에는 A, B, C, D, E 다섯 개의 클래스로 구분하는 클래스 기반 할당 방식을 썼다. 앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.
클래스 A, B, C
는 일대일 통신으로 사용된다.
클래스 D
는 멀티캐스트 통신, 클래스 E
는 앞으로 사용할 예비용으로 쓰는 방식이다.
- 각 클래스별 사용 가능한 IP 주소의 수
- 클래스 A는 네트워크가 가질 수 있는 호스트 수가 약 1,600만 개로 A,B,C클래스 중 가장 많다. 클래스 B는 약 6만 5천개, 클래스 C는 약 250개의 호스트 주소를 가질 수 있다.
- 각 클래스별 IP 주소의 구분
- 각 클래스 IP 주소의 범위는 첫 번째 옥텟(octet)의 구분비트를 보면 구별이 가능하다.
- 클래스 A의 경우 구분비트가 0, 클래스 B는 10, 클래스 C는 110이다.
- cf. 옥텟(octet): 8개의 비트가 한데 모인 것을 말한다.
- cf. 구분비트: 맨 왼쪽에 있는 비트를 말한다.
- 각 클래스의 IP 주소의 범위 (2진수 / 10진수)
클래스 B
- 00000000.00000000.00000000.00000000 ~ 01111111.11111111.11111111.11111111
- 0.0.0.0 ~ 127.255.255.255
클래스 B
- 10000000.00000000.00000000.00000000 ~ 10111111.11111111.11111111.11111111
- 128.0.0.0 ~ 191.255.255.255
클래스 C
- 11000000.00000000.00000000.00000000 ~ 11011111.11111111.11111111.11111111
- 192.0.0.0 ~ 223.255.255.255
클래스 D
- 224.0.0.0 ~ 239.255.255.255
클래스 E
- 240.0.0.0 ~ 254.255.255.254
- 클래스 기반 할당 방식 구체적으로 어떻게 할당될까?
- 만약, 클래스 A로 12.0.0.0이라는 네트워크를 부여 받았다면?
- 첫 번째 주소인
12.0.0.0
는 네트워크 구별 주소이다.
12.0.0.1 ~ 12.255.255.254
까지가 컴퓨터에 부여 가능한 호스트 주소이다.
- 마지막 주소인
12.255.255.255
는 브로드캐스트용 주소이다.
- 클래스 기반 할당 방식의 단점: 사용하는 주소보다 버리는 주소가 많다는 것이다. IP 주소는 급격히 소진되고 낭비되는 문제가 있었다.
- 클래스 기반 할당 방식을 개선한 DHCP, IPv6, NAT, CIDR 등의 방식이 등장했다.
3-2. DHCP(Dynamic Host Configuration Protocol)
- DHCP(동적 호스트 구성 프로토콜)은 IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜이다.
- 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소를 할당할 수 있다.
- 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며 이를 통해 대부분의 가정용 네트워크에서 IP 주소를 할당한다.
3-3. NAT(Network Address Translation)
- NAT(네트워크 주소 변환)이란?
- NAT은 패킷이 라우팅 장비를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법이다.
- IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 단점이 있는데, 이를 해결하기 위해 NAT으로 공인 IP와 사설 IP로 나눠서 많은 주소를 처리한다.
- NAT을 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter 등이 있다.
- NAT을 사용하는 목적: 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다. 예를 들어 인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있는데, 이것이 가능한 이유는 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.
- 위 그림처럼, 내부적으로는 사설(private) IP인 192.168.0.x를 기반으로 PC 1, 2, 3이 각각의 IP를 가지고 있다.
- 그리고 Router의 NAT을 통해 하나의 공인(public) IP인 150.65.0.1으로 외부 인터넷에 요청할 수 있다.
- 따라서 하나의 공인 IP를 통해 각각의 다른 IP를 가지는 것처럼 사용 가능하다. 이와 같이 NAT을 통해 사설 IP와 공인 IP를 양방향적으로 변환 할 수 있다.
- NAT을 이용한 보안: 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있기에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
- NAT의 단점: NAT은 여러 명이 동시에 인터넷 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라서 접속 속도가 느려질 수 있다.
cf. 특수 용도 주소
주소 대역 | 용도 |
---|
0.0.0.0/8 | 자체 네트워크 |
10.0.0.0/8 | 사설 네트워크 |
127.0.0.0/8 | 루프백(loopback) 즉, 자기자신 |
169.254.0.0/16 | 링크 로컬(link local) |
172.16.0.0/12 | 사설 네트워크 |
192.0.2.0/24 | 예제 등 문서에서 사용 |
192.88.99.0/24 | 6to4 릴레이 애니캐스트 |
192.168.0.0/16 | 사설 네트워크 |
198.18.0.0/15 | 네트워크 장비 벤치마킹 테스트 |
224.0.0.0/4 | 멀티캐스트 |
240.0.0.0/4 | 미래 사용 용도로 예약 |
Reference.