IP주소는 '인터넷 계층'에서 쓰인다.
ARP(Address Resolution Protocol)
컴퓨터와 컴퓨터가 통신하는 것에 대해서, 흔히 IP주소를 기반으로 통신한다고 알고 있지만, 정확히 이야기 하면, 'IP주소에서 ARP를 통해 MAC주소를 찾아, MAC주소를 기반으로 통신'하는 것이다.
ARP(Address Resolution Protocol)이란, IP주소로부터 MAC주소를 구하는 IP와 MAC주소의 다리 역할을 하는 프로토콜이다.
ARP를 통해 '가상주소인 IP주소를 실제 주소인 MAC주소로 변환'한다.
이와 반대로 RARP를 통해 실제 주소인 MAC주소를 가상주소인 IP주소로 변환하기도 한다.
예로들면, A라는 장치가 ARP Requeest 브로드캐스트를 보내서 IP주소인 120.12.13.3에 해당하는 MAC 주소를 찾는다. 그리고 해당 주소에 맞는 B라는 장치가 ARP Reply 유니캐스트를 통해 MAC주소를 반환하는 과정을 거쳐 IP주소에 맞는 MAC주소를 찾게 되는 것이다.
홉바이홉 통신
IP주소를 통해 통신하는 과정을 '홉바이홉 통신'이라고 한다. 여기서 '홉(hop)'이란, 영어 뜻은 건너뛰는 것을 의미하는데, 이는 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습을 비유적으로 표현한 것이라 생각하면 쉽다.
수많은 서브네트워크 안에 있는 라우터의 라우팅 테이블IP를 기반으로 패킷을 전달하고 또 전달하며 라우팅으로 수행하여 결국 최종 목적지까지 패킷을 전달하게 된다.
즉, 통신 장치에 있는 '라우팅 테이블'의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속해서 이동하는 '라우팅 과정'을 거쳐, 패킷이 최종 목적지까지 도달하게 하는 통신을 말한다.
'라우팅 테이블(routing table)'은 송신지에서 수신지까지 도달하기 위해 사용되며, 라우터에 들어가 있는 목적지 정보들과 그 목적지로 가기 위한 방법이 들어 있는 리스트를 뜻한다. 라우팅 베이블에는 게이트웨이와 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보를 가지고 있다.
'게이트웨이(gateway)'는 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터나 소프트웨어를 루두 일컫는 용어이다.
사용자는 인터넷에 접속하기 위해 수많은 게이트웨이를 거치게 된다. 또한, 게이트웨이는 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할을 하기도 한다.
게이트웨이를 확인하는 방법은 라우팅 테이블을 통해 볼 수 있으며, 라우팅 테이블은 윈도우 명령 프롬프트에서 netstat -r 명령어를 통해 확인해볼 수 있다.
IP주소 체계
IP주소는 'IPv4'와 'IPv6'로 나뉜다.
IPv4는 32비트를 8비트 단위로 점을 찍어 표기하며, 123.45.67.89 와 같은 방식으로 IP주소를 나타낸다.
IPv6는 64비트를 16비트 단위로 점을 찍어 표기하며, 2001:db8:ff00:42:8329 와 같은 방식으로 IP주소를 나타낸다.
추세는 IPv6로 가고는 있지만, 아직도 현재 가장 많이 쓰이는 주소 체계는 IPv4이다.
IP주소 체계는 계속해서 발전해오고 있으며, 처음에는 A,B,C,D,E 다섯 개의 클래스로 구분하는 '클래스 기반 할당 방식(classful network addressing)'을 썼다.
앞에 있는 부분을 네트워크 주소, 그 뒤에 있는 부분을 컴퓨터에 부여하는 주소인 호스트 주소로 놓아서 사용한다.
아래는 클래스 기반 할당 방식에 대해 직접 만들어본 자료이다.
클래스 A,B,C는 일대일 통신으로 사용되고, 클래스 D는 멀티캐스트 통신, 클래스 E는 앞으로 사용할 예비용으로 쓰는 방식이다.
클래스 A의 경우에는 0.0.0.0부터 127.255.255.255까지의 범위를 갖는다.
클래스 기반 할당 방식 상세를 표시해보면 아래와 같다.
그림의 맨 왼쪽에 있는 비트를 '구분 미트'라고 한다. 클래스A의 경우 맨 왼쪽에 있는 비트가 0이다. 클래스 B는 10이고, 클래스C는 110이다. 이를 통해 클래스 간 IP가 나눠지는 것이다. 다른 네트워크도 위와 같은 식의 주소 범위를 가진다고 생각하면 된다.
또한, 네트워크의 첫 번째 주소는 네트워크 주소로 사용되고, 가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용된다.
예를들어 클래스A로 12.0.0.0이라는 네트워크를 부여받았다고 해보자. 그러면 12.0.0.1~12.255.255.254의 호스트 주소를 부여받은 것이다. 이때 첫 번째 주소인 12.0.0.0은 네트워크 구별 주소로 사용하면 안 되고 가장 마지막 주소인 12.255.255.255의 경우에는 브로드캐스트용으로 남겨두어야 하니 사용하면 안된다. 즉, 그 사이에 있는 12.0.0.1 ~ 12.255.255.254를 컴퓨터에 부여할 수 있는 호스트 주소로 사용할 수 있다.
읽으면서도 느꼈겠지만, 이 방식은 사용하는 주소보다 버리는 주소가 많은 단점이 있어, 이를 해소하기 위해 DHCP, IPv6, NAT이 나오게 되었다.
'DHCP(Dynamic Host Configuration Protocol)'는, IP주소 및 기타 통신 매개변수를 '자동으로 할당'하기 위한 네트워크 관리 프로토콜이다. 이 기술을통해 네트워크 장치의 IP주소를 수동으로 설정할 필요없이 인터넷에 접속할 때마다 자동으로 IP주소를 할당할 수 있게 된다.
많은 라우터와 게이트웨이 장비에 DHCP기능이 있으며, 이를 통해 대부분의 가정용 네트워크에서는 IP주소를 할당한다.
'NAT(Network Address Translation)'은 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP주소 정보를 수정하여 IP주소를 다른 주소로 매핑하는 방법이다. IPv4주소 체계만으로는 많은 주소들을 감당하지 못하는 단점이 있는데, 이를 해결하기 위해 NAT으로 공인IP와 사설IP로 나눠 많은 주소를 처리한다. NAT을 가능하게 하는 소프트웨어는 ICS, RRAS, Netfilter 등이 있다.
이해를 돕기 위해 실제 예시를 들면, NAT를 쓰는 이유는 주로 여러 대의 호스트가 하나의 공인IP 주소를 사용하여 인터넷에 접속하기 위함이다. 인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있는데, 이는 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문이다.
NAT를 이용하면 내부 네트워크에서 사용하는 IP주소와 외부에 드러나는 IP주소를 다르게 유지할 수 있기 때문에 내부 네트워크에 대한 어느 정도의 보안이 가능해진다.
NAT은 여러 명이동시에 인터넷을 접속하게 되어 실제로 접속하는 호스트 숫자에 따라 접속 속도가 느려질 수도 있는 단점이 존재하긴 하다.
IP주소를 이용한 위치 정보
IP주소는 인터넷에서 사용하는 네트워크 주소이기 때문에 이를 통해 동, 구까지 위치 추적이 가능하다. 아래 사이트는 IP주소를 기반으로 위치를 찾는 사이트이다.