우보천리 개발

[3. Network Layer] NAT and DHCP 본문

Computer Science/네트워크

[3. Network Layer] NAT and DHCP

밥은답 2023. 5. 1. 19:56
반응형

1. 네트워크 주소 변환 (Network Address Translation)

NAT는 IP Datagram안에 들어있는 출발지, 목적지, 포트번호 등을 바꿔서 재기록하여 패킷을 전달하는 방식이다.

현재 상용되고 있는 IPv4의 주소는 부족한 상황이지만 IPv6로 넘어가지 않고 사용할 수 있는 이유는 NAT가 있기 때문이다.

 

NAT 라우터가 갖고 있는 IP 주소는 Globally unique하다고 할 수 있지만 NAT 뒤에 있는 주소들은 unique하지 않고 내부에서만 unique 하다. 즉 NAT 뒤에 있는 네트워크에서 보낸 패킷을 NAT 과정 없이 바깥으로 전달 된다면 처리할 수 없게 된다. 왜냐하면 어딘가에는 똑같은 주소를 사용하고 있는 네트워크가 있을 수 있기 때문이다.

 

NAT 작동

10.0.0.1 주소를 갖고 있는 Host A가 128.119.40.186의 주소를 가진 웹서버(포트 80)을 요청한다고 가정한다.

그럼 출발지 S는 A의 주소고 목적지 D는 요청한 페이지의 주소이다. 하지만 이 출발지 주소를 그대로 내보낸다면 유일한 주소가 아니기 때문에 처리되지 못하게 될 것이다. 그래서 라우터의 NAT Table을 거칠때 NAT Table에 새로운 출발지와 포트번호를 기록하고 내보낸다.

 

즉 라우터를 거친 주소는 출발지 S=10.0.0.1, 3345에서 S=138.76.29.7, 5001으로 변경한다.

웹서버 입장에서는 NAT로 변환된 주소를 받았기 때문에 응답을 보낼 때 D=138.76.29.9, 5001로 보내게 된다. 해당 데이터그램은 역시 Host A로 부터 패킷이 나갈 때 기록된 테이블을 참조하여 이 IP 주소가 어느 Host의 것인지 확인하고 포트번호를 통해서 옳바른 호스트로 전달이 된다. 

 

NAT 문제점

NAT의 문제점으로는 NAT뒤에 있는 호스트들은 서버를 실행할 수 없다는 것이다. NAT 뒤에 있는 IP 주소들은 globally unique한 주소들이 아니기 때문에 외부에서 찾아올 방법이 없다.

거기에 더해 서버의 입장이라면 클라이언트의 요청을 기다려야하지만, 라우터 밖으로 나간적이 없기 때문에 외부에서 찾아올 방법이 없다. 해결책으로는 직접 NAT Table에 주소를 적어주는 방식이 있지만 쉬운 방법은 아니고 사실상 불가능이라고 봐도 된다.

 

다른 문제점으로는 NAT의 계층위반이다.

NAT는 IP주소와 TCP의 주소를 수정한다. 라우터는 네트워크 계층의 장비여서 네트워크 계층의 패킷까지만 처리해야하는데, 상위 계층의 패킷에 대해 수정을 하고 있다. 

어떤 프로세스로 가야하는지 판별하기 위한 포트번호도 NAT에서는 IP주소와 포트번호로 알맞는 호스트를 찾는데 사용하고 있다.

 


 

2. Dynamic Host Configuration Protocol (DHCP)

DHCP는 자동적으로 IP주소를 얻게 도와주며 이는 plug and play 또는 zero configuration protocol 이라고 불린다.

DHCP가 있기 때문에 우리는 어디서 네트워크를 연결해도 수동적으로 IP주소를 입력하지 않아도 된다.

DHCP는 IP주소 뿐만 아니라 서브넷 마스크, DNS Server, 게이트웨이 정보등도 알려주기 때문에 우리가 네트워크를 사용할 수 있게 도와준다.

 

DHCP 작동

컴퓨터 네트워킹 하향식 접근

 

DHCP는 클라이언트-서버 프로토콜이다.

새로 도착한 DHCP 클라이언트는 DHCP 서버와 연결된다.

 

1. DHCP Discover Message : 새로 들어온 DHCP 클라이언트는 현재 자신의 IP 주소가 없기 때문에 src: 0.0.0.0, 68을 출발지로 갖는다. 또한 DHCP 서버에 대한 정보도 없기 때문에 브로드캐스트 주소인 255.255.255.255로 메시지를 내보낸다. 브로드캐스트로 전송하지만 포트번호는 67(DHCP 서버)이기 때문에 DHCP 서버를 제외한 다른 이들은 해당 메시지를 무시하게 된다.

 

2. DHCP Offer : DHCP 서버는 Discover 메시지를 받으면 Offer 메시지로 응답하게 된다. 이때 역시 목적지 주소는 브로드캐스트를 통해서 서브넷에 속한 노드들에게 전달이 된다. 이유는 아직 클라이언트는 IP 주소가 없기 때문이다. 여기서 클라이언트가 이 메시지가 자신의 메시지를 알기 위해서는 transaction ID 부분을 보면 된다. Offer 메시지에는 IP주소를 비롯한 여러 정보를 제공받게 된다.

 

3. DHCP Request : 요청 메시지를 통해서 클라이언트는 많은 DHCP 서버가 보낸 요청 중 하나를 선택하여 응답할 것이다. 이때도 브로드캐스트를 통해서 알리는데 그 이유는 이제 다른 DHCP 서버들에게 자신은 선택을 했다는 것을 알리고 제공받은 다른 DHCP Offer 메시지를 Release할 수 있게 해준다.

 

4. DHCP ACK: 마지막으로는 DHCP 서버는 요청 메시지에 대한 확인 응답을 보내주며 클라이언트는 임대 기간 동안 IP주소를 사용할 수 있게 되는 것이다. 

반응형
Comments