우리가 일반적으로 사용하는 IPv4의 경우 IP주소가 40억개쯤 되는데 시간이 많이 지남에 따라 거의 고갈되어 가고 있다.
이를 해결하기 위한 방안을 알아보려고 한다.
DHCP (Dynamic Host Configuration Protocol)
DHCP는 IP 주소를 서버로부터 유동적으로 받는 프로토콜로 다음과 같은 특징이 있다.
- host가 네트워크에 접속하면 서버가 유동적으로 IP 주소를 준다.
- IP 주소를 빌려주고 host가 IP 주소를 재요청하는 방식이다.
- IP 주소를 재사용 할 수 있다.
이러한 방식을 사용하기 때문에 IP 주소 고갈 문제를 어느정도 해결할 수 있다.
host가 IP 주소를 받는 과정은 다음과 같다.
- host가 "DHCP discover" 메시지를 broadcast하여 DHCP 서버를 찾는다. (대부분 서브넷 내부에서 찾음)
- DHCP 서버가 "DHCP offer" 메시지를 보내준다.
- host가 "DHCP request" 메시지를 보내 IP 주소를 요청한다.
- DHCP 서버가 "DHCP ack" 메시지를 보내 IP 주소를 보낸다.
당연하게도 특정 서브넷에서 요청을 보내면 그 서브넷 범위 내의 IP 주소를 받게 된다.
DHCP client-server scenario
Hierarchical addressing
isp의 주소 공간에서 8개의 서브넷으로 나누고 싶다면 어떻게 할까?
네트워크 주소 비트를 3개(2의 3승 = 8) 늘리면 된다.
특정 목적지에 패킷이 도착하려면 ISP 범위에 도착하고 더 좁은 범위의 서브넷에 도착하는 과정을 반복하게 된다.
이렇게 계층화된 구조를 Hierarchical addressing이라고 한다.
다음과 같은 네트워크 구조가 있다고 하자.
이 상황에서 A-ISP에 존재하는 Organization 2가 B-ISP로 이동한다고 할 때 쉽게 옮길 수가 있다.
단순하게 옮긴 후 라우팅 테이블에 값만 추가하면 된다.
그런데 자세히보면 A-ISP의 범위와 Organization 2의 범위가 겹치고 있다.
예를 들어 11001000 00010111 0001xxxx xxxxxxxx 의 경우 A-ISP에도 포함되고 Organization 2에도 포함된다.
이럴 경우 더 구체적인 범위에 속하는 곳부터 확인한다.
즉 IP 주소가 더 구체적인 Organization 2에 포함되면 그에 맞게 라우팅을 하는 것이고 A-ISP에는 포함되나 Organization 2에는 포함되지 않는다면 A-ISP에 맞게 라우팅을 하는 것이다.
NAT (Network Address Transfer)
NAT 또한 IP 주소 고갈 문제를 해결해준다.
공인 IP를 받으면 여기에 여러 기기가 연결될 수 있다.
하나의 공인 IP를 여러 기기가 사용할 수 있는 이유는 NAT 덕분이다.
아래 그림과 같이 여러 개의 기기가 각각 사설 ip를 갖게 된다.
그런데 이렇게 사설 ip를 받은 기기가 http 요청을 보낸다고 할 때 사설 ip를 source로 보낼 수는 없다.
사설 ip는 로컬 네트워크 내부에서 고유한 주소이기 때문이다.
그래서 사설 ip와 공인 ip간 주소를 변환해주는 것이 NAT(Network Address Transfer)이다.
예를 들어서 사설 ip를 가진 기기에서 http 요청을 보내는 과정은 다음과 같다.
NAT translation table에 WAN side addr과 LAN side addr이 매핑되어 공인 ip와 사설 ip간 변환이 가능한 것이다.
자세히보면 source에 포트 번호가 지정된 것을 볼 수 있다.
위 예시에서는 기기가 3개인 것을 볼 수 있는데 로컬 네트워크에서는 이 기기들이 ip 주소로 구분이 된다.
그런데 밖으로 나가는 순간 공인 ip로 변환되는데 이러면 요청에 대한 응답을 받기가 어려워진다.
세 기기의 변환된 공인 ip가 모두 같기 때문이다.
그래서 포트 번호를 사용해서 변환된 공인 ip가 어떤 로컬 기기의 것인지 알 수 있는 것이다.
그런데 포트 번호는 transport layer에서 사용하는 것이다.
그래서 router는 network layer까지만 처리를 해야하는데 transport layer에서 사용하는 포트 번호를 사용하는 것에 대해 논쟁이 있다고 한다.
사설 ip의 종류에는 다음과 같은 것들이 존재한다.
NAT Port Forwarding
NAT 동작 방식을 살펴보면 사설 ip를 사용 중인 기기에서 요청을 보낼 때 NAT translatioin table에 [사설 ip, port]와 [공인 ip, port]가 매핑되어 기록된다.
그래서 요청에 대한 응답을 받을 때 이 매핑 정보를 사용하여 사설 ip를 사용 중인 기기에 무사히 도달할 수 있었다.
이 경우는 사설 ip를 사용하는 기기에서 먼저 요청을 보내야 외부에서 사설 ip를 사용 중인 기기에 도달할 수 있다.
그렇다면 외부에서 바로 사설 ip를 사용 중인 기기에 요청을 보낸다면 어떨까?
당연하게도 NAT translation table에 매핑 정보가 없기 때문에 사설 ip를 사용 중인 기기까지 도달하지 못한다.
이를 해결하기 위한 방법이 NAT port forwarding이다.
NAT port-forwarding table에 매핑 정보를 기록해두는 것이다.
NAT translation table은 임시적인 매핑 정보를 기록하는 것과는 다르게 이 매핑 정보를 계속 유지한다.
'공부 > Network' 카테고리의 다른 글
[Network] Routing Algorithms (0) | 2023.06.10 |
---|---|
[Network] IPv6와 ICMP (0) | 2023.06.08 |
[Network] IP addressing (0) | 2023.06.04 |
[Network] IP fragmentation (0) | 2023.05.31 |
[Network] Network layer(네트워크 레이어)와 Router (0) | 2023.05.29 |
댓글