NAT, Network Address Translation은 네트워크 주소를 변환해주는 장치로 공유기, 라우터 드의 라우팅 장치를 통과하는 IP 패킷 헤더의 IP주소 정보를 변환한다.
로컬 네트워크 (서브넷)에는 하나의 외부 IP주소만 사용하며, 로컬 내부에서는 NAT이 부여한 private IP주소를 사용한다.
즉, 하나의 public IP주소를 이용해 로컬 네트워크 내부에 여러 장치들을 사용할 수 있는 것이다. (private IP주소를 사용)
1) 10.0.0.1의 주소를 가진 호스트가 128.119.40.186, 80으로 데이터그램을 보내고자 한다.
2) NAT 라우터가 데이터그램 전송 주소 10.0.0.1, 3345를 138.76.29.7, 5001로 바꾸고, NAT translation table을 업데이트하며, 이것을 기억한다. 이 두 주소는 테이블에 의해 짝지어져서 다시 NAT을 통과할 때 사용한다.
3) 외부로부터 데이터그램을 받을 때는 NAT주소인 138.76.29.7, 5001로 목적지를 설정한다. (외부에서는 로컬 주소를 알 수 없음)
4) NAT 라우터가 테이블을 참고하여 NAT IP주소를 Source IP주소로 변환해준다.
네트워크의 라우터는 Outgoing Datagrams, Remember, Incoming Datagrams의 세 가지 기능을 수행해야 한다.
뭔가 거창해보이지만, 단순하게 생각하면 나가거나 들어올 때 주소를 변환해주고, 변환값을 저장하는 역할을 말하는 것이다.
Outgoing Datagrams : 나가는 데이터그램, Sender. 즉 로컬 네트워크에서 나갈 때의 로컬 IP주소를 NAT IP주소로 바꾸어주고, 원래의 포트 번호에서 새로운 포트 번호로 바꿔준 후 외부로 전송시킨다.
Remember : 변환해준 IP주소와 포트 번호를 transaltion table에 기록한다.
Incoming Datagrams : 외부로부터 응답을 받으면 기록해두었던 테이블을 사용하여 NAT주소를 다시 로컬 주소로 바꾸어주고 원래의 포트로 복구시켜준다.
NAT의 역할과 특징은 다음과 같다.
16비트 port-number field를 사용하여 하나의 LAN주소로 약 6만 개의 동시 연결을 제공할 수 있다.
NAT과 이전에 다룬 DHCP는 로컬 네트워크에서 함께 작동하는데, DHCP에 의해 자동으로, 동시에 NAT을 통해 private IP주소를 부여받는다.
전역에서 고유한 IP주소가 필요하지 않으며, 로컬 네트워크 내부에서만 고유하면 된다.
로컬 NAT 내부 장치는 명시적 주소 지정이 불가하며, 외부에서 볼 수 있다.
NAT Traversal Problem이라고 불리는 문제에 대하여 알아보자.
클라이언트가 NAT 뒤에 있는 서버에 연결하고자 하는데, 서버 주소 10.0.0.1은 LAN에 속한 지역 주소라서 클라이언트가 목적지 주소로 사용할 수 없으며, 외부에서 확인 가능한 주소는 NAT의 주소 138.76.29.7만 가능하다.
이를 위한 해결책으로는 정적 주소를 사용하거나, UPnP 프로토콜을 사용하거나 릴레이를 사용하는 방법 등이 있다.
'네트워크 > Network Layer' 카테고리의 다른 글
[네트워크] Network Layer (6) - Router(Input/output port, Switching Fabric) (1) | 2022.12.10 |
---|---|
[네트워크] Network Layer (5) - IPv6 (Tunneling) (0) | 2022.11.09 |
[네트워크] Network Layer (3) - DHCP : Dynamic Host Configuration (0) | 2022.11.04 |
[네트워크] Network Layer (2) - IP Addressing (Subnet, CIDR) (0) | 2022.11.03 |
[네트워크] Network Layer (1) - Intro (0) | 2022.11.02 |