[NET]IPv6알아보기-2

network 2005. 9. 15. 08:08 |

1. 기본헤더뒤엔 확장헤더가 와요..
IPv6는 필요없는 기능을 과감히 줄이고 모든것을 구조화 해서 성능을 높이는데 집중한 흔적이 많은데 앞의 checksum을 없애것과 더불어 extension header가 또 한가지라고 할 수 있다. IPv4에도 이와 유사한 개념의 확장헤더가 있었지만 IP헤더뒤에 어떤 헤더가 오느냐에 따라 전체 길이가 들쑥날쑥했고 짜임새가 없었던과 달이 IPv6에서는 앞에오는 IP헤더의 Next Header field에서 다음오는 Extension header의 정보를 알려주고 Extension header도 64비트 단위로 되어있어 처리시간을 줄일수 있게했다. 또한 extension헤더에는 그 뒤에 오는 extension헤더의 정보를 넣는 방식을 사용하는데 데이지체인 방식으로 구성되어 있는 것도 특징이다.

사용자 삽입 이미지

그림에서 보시듯이 맨앞의 IP헤더에서 extension헤더의 정보를 가르키고, 그 extension헤더는 그 다음 extension헤더정보를 가르키는 데이지체인 방식이다.

2. 움직이는 네트워크 Network Mobility..
IPv6에서는 IPv4에 비해 Mobility기능이 훨씬 향상되어 빠르고 안정된 이동성보장이 가능해졌다. 따라서 이동하면서도 네트워크 접속이 유지되도록 해주는 네트워크 Mobility기능이 IPv6에서는 기본장착되어 있어 훨씬 사용이 편해졌고 Mobility구현역시 IPv4에 비해 효과적이 되었다.

3. IPv6의 보안
보안을 얘기하게 되면 자주 듣게 되는 단어가 IPSec(IP Security)입니다. IPSec이란 네트워크 계층에서 암호화 및 인증등의 보안을 제공해줌으로써 TCP/IP기반의 인터넷상에서 안전한 통신을 가능하도록 해주는 보안 표준이다.
이 IPSec은 물론 IPv4에서도 지원이 가능했지만 IPv6에서는 필수요소가 되었다는 것이 중요하다. 이 의미는 언제 어디서나 IPSec이 설정되어 있으며 즉시 활용가능하다는 것이다. 따라서 더욱 완벽한 보안이 이루어 졌다는 것이다. Extension Header에 헤더번호가 50번과 51번일 경우 각각, Encapsulating Security Payload와 Authentication Header가 나오게 되며, 여기서 패킷의 보안을 책임져주게 된다.

4. IPv6에서의 간단한 주소적기
IPv4에서는 십진수를 점(.)으로 분리하여 표기를 하였지만, IPv6에서는 16진수를 사용하여 주소를 표기하게 되고, 16진수 4개를 쓰고 콜론(:)을 찍고, 또 16진수 4자리를 쓰고 콜론(:)..이렇게 16진수로 4개씩 8번을 쓰고 중간에 콜론7개를 찍어 주소를 표기하게 된다.
xxxx:xxxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
예를들면,
2001:0DB8:010F:0001:0000:0000:0000:0D0C

5. IPv6의 주소쓸때 규칙
16진수 A ~ F까지의 알파벳은 문자가 아니라 16진수 숫자이므로 대소문자 구분을 안한다는 것을 알아야 한다.
2001:0DB8:010F:0001:0000:0000:0000:0D0C 와
2001:0db8:010f:0001:0000:0000:0000:odoc는 동일하다.

두번째 규칙은 앞에오는 0은 안써도 된다는 것이다.
2001:0db8:010f:0001:0000:0000:0000:0d0c 라는 주소는
2001:db8:10f:1:0:0:0:d0c 로도 쓸수있다.
하지만, 중간에 있는 0은 생략하면 안된다.

세번째 규칙은 0이 연속으로 나올때는 ::로 표시할 수 있다.
2001:db8:10f:1:0:0:0:doc를
2001:db8:10f:1::doc로 표기할 수 있다.
하지만 이러한 방식을 두번이상이 사용하면 안된다.
2001:0db8:0000:0000:ffff:0000:0000:0d0c이란 주소를
2001:0db8::ffff:0000:0000:0d0c
또는
2001:0db8:0000:0000:ffff::0d0c
로는 표기할 수 있지만,
2001:0db8::ffff::0d0c로는 표기할 수 없다.

6. IPv4 compatible address
IPv6가 아무리 좋아도 당분간은 IPv4와 같이 공존해야하는 기간이 필요하기 때문에 IPv4망위에서 어떻게 IPv6를 연결할까 하는 논의가 많이 되고 있다고 한다.
IPv4 compatible address는 IPv4망에서 IPv6트레픽을 전송하기 위한 방법중 자동 터널링을 구성해 줄때 사용하는 주소방식으로 IPv4주소를 자동으로 IPv6주소형식으로 만들어 주는 것이다.

IPv4 compatible address의 예는:
0:0:0:0:0:0:192.0.2.100
= ::192.0.2.100
= ::c000:0264

또 다른 주소방식은 IPv4-mapped방식이다.
0:0:0:0:0:FFFF:192.0.2.100
= ::ffff:c000:0264
IPv4-compatible주소와 다른점은 IPv4주소앞에 FFFF를 넣는 다는것이다.
또, URL주소를 넣을때 도메인 이름대신 IP주소를 쓸때는 IPv6에서는 아래와 같인 대괄호[]로 묶어준다.
http://[2001:df0:1003::f]:8080/index.html

7. IPv6주소의 삼형제
우선, IPv4 주소종류에는 받는 사람이 한명인 unicast와 받는 사람이 한명이 아닌 특정그룹인 multicast, 그리고 모든 호스트들에게 다 받으라고 하는 broadcast가 있다.
그런데, IPv6에서는 달라졌다. 말도많고 탈도 많던 broadcast가 사라지고 좀더 강력해진 multicast가 그 역할을 대신하게 되었고, 새로운 anycast가 등장했다.
anycast는 말그대로 아무나 받으라는 것인데 그룹멤버중에 가장 가까이 있는 녀석에게 패킷을 보내는 방식으로 가장 가까운 포인트를 찾는 탐색메카니즘을 위해 사용되어진다고 한다.

8. 유니캐스트라고 다 같은게 아니다??
IPv4에서 유니캐스트의 종류를 나눠보면 아래과 같이 나눌 수 있다.
- 공인IP주소
- 비공인 IP주소
- 기타주소
0.0.0.0 : 디폴트 네트워크 구성을 해줄때 사용하는 주소로 나머지 모든것을 의미한다. 즉, 라우팅 경로를 찾지못한 나머지 모든 것을 나타내는 의미로 쓰인다.
127.0.0.1 : loopback 주소

IPv6에서 역시 유니캐스트 주소는 몇가지 종류로 구분된다.
- Global unicast address
: IPv4의 공인IP주소와 같다. 가장 일반적인 IP주소이다.
- Site-local address
: 어떤 사이트내에서만 사용할 수 있는 주소로써 IPv4의 비공인 IP주소와 비슷한 개념이다.
- Link-local address
: Site-loca주소보다 그 영역이 조금더 줄어든 그 링크안에서만 통용되는 주소이다. 즉, 그 링크
를 벗어나선 사용될 수 없는 주소이다.
- 기타 address
: IPv4처럼 loopback, IPv4호환주소가 있다.
아래의 그림은 범위에 대한 개념을 나타낸 것이다.

사용자 삽입 이미지

9. 유니캐스트란 찐빵에 들어가는 단팥^^

유니캐스트 주소를 배우기전에 먼저 알아야 하는 것이 있는데 바로 주소를 만들때 꼭 따라다니는 interface ID(identifier)이다. interface ID는 링크상에서 인터페이스를 identify,즉 링크상에서 그 인터페이스를 딱 꼬집어 지정하기 위해 사용되는 인터페이스별 이름이다. 따라서, 인터페이스 ID는 그 링트상에서 만큼은 유일해야 한다.

interface ID는 64비트로 만들어 지며 모든 유니캐스트 주소에 사용되고 128비트 주소중에 뒤에오는 64비트는 interface ID가 차지한다. (예외적으로 유니캐스트에서 interface ID를 사용하지 않는 경우도 있다.)

그럼, interface ID는 어떻게 만들어 지는가? 이더넷의 경우에는 48비트의 MAC주소를 이용해서 만드는데 이 방식을 Modified EUI-64포멧이라고 한다. 프레임 릴레이 구성에서는 DLCI주소를 이용해서 interface ID를 만들게 된다.

사용자 삽입 이미지
10. IPv6 유니캐스트 주소하나.. 링크로컬 주소는..

Link-local address는 말그대로 링크상에서만 사용되는 주소이다. 즉, 링크안에서만 구분할 수 있다면 된다는 뜻이다. 링크는 예를들면 1대1연결의 경우는 호스트가 2개만 존재할 수 도 있구..여러개의 호스트가 연결되는 링크일수도 있는데 collision domain정도로 이해하면 될것 같다.

이러한 Link-local address는 특징이 있는데 그것은 주소의 맨앞이 FE80(1111 1110 1000 0000)으로 시작된다는 것이다. 그런데 좀더 정확이 Link-local address의 앞부분은 FE80::/10이 맞고, 이것의 의미는 일단 맨앞은 FE80으로 시작하는데 prefix가 10비트까지라는 의미 이므로 앞에서 2진수로 만들었던 주소중에 맨 왼쪽에서 10개까지만 prefix로 사용한다는 의미이다. 그럼 앞에 10자리가 정해졌는데 나머지 118비트는 어떻게 정해지는가? 그것은 아래의 그림과 같다.

사용자 삽입 이미지
이렇게 만들어진 Link-local address는 Neighbor discovery, Router discovery등의 용도로 사용되어지며 나중에 배우게될 global주소나 site-local주소없이 동일 링크상에서 접속이 필요할 경우에도 사용되는 주소이다.

11. IPv6에서의 공인주소는?

IPv4에서 주로 공인IP주소라고 불렀던 인터넷 사용을 위한 주소가 IPv6에서는 Global Unicast Address라고 부른다. Global Unicast Address는 아래의 그림과 같이 구성된다.

사용자 삽입 이미지
Global Unicast Address는 그림에서 보듯이 3가지 부분으로 나누어진다.

- Provider부분 : 48비트이고 맨앞이 이진수 001로 시작된다. 이것은 IANA(Internet Assigned Numbers Authority)라는 단체에서 정해놓은 약속이다. 따라서, IPv6에서 2000::/3은 global unicast address를 나타내는 것이다.

Provider부분의 나머지 45비트는 IANA에서는 각 대륙에 배분하고 각 대륙에서는 각 ISP에 배정하는 용도로 사용된다.

-Site부분: ISP에서 48비트를 배정받게되면 각 사이트에서는 그 사이트의 상황에 따라 다시 네트워크를 분해해주게 되는데 이때 나머지 16비트의 Subnet ID를 사용한다. 이 부분은 다른말로 LAN prefix라고도 한다.

-Interface부분: 이전에 언급한 Interface ID

이렇게 global unicast address는 각 대륙별, ISP별, SITE별로 배정되기 때문에 IPv4와는 달리 여러개의 라우팅 테이블을 하나로 묶어주기가 용이해서 훨씬 효과적인 라우팅이 가능하게 된다.

12. Uunicast의 기타주소 시리즈

- Unspecified address : 무기명주소, 어떤 특정주소를 사용하지 못하는 경우(예. 초기 DHCP request를 한다거나, duplicate address detection(DAD)를 수행)는 출발지 주소를 정해줄 수 없으므로 unspecified address를 사용한다. unspecified address는 0:0:0:0:0:0:0:0(::)을 사용한다.

- Loopback address: IPv4에서 127.0.0.1로 사용되어 IP스택내부의 로컬 인터페이스를 표기하던 것과 같이 IPv6에서도 loopback주소가 있는데 0:0:0:0:0:0:0:1(::1)이다.

- IPv4 compatiable address

Posted by salgunamu
: