NAT
NAT는 Network Address Translation의 약자로 IP주소가 충분히 할당 받지 못했을때 local network 상에서 자체적으로 host에게 주소를 나눠주고 network를 연결하기 위해 필요한 기술이다.
위 그림의 router가 NAT server의 역할을 하게 된다. 어떤식으로 translation이 진행되는지 아래 그림을 통해 살펴보자.
host에서 본인의 port number를 router에게 보내주면(위 그림에서 3345) router는 남는 번호중 random하게 설정하여(위 그림에서 5001) 외부에 전송을 한다. 32비트의 IP주소는 router의 주소이기에 데이터가 router에 도착하면 router는 본인이 지정했던 번호인 5001이 포함된 데이터를 받고 해당 번호를 3345로 'translate'하는 것이다. 이때 translate를 어떻게 할지에 대한 정보는 NAT translation table에 저장되어있다. 이제 3345host에게 데이터를 갖다주기만하면 host각각이 IP를 지정받지 못해도 local level에서 여러 주소를 나눠줄 수 있는 것이다.
ICMP
ICMP는 Internet Control Message Protocol의 줄임말이다. 오류를 보고하거나 echo requiest와 reply하는 역할을 한다. IP에 얹어져 있는 프로톨이지만 그렇다고 network layer위의 transport layer라는 뜻은 아니고 IP와 ICMP 둘다 network layer에 포함되어있다.
위는 ping을 통해 google에 echo request를하고 reply를 받은 모습이다.
위와 같이 다양한 상황을 type과 code번호로 보고해주는 역할을 한다.
이번에는 tracert 명령어를 통해 google.com으로 가는 경로를 추적해보았다. 약 13개의 router를 거쳐서 가는 것을 알 수 있고 중간에 보안등의 이유로 request에 대한 reply를 하지 않는 router도 볼 수 있었다.
IPv6
IPv4의 32-bit 주소가 고갈되어가는 문제가 생겼다. 이 때문에 새로운 IP의 필요성을 느끼게 되었고 IPv6가 나오게 되었다. IPv6는 고정된 40byte header를 가지고 있고 fragmentation을 허용하지 않는다. 만약 MTU가 40 byte보다 작으면 해당 패킷을 폐기하고 ICMP를 통해서 패킷 사이즈가 너무 크다는 메세지와 함께 재전송을 요청하는 방식을 취한다. IPv6의 datagram 형식을 보면 아래와 같다.
IPv4와 비교하면 fragment가 없어지고 그에따라 flag도 없어졌고 checksum도 없어졌다. 이는 어짜피 TCP에서 IP datagram중 중요한 부분을 모두 확인하여 checksum을 하기 때문에 transport layer에게 책임을 넘겨 지연을 최소화 시킨 것이다. IPv4까지는 매 router마다 TTL이 1씩줄어들기 때문에 checksum도 매번 달라져 네트워크 지연에 영향을 끼쳤다. IPv6에도 TTL과 같은 역할을 하는 hop limit이 있다. 따라서 checksum을 skip 하고 TCP가 책임지도록 변경되었다.
IPv4 to IPv6
IPv6가 나왔다고 해서 한날 한시에 모든 router와 host기기들을 upgrade할 수는 없는 법이다. 따라서 IPv4와 IPv6가 공존할 방법이 필요하다. 대표적인 방법으로 Tunneling이다.
위와 같이 패킹을 하여 아래와 같이 같은 버전의 router끼리 연결시켜주는 역할을 하는 방식을 취한다.
'Quality control (Univ. Study) > Computer Network' 카테고리의 다른 글
Routing algorithm - Distance vector (0) | 2023.11.10 |
---|---|
Routing algorithm - Link state (0) | 2023.11.07 |
Internet Protocol(1) (0) | 2023.11.01 |
Network Layer (0) | 2023.10.27 |
TCP (0) | 2023.10.12 |