8 min read

IP 프로토콜 이야기

IP 프로토콜 이야기
Photo by Marc-Olivier Jodoin / Unsplash

오랫 동안 제2계층과 제4계층은 처음부터 여러 종류의 표준들이 사용되어 왔고, 앞으로도 새로운 기술들이 속속 등장할 것이다. 제2계층에는 802.3, ATM, 802.11 series 등이 유명하고, 제 4계층에는 대표적인 UDP, TCP 외에도 최근 표준화가 완료된 SCTP 등을 예로 들 수 있다.

이렇게 인터넷이라는 한울타리 내에서 다양한 기술들이 사이좋게 양립될 수 있었던 까닭은 이 다양성을 제 3계층의 IP (Internet Protocol) 프로토콜[1]이라고 하는 하나의 공통점이 묶어주고 있기 때문이다. IP 프로토콜은 내가 찾는 상대방이 인터넷 상의 어디에 있든 -- 바로 옆이거나 지구 반대편이거나에 상관없이 -- 패킷을 전송할 수 있도록 한다. 즉 인터넷을 'IP 프로토콜에 의해 패킷이 전송되는 네트워크'로 정의할 수 있다.

따라서 인터넷에 연결된 모든 네트워크들이 같은 IP 프로토콜을 사용하도록 하는 것은 무척 중요한 일이다. 만약 IP가 아닌 전혀 다른 프로토콜을 사용하는 사용자가 생겨난다면 그 사람은 IP를 사용하는 사람과의 통신이 불가능한 것은 물론이고, 때에 따라서는 다른 사람의 통신까지 막을 수도 있다.

그러나 앞으로는 현재의 IP 프로토콜을 계속 고집하기가 어려워지고 있는데, 이유는 각 컴퓨터에게 할당해줄 주소가 거의 없어졌기 때문이다. 초기의 IP 프로토콜 설계자에게 있어서 인터넷은 국제적인 학문 연구 및 군사용 등의 특수용도 망이었고 따라서 지금처럼 수많은 일반인들까지 쓸 줄은 미처 몰랐던 것이다. 게다가 앞으로는 한 사람에게 한 개 씩은 커녕 한 사람에게 여러 개의 주소를 할당해주어야 하게 생겼다. 지금도 핸드폰과 노트북과 PDA를 다 가지고 다니는 사람들이 많지 않은가. 따라서 현재의 IP 프로토콜을 개정할 필요가 있었다.

이리하여 10년 전부터 표준화가 진행되었던 차세대 IP 프로토콜 (IPng, IP next generation)은 IPv6 (IP version 6)라는 결과물로 구체화되었다. 참고로 현재 사용하고 있는 IP 프로토콜의 버전은 4이며 (그래서 IPv4라고 부른다), IPv5는 모바일 용도로 따로 예약이 되어있다.

그럼 무엇이 바뀌었는가. 제일 큰 차이점은 주소의 길이이다. 적을 수 있는 주소의 길이가 늘어남으로써 그만큼 더 많은 사용자를 포용할 수 있게 된 것이다. 잘 이해가 가지 않는다면, 전화번호를 생각하면 되겠다. 지역번호를 제외한 나머지 자리를 갖고 보자면, 국번 포함 7자리 보다 8자리가 더 많은 가입자를 받을 수 있을 것이다. 마찬가지로, 인터넷 주소의 자리수는 비트 수를 기준으로 계산한다. IPv4에서는 주소 길이가 32비트였으나 IPv6 주소의 길이는 128비트로, 실제로 $2^{96} = 2^{(128-32)}$ 수 만큼의 가입자를 더 받을 수 있는 양이다. 지금 한 번 계산기를 한 번 두들겨 보시라. 최소 억 단위 값이 나올 것이다. 이제 제일 큰 문제를 해결했으니, 그것으로 끝내도 좋았다. 그런데 기왕지사 바꿀 거 지금까지 잡음이 많았던 골칫거리들도 송두리째 뽑자고, 여기저기 뚝딱 뚝딱 수선했다.

첫번째는 보안 기능을 넣을 수 있는 공간의 확보이다. 흔히들 'IPv6는 보안 기능이 우수하다'고 말하는데, 엄밀히 말하자면 거짓말이다. IPv6 자체로는 아무런 보안 기능이 없다. 지금까지는 제 3계층 수준에서의 보안을 위해서는 별도의 추가 프로토콜을 위한 수정을 필요로 했고, 일단 기본 프로토콜 스펙에 없는 내용이다 보니 '옵션 '이란 인식이 강했다. IPv6에서는 기본 표준 문서에 인증 내용 및 데이터 암호화 내용이 들어가야 할 자리를 명시해줬고(AH 및 ESP 확장 헤더), 보안을 위한 기능이 '반드시' 들어가야 한다고 명시하였다. 이로서 IPv6가 탑재되는 모든 장비 -- 컴퓨터건, 휴대폰이건 -- 에는 인증 및 암호화 기능이 반드시 탑재되고, 마치 '숨쉬듯이' 필요할 때면 언제든지 보안 기능을 사용할 수 있게 되는 것이다.

두번째는 확장 기능의 유연한 추가 능력이다. IPv4에서도 확장 기능은 'IP 헤더 옵션'이라는 이름으로 사용되어 왔지만 이 옵션을 지원하지 않는 라우터에서는 어떻게 처리하도록 해야 하는 지에 대한 규정이 없었다. 새로운 옵션을 추가하려 할 때마다 이 옵션을 지원하지 않는 컴퓨터 또는 라우터에서 어떻게 처리될 지까지 고민하고 추가하는 것은 상당히 골칫거리다. 새로운 IP 프로토콜에서는 새로 추가할 옵션 내용의 포맷을 통일하고, 패킷으로부터 알 수 없는 옵션을 찾아낸 경우 이에 대한 처리 방식까지 명시하도록 되어있다.

세번째는 두번째와도 관련 있는 내용인데, 헤더 구성을 아주 심플하게 만들었다는 점이다. 불필요하거나 잘 사용되지 않는 영역을 옵션 기능으로 빼고, 기본 필드 갯수를 IPv4 때보다 더 줄였다. 이렇게 하면 무엇이 좋아지는가? 대부분의 라우터는 패킷을 하드웨어적으로 처리한다. 즉 기판 위의 회로를 통과하는 동안에 다음 처리 방법이 결정되는데, 이는 메모리에 올린 다음에 작업을 수행하는 소프트웨어적인 처리보다 훨씬 빠르다. 대신 구현하기가 힘들다는 단점이 있는데, 패킷 형식이 간략해지면 하드웨어적으로 구현하기가 쉬워진다.

IPv6는 현재의 IPv4와 동격의 프로토콜이면서 IPv4 운용 경험에 기반하여 많은 수정이 이루어진 프로토콜이다. 그러면 왜 이렇게 좋은 것을 안쓰는가? 일단 인터넷 기술 주도국인 미국은 이미 많은 주소 공간을 선점하고 있기 때문에 그다지 바꾸어야 할 필요성을 못느끼고 있다. 즉 장래의 필요 때문에 표준을 만들기는 했는데 사용에는 별 관심이 없다는 것이다. 이런 상황에서 하루라도 빨리 IPv6로 전환하기 위해서는 어떤 계기가 필요한데 그 중의 하나가 WWW와 같은 킬러 어플리케이션이다. 그러나 IPv6 표준화의 주요 이슈가 주소 부족 문제의 해결이었기 때문에 동기 유발을 위한 조건으로는 미흡하다. 현재로는 All-IP 망과 같은 차세대 신규 네트워크에서의 도입을 우선시하여 주도되고 있다.


  1. ‘IP 프로토콜’ 보다 ‘IP’가 정확한 표현이지만 IP가 Internet Protocol를 지칭하는 것임을 명시적으로 나타내기 위해 여기서는 ‘IP 프로토콜’로 부른다. ↩︎

— END OF POST.