NAT & IPv6
Network Address Translation(NAT)
하나의 사설 네트워크에 포함된 기기들이 그저 하나의 IP주소를 통해 인터넷과 통신하는 네트워크 라우팅 방식이다.사설 네트워크에 안에서는 포트번호로 기기를 구분한다.이를 통해 IP주소를 각각기기에 할당하지 않아도 되기에 IP주소를 효율적으로 관리할 수 있다.이 사설 네트워크에서 사용되는 IP주소는 private IP Address로 흔히 192.168.0.,10.11,172.16.로 시작하는 IP가 이에 속한다.
NAT를 사용함으로써 ISP는 하나의 IP주소만 알면 사설 네트워크의 모든기기를 네트워킹할 수 있고 보안적으로도 특정기기를 외부에서 특정하기 매우 어렵다.
NAT사용하는데 만일 사설 네트워크의 장비가 서버의 역할을 해야한다면 외부에서는 해당기기를 알방법이 없어보이지만 포트 포워딩(Port Fowarding)으로 미리 스위치에 이를 등록함으로써 해결이 된다.
NAT를 도입하는데 있어서 반대를 하는 의견이 있었는데 이는 다음과 같다.
1.라우터가 네트워크 레이어의 상위계층을 침해한다.
2.end to end 방식에 혼란을 일으킨다.
3.IPv6가 개발되어 이미 주소가 충분하다.
하지만 셀룰러 통신과 많은 기기의 증가로 인해 NAT는 현재 널리 사용되고 있다.
IPv6
우선 직관적으로 IPv4와의 차이는 주소의 길이에 있다.
추가적으로 40바이트로 헤더의 길이를 고정시켜 이를 하드웨어적으로 처리하게 함으로써 포워딩 속도를 향상 시켰다.
IPv6의 Datagram 형식은 다음과 같다.
IPv4 datagram형식과 다른점은 우선 Header length를 표시하는 부분과 Checksum,fragmentation,reassembly가 없어졌다.또한 IPv4의 Options도 사라졌는데 이는 확장 헤더를 통해 구현한다.next hdr에 헤더코드를 기입함으로써 헤더를 확장한다.
IPv6주소는 128bit의 길이를 갖고 16진수를 통해 표현한다.하지만 길이가 너무 길기에 단축하는 표현법을 사용한다.
우선 반복하는 0을 ::로 표현하고 맨앞의 0은 생략하는 방식으로 표현을 단축시킨다.
또한 IPv4에서는 클래스별로 IP를 할당했고 특히 D클래스에 속하는 IP들은 DHCP를 위해 사용하는 방송용 주소로 설정하기도 했다.하지만 IPv6에서는 별도로 주소 타입을 설정했다.참고로 Broadcast address는 별도로 정해지지 않고 Multicast 주소를 사용한다.
크게 3가지로 구분했다
1.Unicast
1대1 통신으로 신뢰성이 높은 통신방식이다.
2.Multicast
1대 다수 통신으로 신뢰성이 떨어진다.이유는 동시에 Ack,Nck가 송신될 수 밖에 없기에 이는 Broadcasting storm을 유발한다.
3.Anycast
클라이언트입장에서는 1대1 통신이긴하다.클라이언트의 요청이 가장 가깝거나 적합한 노드로 전달되도록하는 방식이다.하지만 동일한 애니캐스트 주소를 가진 여러 노드가 네트워크 상에 존재한다.
Link local address
라우터를 통과하지 않는 지역 네트워크에서 사용하는 주소로 말그대로 해당 링크에서만 사용하는 주소다.
주소의 시작은 FE80::/64이다.
Loopback address
local host주소로 주로 패킷이 잘 보내지는지 내부적으로 사용한다.즉,호스트에서 발송한 패킷이 되돌아 오는 개념이지만 실제로는 커널레벨에서 복사되는 것이다.127.0.0.1로 많이 알려져있다.IPv6는 0:0:0:0:0:0:0:1(::1/128)이다.
Unspecified address
128비트가 모두 0으로 구성된 경우로 시스템에서 아직 유요한 소스 또는 대상 주소가 없음을 나타낼 때 사용된다.이 주소는 네트워크 인터페이스에 할당 되지 않고 드랍된다.
Unique local address
fc00::/7로컬 네트워크 내에서 고유성을 가지는 주소다.즉,IPv4 NAT에서 사용하는 10.11...,192.168.0.,172.16..과 유사한 역할을 수행한다.
Multicast Address
멀티캐스트를 위한 주소로 IPv4에서는 224.0.0.0/24를 사용했다면 IPv6에서는 11111111(FF)를 사용한다.ff00::/12로 시작하는 주소로 잘 알려져 있다.IPv4,v6에서 멀티캐스트 주소는 패킷의 목적지 주소로만 사용되고 소스 주소로는 사용할 수 없다.패킷의 소스 주소는 고유한 송신자를 나타내는 유니캐스트 주소여야 한다.
Solicited-node multicast address
IPv6에서 breadcasting용도로 사용하는 주소다.IPv4보다 효율적이다. 고정 프리픽스는 ff02::1:ff00:1/104이다.
마지막 24비트는 인터페이스 식별자다.즉,네트워크 상의 모든 노드가 아닌 특정 노드만을 대상으로 송신을 하기때문에 불필요한 네트워크 트래픽과 오버헤드를 줄일 수 있다.
그렇다면 IPv4에서 IPv6로 발전했지만 여전히 IPv4도 사용중이다.이유는 네트워크는 실시간으로 계속 서비스 되고 있고 업데이트를 위해서는 커널레벨 코드를 수정해야한다.하지만 이는 현실적으로 불가능하다 모든 장비를 한날한시에 재부팅해야하기 때문이다.따라서 네트워크의 발전은 Backward compatibility을 보장해야한다.
Tunneling
네트워크에서는 굉장히 보편화된 기술로 IPv6인 데이터그램을 IPv4만 지원하는 네트워크를 통과할때 필요한 개념으로 이는 IPv4 데이터그램에 IPv6를 적재해서 보내는 기술이다.
이렇게 적재한후 다시 IPv6를 지원하는 네트워크에 도달해서는 원래대로 IPv6 데이터그램을 사용한다.