네트워크 - IPv6(2)

2020-12-22

컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.

-참고 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로 교체하는 것은 불가능 합니다.

그 문제의 해결책으로 IPv4IPv6 라우터가 공존 해 있는 상황에서

터널링(Tunneling)이라는 방식을 생각 해 냈습니다.

Tunneling

현재의 장비는 IPv6이고 목적지 네트워크의 장비도 IPv6다 하더라도

중간에 IPv4를 통과해야 될 경우가 있습니다.

IPv6 데이터그램이 현재의 헤더를 가지고는

IPv4 장비들이 처리를 못 했습니다.

그래서 IPv6에서 IPv4로 들어 갈 때

IPv4 헤더를 붙여서 보내는 방식을 사용했습니다.

이때, 그 중간의 장비는 IPv4v6를 동시에 지원하는

듀얼 프로토콜을 지원하는 장비로 구성되어 있다고 가정합니다.

빨간색으로 되어 있는 IPv4 헤더를 붙임으로 해서

결국 C와 D 라우터가 보기에는 일반적인 IPv4 데이터그램인 것 처럼

보이게 만들어서 전송을 하게 됩니다.