란디의 메모장

안타깝게도 시스템 설계에는 자원의 한계나 요구조건의 상충같은 문제 때문에, 모든 것이 가능한 시스템을 설계하는 것은 불가능하다. 따라서 시스템 설계에 있어서는 만드는 시스템이 어떤 가정하에서 동작하며, 그 가정이 갖춰질 때 어떤 동작이 보장되며, 어떤 동작이 보장되지 않는지에 대한 트레이드오프를 이해하고 그에 따라 인터페이스와 아키텍처를 설계하는 것이 무엇보다 중요하다.

... 주어진 문제에서 반드시 보장해야되는 것과 보장하지 않아도 되는 것에 따라서 트레이드 오프를 선택하는 과정이 필요하다.


설계 중심의 시스템 구현


... 눈을 뜨는 순간부터 잠들기까지 사용하는 인터넷은 어떤 설계 조건과 트레이드 오프에 대한 고려에 따라 지금의 모습이 된 것일까?


... David Clark 교수님이 1988년에 쓴 논문에는 당시의 인터넷 설계에서의 우선순위를 보여주고 있다. 그 우선 순위를 옮겨 적어보면 다음과 같다.

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

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


...


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


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


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


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


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


...


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


공유하기

facebook twitter kakaoTalk kakaostory naver band