인터넷은 어떤 기준으로 설계되었을까?

지난 글에서는 시스템이 동작하기 위한 조건과 트레이드 오프들에 대한 고려 후 시스템 설계를 해야 되며, 이 시스템 설계에 따라 시스템의 모습이 달라진다는 이야기를 했었다. 그렇다면 우리가 출근하는 버스나 전철 안, 심지어 변기 위를 포함해 눈을 뜨는 순간부터 잠들기까지 사용하는 인터넷은 어떤 설계 조건과 트레이드 오프에 대한 고려에 따라 지금의 모습이 된 것일까?

MIT CSAIL (CS AI Lab. 바다를 항해하는 느낌으로 Sea Sail이라고 읽으면 되고, 이 작명과 읽는 법은 다분히 의도된 것이다.) 의 David Clark 교수는 인터넷 개발단계에서 프로토콜 설계를 이끌었던 분이다. 왜 인터넷이 지금의 모습인지를 설명하기 위해 그분이 1988년에 쓴 논문에는 당시의 인터넷 설계에서의 우선순위를 보여주고 있다. 그 우선 순위를 옮겨 적어보면 다음과 같다.

  1. 존재하는 네트워크들을 연결할 것 (interconnection of existing networks)
  2. 장애 상황에서도 완전히 단절된 것이 아니라면 동작해야 될 것 (robustness)
  3. 여러 종류의 데이터 전달 방식을 지원할 것 (multiple types of delivery services)
  4. 다양한 네트워크들을 수용할 수 있을 것 (accommodation of various networks)
  5. 관리는 중앙 집중식이 아니라 분산 관리 방식일 것 (distributed management)
  6. 네트워크에 호스트를 추가하는 것이 쉬워야 될 것 (easy host attachment)
  7. 비용상 효율적이어야 될 것 (cost effectiveness)
  8. 자원 사용에 대해서 누가 얼마나 쓰는지를 확인할 수 있어야 될 것 (accountability)

당시 인터넷 연구의 가장 중요한 목적은 기존의 ARPANET 과 ARPA 패킷 라디오 망을 연동하여 ARPA 패킷 라디오 망에서 ARPANET 상의 호스트들이 지원하는 서비스들을 쓸 수 있게 하는 것이었다. 이를 위한 프로토콜 (규약) 을 고안하는 것이 인터넷 연구였는데, 이 때 앞으로 등장할지도 모르는 네트워크들까지도 연결할 수 있는 단일 프로토콜을 설계하게 되었다. 그것이 IP (Internet Protocol) 다.

영어가 모국어가 아닌 한국 사람들에게는 직접 와 닿지 않겠지만, 영어의 “inter-“ 는 둘 사이라는 뜻이다. 그러니 인터넷 (the Internet) 이라는 이름자체가 네트워크들을 연동한 것이라는 뜻이 된다. 그리고 IP 라는 이름은 “네트워크를 연동하는 프로토콜 (규약)”이라는 뜻이 되는 것이다.

IP 만 올릴 수 있으면 어떤 네트워크든 연결할 수 있다는 점 때문에 IP 는 모래 시계의 허리에 비유되곤 한다. 모래 시계의 잘록한 부분 위아래로 모래를 담는 넉넉한 공간이 있는 것처럼, IP 아래에는 네트워크를 만들 수 있는 다양한 하드웨어 기술 (Ethernet, WiFi, ATM, PPP, SONET, …) 이 존재할 수 있고, IP 위로는 다양한 응용 서비스 (HTTP, FTP, VoIP, …) 들이 동작할 수 있는 것이다. 혹시 독자 중에 랜 선을 꽂아서 사용하는 인터넷과 스마트폰에서 사용하는 무선 랜이 같은 하드웨어 기술이라고 생각하는 독자가 있을지도 모르겠다. 둘은 Ethernet 과 WiFi 라는 엄연히 다른 기술이며, 사용자들이 이 둘을 구분해서 알 필요가 없게 만들어준 것도 IP 가 그만큼 모래 시계의 허리 역할을 잘 하고 있다는 뜻일 것이다.

또한 쉽게 IP 를 올리기 위해서는 IP 는 될 수 있는 한 단순해야되고, 전송율이나 딜레이처럼 특정 네트워크 특성을 전제해서는 안됐다. 혹시 인터넷 패킷 (정확한 용어로는 데이터그램) 은 전송이 보장되는 것이 아니라 유실될 수 있다는 말을 들어본 적이 있는가? 최선을 다하긴 하지만 보장은 해줄 수 없다는 뜻에서 Best-effort 라고 표현을 하는데, IP 가 best-effort 가 될 수 밖에 없는 이유도 이처럼 서로 다른 특성의 여러 네트워크를 연동해야 되기 때문이기도 하다. 어쨌거나 논란의 여지 없이 인터넷은 이 첫 번째의 지상 과제를 성공적으로 달성했다

두 번째 우선 순위는 장애에 대한 안정성이었다. 이는 네트워크가 완전히 둘로 분리되어 쪼개지지 않는 한 호스트들끼리 통신이 가능해야 됨을 뜻한다. 쉽게 말하면 우리가 Youtube 상으로 싸이의 동영상을 보며 “Do you know 김취?” 라는 댓글을 다는 순간에 한국과 미국 사이의 해저 광케이블 중 하나가 끊기더라도, 다른 광케이블이 살아있으면 댓글이 달려야 됨을 뜻한다. 이 부분 역시 인터넷이 통신 중에 경로를 바꿀 수 있는 “패킷 스위칭” 이라는 점과 “라우팅” 이라는 방식을 통해 새로운 경로를 탐색할 수 있다는 점 때문에 성공적으로 목표를 달성했다고 평가한다.

우리가 카톡으로 친구로부터 사진을 받는 경우 파일 중 일부분이 누락된다면, 그 사진 파일 전체가 쓸모 없게 된다. 그런데 카톡으로 친구와 음성 채팅을 하는 경우는 일부 데이터가 누락되어 단어 몇 개가 안 들리더라도 문맥을 알아내는 것이 가능할 수도 있다. 오히려 이 경우는 몇 단어 못 듣는 것보다 음성의 딜레이가 더 큰 문제가 된다. 모두 인터넷 상에서 하는 작업이지만, 전자는 안정적인 전송이 중요하고, 후자는 빠른 전송이 중요하다. 이처럼 같은 인터넷 위에서 동작하지만 서비스에 따라 원하는 것이 다를 수 있고 인터넷은 이를 최대한 단순한 IP 와 TCP 나 UDP 처럼 목적하는 바에 따른 별도의 전송 프로토콜들이 존재할 수 있게끔 설계되었다.

여태까지는 높은 우선 순위 때문에 충분히 고려된 항목들을 살펴봤다. 그럼 우선순위가 제일 낮았던 사용자 파악과 사용량 파악은 어떨까? 결론부터 말하면 우선 순위가 낮았던 만큼 충분한 고려가 안됐다. 우리는 IP 주소를 추적할 수 있다고 알고 있지만, 사실 IP 주소 자체는 자의적인 것이고 위조도 가능하다. 그 때문에 IP spoofing 같은 해킹이 가능한 것이다. 그리고 IP 주소를 속일 수 있다는 사실 때문에 누가 얼마의 데이터를 쓰는지 정확히 알아내는 것은 불가능하다. 그러나 이처럼 달성하지 못한 목표가 있다고 해서 이를 인터넷 설계에 있어서의 실패로 보기에는 어렵다. 앞서 말한 것처럼 낮은 우선 순위의 일이었기 때문에 중요도가 떨어졌던 것 뿐이다.

그렇다면 인터넷이 설계되던 당시의 우선 순위와 지금의 우선 순위는 동일할까? 인터넷 연구는 군사적 연구 목적에서 시작했다. 그러나 현대에서 인터넷은 사회/경제 전반을 지배할만큼 절대적인 영향력을 가지게 되었다. 그러니 현대에 다시 인터넷을 설계한다면 당연히 전혀 다른 모습의 인터넷이 나올 것이다. 예를 들어 기존의 네트워크를 연결하는 것이 (interconnection) 지상 과제가 아니라, 사용자를 정확히 알아내는 것이 (accountability) 가 최고의 목표일 것이다. 이 때문에 IP 주소 체계는 자의적으로 배정하는 IP 대신 위조하기 어려운 주소 체계여야 할 것이다. 그리고 당시에는 원치 않는 데이터를 보내는 경우를 상상하기 어려웠기 때문에 현재의 인터넷에서는 이에 대한 고려가 빠져있지만, DDoS 가 만연하는 요즘 세상에는 상대방 호스트에게 원치 않는 데이터를 더 이상 보내지 못하게 하는 방법도 고려가 되어야 할 것이다.

결론적으로 서두에서 언급한 것처럼 시스템은 조건의 우선 순위와 트레이드오프에 따라 다른 모습을 가진다. 이를 잘 파악하고 디자인하는 것이 훌륭한 설계이고, 이를 잘 동작하는 것으로 만들어 내는 것은 훌륭한 구현이다. 그리고 인터넷 설계에서 보듯 조건이 달라지면 기존의 시스템이 부적합해질 수도 있다는 것도 기억해야 된다. 앞으로는 레거시 시스템을 마주치게 되면, 그에 대해서 맹목적인 비판을 하기 보다는 그 시스템이 왜 그런 모습을 가지게 되었는지 당시의 조건의 우선 순위는 어땠는지 되짚어 보는건 어떨까 싶다.

다음 컬럼에서는 네트워크 설계에서 핵심 원칙 중 하나로 생각되는 end-to-end 원칙에 대해서 설명한다.

아이펀팩토리 문대경 대표