IPv6 : 128비트를 16비트 단위로 구분해서 표기 (2001:db8::ff00:42:8329)
IPv6로 전환하는 추세긴 하지만, 여전히 IPv4가 가장 많이 쓰인다.
* * *
과거에는 IPv4 주소를 클래스 단위로 할당했다. IP 주소를 네트워크 주소와 호스트 주소로 나누고, 네트워크 규모에 따라서 클래스 A, B, C, D, E 로 구분하는 클래스 기반 할당 방식 을 썼다.
네트워크 주소 : 어떤 네트워크인가?
호스트 주소 : 해당 네트워크 안의 어떤 장치인가?
클래스 A, B, C에서는 각각 네트워크 주소로 앞의 1바이트, 2바이트, 3바이트를 사용한다.
[클래스 A]
네트워크 주소 | 호스트 주소
8비트 | 24비트
10 | 0.0.1
[클래스 B]
네트워크 주소 | 호스트 주소
16비트 | 16비트
172.16 | 0.1
[클래스 C]
네트워크 주소 | 호스트 주소
24비트 | 8비트
192.168.0 | 10
일반적인 IPv4 네트워크에서는 첫 번째 주소는 네트워크 주소로 사용되고, 가장 마지막 주소는 브로드캐스트용 주소로 네트워크에 속해 있는 모든 컴퓨터에 데이터를 보낼 때 사용된다.
클래스 기반 할당 방식의 문제점은 선택지가 너무 거칠다는 것이다.
클래스 C : 하나의 네트워크에 약 254개 주소
클래스 B : 하나의 네트워크에 약 65,534개 주소
예를 들어서 장치 300개에 주소를 할당해야 한다면 클래스 C는 부족하다. 그렇다고 클래스 B를 할당하면 사용하지 않는 나머지의 주소들을 낭비하게 된다. 고정된 크기의 주소 묶음을 할당해야 하기 때문에 네트워크의 크기를 세밀하게 조절하기 어려워 사용하지 않는 주소가 많이 발생한다는 문제가 발생한다.
이 문제를 해결하기 위해서 현재는 클래스 기반 방식 대신 CIDR(Classless Inter-Domain Routing) 을 사용한다. CIDR은 /24 같은 접두사 길이를 이용해서 네트워크 크기를 더 유연하게 지정할 수 있는 방법이다.
CIDR에서는 네트워크 주소로 사용할 비트 수를 /숫자 로 직접 표현한다.
192.168.0.0/24
/24는 앞의 24비트를 네트워크 주소로 사용한다는 의미이다.
네트워크 주소
호스트 주소
앞의 24비트
나머지 8비트
192.168.0
0
바이트 단위가 아닌 비트 단위로 네트워크 주소의 범위를 지정하기 때문에, 클래스 기반 할당 방식과는 달리 8비트 단위가 아닌 경계도 사용할 수 있다는 이점이 있다.
192.168.0.0/26
네트워크 주소 : 192.168.0.0
사용 가능한 주소 : 192.168.0.1 ~ 192.168.0.62
브로드캐스트 주소 : 192.168.0.63
* * *
DHCP(Dynamic Host Configuration Protocol) 는 장치에 IP 주소와 네트워크 설정을 자동으로 할당하는 네트워크 관리 프로토콜이다. 이걸 통해서 네트워크 장치의 IP 주소를 직접 수동으로 설정할 필요가 없게 되었다.
장치가 네트워크에 연결되면 DHCP 서버로부터 일정 기간 사용할 설정을 받는다.
IP 주소
서브넷 마스크
기본 게이트웨이
DNS 서버 주소
가정에서는 일반적으로 공유기가 DHCP 서버의 역할을 수행한다.
* * *
NAT(Network Address Translation) 은 패킷의 IP 주소를 다른 IP 주소로 변환하는 기술이다.
IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 문제가 있는데, 이를 해결할 수 있는 방법 중 하나가 NAT를 이용해서 주소들을 공인 IP와 사설 IP로 나누어서 처리하는 것이다.
가정용 네트워크를 예를 들면, 각 장치가 사설 IP 주소를 사용한다.
장치가 인터넷에 요청을 보내면, 공유기는 사설 IP 주소를 공인 IP 주소로 변환한다. 그리고 응답이 돌아오면 변환 기록을 확인해서 요청을 보낸 장치에 응답을 전달한다.
노트북
192.168.0.10
↓
공유기에서 주소 변환
↓
공인 IP 주소
↓
인터넷
NAT를 사용하면 내부의 사설 IP 주소가 외부에 직접 노출되지 않는다. 하지만 보안 기능이라고 하기는 어렵고, 외부 접근을 통제하는 역할은 방화벽이 담당한다.
NAT의 주요 단점은 여러 장치가 하나의 인터넷 회선을 함께 사용하면서 속도가 느려질 수 있다는 것과, 주소 변환이라는 하나의 단계가 추가된다는 것과, 외부에서 내부 장치로 직접 연결하기 어려워진다는 것이 있다.