32bit IP address방식인 IPv4가 충분하지 않아서 더 많은 host에게 주소를 할당하기 위해서 사용하는 것이 NAT이다.
NAT(network addres translation)
Nat은 네트워크에서 IP 주소를 변환하는 프로세스를 말합니다.
여러 장치가 하나의 IPv4 address를 공유하여 인터넷에 연결할 수 있도록 도와줍니다.
rest of internet을 통해서 나가는 datagram들은 동일하게 138.76.29.7이라는 NAT IP address를 가집니다.
하지만 오른쪽을 보면 port 번호가 다르다는것을 알 수 있습니다.
NAT의 장점
- 여러장치가 하나의 공인 IP 주소를 공유할 수 있기에, IP 주소의 효율적인 사용이 가능하고,
IPv4 주소의 고갈 문제를 완화할 수 있습니다. - 로컬 네트워크 내 호스트의 주소를 외부에 알리지 않고 변경할 수 있다.
- ISP 변경 시 로컬 네트워크 장치의 주소 변경 없이 변경 가능
- 로컬 네트워크 내 장치들은 외부 세계에서 직접 접근 및 확인할 수 없다.
💡요약하면 IP 주소 공간을 절약하고, 네트워크의 관리를 편리하게 하며, 보안을 강화한다.
NAT의 동작과정
- 호스트가 포트번호가 3345이고, IP주소가 10.0.0.1인 것을 128.119.40.186.80 datagram에 보낸다.
- local 네트워크 내의 host가 패킷을 보낸다.
- NAT 라우터는 받은 주소를 NAT 주소로 바꾸고, 호스트를 식별할 수 있도록 포트번호를 새로 부여한다.
- 138.76.29.7로 바꾸고, 새로운 포트번호인 5001을 부여한다.
- 이렇게 NAT 라우터에서 datagram에서 받은 패킷을 변환했다는 것을 기록하기 위해 Nat translation Table에 기록한다.
- 서버는 패킷을 받아서, 대답하기 위해 NAT 라우터로 보낸다.
- NAT 라우터는 아까 기록했던 NAT translation Table의 포트번호를 보고, 호스트를 식별해서 올바르게 보내준다.
즉 NAT 라우터는 호스트를 식별하기 위해 NAT translation table을 사용한다.
NAT의 문제점? 논란?
- 라우터는 일반적으로 3계층까지만 처리해야 한다
- IP주소 부족은 NAT가 아닌 IPv6로 해결되어야 한다
- End to End 원칙을 위반한다.(네트워크 계층 장치에 의한 포트번호가 변경되기에)
- NAT 트래버셜
IPv6
IPv4만으로는 IP주소를 할당하기의 한계가 있었고, 이를 확장하기 위해서 등장한 것이 IPv6 주소체계이다.
IPv4는 32bit 였다면, IPv6는 128bit의 주소값을 사용해서 많은 기기를 연결할 수 있다.
IPv6의 헤더 구조
왼쪽이 IPv4고, 오른쪽이 IPv6이다.
딱 봐도 구조가 단순해진것을 알 수 있다.
주된 변화
- 고정된 길이의 40 bytes 헤더를 사용한다.
- 기존의 IPv4는 20바이트에서 60바이트까지 가변적인 길이를 가졌으며 다양한 옵션필드를 포함했다.
그 반면 IPv6는 40바이트의 고정된 길이를 가지고, 필요한 정보를 간결하게 포함하고 있다.
- 기존의 IPv4는 20바이트에서 60바이트까지 가변적인 길이를 가졌으며 다양한 옵션필드를 포함했다.
- checksum이 없다.
- 처리시간이 훨씬 단축됨.
- Fragmentation/reassembly을 허용하지 않는다.
- 보낼 때 송신츠겡서 알아서 잘라서 보낸다.
IP datagram 구성요소
- pri
- 데이터그램의 우선순위 도는 품질을 나타냄.
- Flow Label(20bit)
- 패킷의 흐름을 식별하기 위한 값
- Payload Length(16bit)
- IPv6 헤더 이후의 페이로드 크기를 나타낸다.
- 여기서 페이로드란 데이터그램에 실려서 최종 목적지까지 전달되는 데이터
- IPv6 헤더 이후의 페이로드 크기를 나타낸다.
- Next Header(8bit)
- 페이로드 다음 계층 프로토콜을 나타낸다. (TCP, UDP 식별)
- hop limit(8bit)
- 약간 IPv4의 TTL 느낌 -> 네트워크에서 잔파 할 수 있는 최대 홉 수.
-> 0이 되면 패킷은 폐기됨.
- 약간 IPv4의 TTL 느낌 -> 네트워크에서 잔파 할 수 있는 최대 홉 수.
- Source Address(128bit)
- 데이터 그램의 출발지
- Destination(128bit)
- 데이터그램의 목적지
- Option, Payload(가변길이)
- Option -> 선택적인 확장 헤더 옵션, Payload -> 실제 데이터, 응용 프로토콜 데이터
Transition from IPv4 to IPv6
IPV4와 IPV6가 공존하기 위해서 tunneling 기능을 활용할 수 있다.
해당 기술은 IPv6 패킷을 IPv4 패킷 속에 담아서 전송하는 방식이다.
요약
- NAT는 IPv4에서 주소를 더욱 확장해서 사용하기 위해서 등장했다.
- 여러 장치가 하나의 IP address를 공유해서 사용한다.
- NAT translation table을 통해서 라우터는 호스트의 포트번호를 식별한다.
- IPv6는 IPv4 만으로 주소를 할당하기에 한계가 있어서 등장했다.
- 32bit -> 128bit
- IPV6은 checksum, fragmentation이 없고, 고정된 헤더 길이를 제공한다(40byte)
- IPv4와 IPv6을 같이 사용하기 위해서 tunneling 기능을 활용할 수 있다.
'Computer Science > Network' 카테고리의 다른 글
[컴퓨터망]-라우팅 알고리즘 (0) | 2023.06.13 |
---|---|
[컴퓨터망]-Flow table (0) | 2023.06.12 |
[컴퓨터망]-IP addressing,IPv4,CIDR,DHCP,Subnet (0) | 2023.06.12 |
[컴퓨터망] - IP datagram format (2) | 2023.04.15 |
[컴퓨터망] - Network Layer(Routing & Forwarding & Switching Fabric && Buffer Management) (1) | 2023.04.15 |