1. IPv6
- 주소의 고갈 때문에 고안한 차세대 IP이다.
- NAT, 공유기의 등장으로 ip부족 문제를 조금씩 해결하면서 IPv6으로의 이주가 미뤄지고 있다.
- IPv4의 잠재적인 문제와 IPv6가 제시하는 방법들을 알아보자.
- 32비트의 주소가 너무 작으니가 128bit주소를 사용한다.
- 멀티캐스트를 필수로 사용하도록 한다.
- 인터넷의 목적은 누구나 접속할 수 있는 네트워크 였다. 이를 위해 신뢰성을 희생하였다(Best effort). 인터넷에서 전화등의 실시간 서비스에 대비하고자 하였다.(QoS 서비스 품질, 실시간 서비스에 대비)
- 인증 및 보안 기능을 필수로 넣고자 했다.
- DHCP를 서버 없이 ip 자체가 자동구성하도록 한다.
- 라우팅은 포워딩에만 집중하도록 하고 다른 기능들을 다 밖으로 빼서 단편화도 미리 잘라서 보내도록 했다.
- 라우터가 패킷처리를 매우 빠르게 하도록 하기 위해 처리에 용이한 프로토콜로 발전하고자 했다.
- IPv4가 견딜만한 상황으로 다른 기술이 등장해주고 있지만 위와 같은 본질적인 문제들이 있다.
2. IPv6 주소
- IPv4를 통해 고정식 주소로 가면 안되겠다고 깨달았다.
- 그래서 CIDR처럼 classless 주소/라우팅을 선택했다.
- 128비트를 사용하기 때문에 연속적인 0이 자주 나타난다. 이 0들을 생략하여 표기한다.
- IPv6는 IPv4주소와도 호환이 가능하다.
- 각 노드를 식별할 수 있는 unicast주소로 010을 잡아두었다.
- IPv4에서의 경험으로 IPv6도 서브넷과 수퍼넷을 사용한다.
- link local 주소는 link내부에서만 사용하도록 잡아둔 주소이다. 라우터는 이 주소가 밖으로 못 나가도록 버린다.
- 각 노드의 주소는 010으로 시작한다. 이 주소를 aggregatable global unicast addresssing이라고 한다.
- ip주소는 물리적인 mac주소 위에서 돌기 때문에 arp는 필수였다. ipv6에서는 ip주소가 mac주소를 내포하게 하여 꺼내쓰도록 했다.
- 64 interfaceID에 host의 48비트MAC주소를 심는다.
- site-level aggregation id가 subnetting에 사용되는 구간이다. 이 구간을 자유롭게 subnetting하여 사용하게 된다.
- 이제 그 윗부분이 classless로 필요한만큼 잘라서 할당하고 aggregation하는 구간을 나타낸다. (supernet을 위한 구간)
3. IPv6 주소 할당
- 호스트가 새롭게 부팅되어 자동할당이 필요하면 IPv4에서는 DHCP가 잡아주었다. IPv6에서는 자기 고유의 mac주소에 link local address를 붙여서 링크 내에서 유일성이 보장되는 ip를 할당받도록 한다. 이 주소는 라우터 밖으로 못 나가니까 문제가 없다.
- 이렇게 일단 하나의 ip를 확보하게 된다. 그리고 그 호스트가 브로드 캐스팅으로 라우터에게 신호를 보내면 라우터가 자동할당을 해준다.
4. IPv6 헤더
- Fragment, reassembly 주소를 위한 공간을 빼버렸다.
- IPv6에서는 단편화를 호스트가 해서 보내기 때문에 그 공간을 빼버렸다. (end-to-end에서 단편화 수행)
- 그렇다고해서 Fragment, reassemblly를 완전히 제거한 건 아니다. 그냥 헤더에서 공간만 빼고 option에서 확장 헤더로 사용할 수 있도록 하였다.
- 단편화를 미리 해서 보내면 확률적으로 fragment, reassembly를 할 확률이 줄어서 뺀거지 완전히 안하는건 아니다.
- total length가 payloadLen로 되었다. (헤더를 뺀 알맹이 data 길이)
- ttl을 hoplimit이라고 이름을 바꾸었다.
- flowLabel이 새로 추가되었다. IPv6의 실시간 서비스 대비를 위해 추가되었다. 인터넷은 datagram방식이기 때문에 connect와는 거리가 멀다. 대신 같은 수준의 서비스로 처리되어야 하는 패킷들의 연속을 위한 (ex. 전화) 식별자를 사용한다. (연속 처리를 위한 식별자, 연속처리를 하지는 않지만 식별자를 붙이는 정도는 하자, 훗날 일괄처리를 위한 근거가 될 수 있다.)
- 즉 기본헤더는 간단하게, 대신 얼마든지 추가기능이 있으면 확장헤더로 사용할 수 있도록 하였다.
- 기본헤더를 간단하게 함으로써 복잡한 처리가 필요없도록 디자인하였다.
- next header는 상위계층 프로토콜 아이디를 나타낸다.
- 계층을 내려가다 보면 헤더가 층층히 붙게 된다. next header는 상위 프로토콜 id로 사용되어 demux key로 동작하는 효과가 있다.
- ip헤더에 확장헤더가 붙으면 그 다음 확장헤더를 가리키는걸로도 활용된다.
'ComputerScience > Network' 카테고리의 다른 글
컴퓨터통신 - 30. Wireshark을 이용한 IP 패킷 전달 과정 확인 (1) | 2022.02.16 |
---|---|
컴퓨터통신 - 29. 모바일 IP (0) | 2021.12.06 |
컴퓨터통신 - 27. Forward Table 발전 정리 (0) | 2021.12.06 |
컴퓨터통신 - 26. 인터넷 확장성 문제 (Scalability Issues) (0) | 2021.12.06 |
컴퓨터통신 - 25. 가상 네트워크 (virtual network) (0) | 2021.12.06 |