네트워크 - IPv6(2)
컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.
-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의
IPv6 Datagram Format
flow lable
같은 것이 생기면서 IPv4
에서 Checksum
이 사라졌습니다.
Checksum
을 없앤 이유는 네트워크 전송 속도를 빠르게 하기 위함입니다.
checksum
을 할 때 CRC(Cyclical Redundancy Check)
를 하게 되면
checksum
코드를 계산 하고 그것을 다시 확인하는 것들이
시간이 오래 걸리기 때문입니다.
IPv4
에서 checksum
을 두었던 이유
source에서 destination까지 가는 전송 중에 에러가 발생 했다면?
에러가 발생 한 패킷을 계속 전달해서 목적지까지 도달하게 하더라도
에러가 발생 했기 때문에 destination
에서는 재전송을 요구 하게됩니다.
그러나 중간 자원을 낭비 해 가면서 전달할 필요가 없었기에,
매번 중간의 라우터를 거쳐갈 때 마다
각 라우터에서 checksum
을 확인 해서 checksum
에 문제가 있으면
버려 버리는 방식을 위해서 사용했습니다.
목적지에 도달 해도 필요가 없지만 더 큰 문제는
destination 주소 부분이 잘못 되어서 checksum 에러가 났다면?
Destination
주소가 잘못 되었으니 destination
에 도달 하지 못하고,
엉뚱한 곳으로 날아가서 결국 TTL
이 0이 될 때 까지 돌아다니면서
네트워크 자원만 낭비 할 수 있었기에 checksum
을 확인 했습니다.
과거에는 이 방식을 사용했던 이유는
중간에 에러가 일어나는 경우가 좀 빈번했기 때문입니다.
중간에 구리 선 이런 것을 쓰면서 twisted pair cable
같은 것 들을
쓰면서 에러가 많이 발생하기 때문에 중간에 checksum
을 계산 해서
버리는 것이 전체적으로 봤을 때는 효율적이었습니다.
현대에는 인터넷 기술이 발전하고 통신 기술이 발전하면서
그러한 에러들이 확연히 줄어들었습니다.
그리고 checksum
을 그냥 확인만 하면 되는 것이 아니라
checksum
을 확인 한 후에 다시 checksum
을 만들어서
다음에 전달 해야 됩니다.
그 이유로는 헤더 정보가 source
에서 전송을 시작 할 때부터 끝까지
똑같이 유지되는 것이 아니기 때문에, TTL
값이 바뀌게 되어,
매 라우터마다 checksum
을 다시 계산해서 넣어야 하기 때문입니다.
그래서 IPv6에서는 checksum을 없애기로 했습니다.
Migration from IPv4 to IPv6
전 세계에는 엄청나게 많은 IPv4
를 지원하는 라우터들이 있습니다.
이 라우터들을 동시에 IPv6
로 교체하는 것은 불가능 합니다.
그 문제의 해결책으로 IPv4
와 IPv6
라우터가 공존 해 있는 상황에서
터널링(Tunneling)이라는 방식을 생각 해 냈습니다.
Tunneling
현재의 장비는 IPv6
이고 목적지 네트워크의 장비도 IPv6
다 하더라도
중간에 IPv4
를 통과해야 될 경우가 있습니다.
IPv6
데이터그램이 현재의 헤더를 가지고는
IPv4
장비들이 처리를 못 했습니다.
그래서 IPv6
에서 IPv4
로 들어 갈 때
IPv4 헤더를 붙여서 보내는 방식을 사용했습니다.
이때, 그 중간의 장비는 IPv4
와 v6
를 동시에 지원하는
듀얼 프로토콜을 지원하는 장비
로 구성되어 있다고 가정합니다.
빨간색으로 되어 있는 IPv4
헤더를 붙임으로 해서
결국 C와 D 라우터가 보기에는 일반적인 IPv4
데이터그램인 것 처럼
보이게 만들어서 전송을 하게 됩니다.