[김효곤 교수의 인터넷 프로토콜] 1.인터넷, 프로토콜, 그리고 계층화 원칙

당신이 URL을 클릭할 때…

인터넷은 웹에서 링크 하나를 클릭할 때에도 프로토콜이 7개, 그리고 메커니즘 1개가 직접 연루된다.

  • DNS
  • HTTP
  • TCP
  • IP
  • ARP
  • BGP
  • OSPF
  • DHCP
  • NAT

인터넷은 유기적으로 움직이는 거대 프로토콜 시스템

인터넷, 프로토콜, 그리고 계층화 원칙

1.1 인터넷의 시작

  • 미 국방부 DARPAnet (1969) 인터넷의 역사는 인터넷은 DARPA라는 미국 국방부에 소속된 미군 관련 기술 연구개발기관에서 냉전 당시 소련의 핵공격을 받아도 지속될 수 있는 네트워크 망을 구축하기 위한 프로젝트의 일환으로 시작되었다. 달파넷은 독립적으로 운영되다가 미정부의 소유에서 민간으로 넘어오게 된다.
  • 미 국립과학재단 NSFnet (1984) 1981년 미국 국립과학재단(NSF)이 CSNET(컴퓨터 과학망)을 개발하면서 아파넷으로의 접속이 확장되었다.
  • NSFnet이 DARPAnet 대체 (1990) 1986년 NSFNET이 미국의 연구 및 교육 단체의 슈퍼컴퓨터 사이트에 접속을 제공했다. 상용 인터넷 서비스 제공자(ISP)들이 1980년대 말과 1990년대에 병합을 시작하였다. 아파넷은 1990년에 직권이 해제되었다.
  • NSFnet 상업화 (1995) 인터넷은 NSFNET의 직권이 해제된 1995년에 시장에 들어왔으며, 이로써 상용 트래픽을 전달하기 위한 인터넷 사용의 마지막 제한이 제거되었다.

1.2 인터넷, 네트워크의 네트워크

인터넷의 개념

  • Inter = 사이 (間) ~의 사이에 있는 것을 말하며, 중간이라는 의미보다 여러가지 것들을 포괄하는 상층의 무언가를 의미한다. 즉, 우산살과 같이 하위의 여러가지 것들을 연결하기 위해 상층에서 이를 관리하는 모양새로 이해하는 편이 좋다.
  • Net = “네트워크” Net은 네트워크의 약자로 LTE, 이더넷, 와이파이 등등의 다양한 통신 기술을 칭한다.
  • 인터넷은 네트워크의 사이에서 네트워크들을 엮어주는 주체로서, “네트워크의 네트워크”라고 말할 수가 있다. 각각의 네트워크는 서로 전혀 호환되지 않는다. 현실적으로 한 네트워크만으로 전세계를 연결할 수도 없으니 전세계에 분산된 이 호환되지 않는 다양한 네트워크 기술들을 하나로 엮여주는 것이 바로 인터넷의 역할이다.

비호환성 문제 해결 방법

  • 모든 비호환 기술 쌍에 대해 “번역기” 개발 이 방법은 비호환 기술 n개에 대해서 n(n-1)/2 개의 번역기를 개발하는 방법으로, 기술 하나가 추가될 때마다 매번 n개의 번역기를 추가해야한다. 따라서 이는 확장성이 결여되어있다고 할 수 있다.

  • 공통 기술 개발 공통언어, 공통 기술 하나를 중간에 두고, 모든 비호환 기술들이 이것을 통해 소통하는 방법으로 복잡도는 O(n)이며 확장성이 좋다.인터넷은 이 접근 방법을 취하여 각각의 네트워크를 연결했다.

IP의 동작 원리

  • IP : Internetworking Protocol 인터넷(IP)은 각각의 비호환기술이 공유하는 공통 기술이다. 실제 예시를 들어 그 원리를 이해해보자. 와이파이에 연결된 컴퓨터가 LTE나 5G에 연결된 다른 기기와 소통이 가능하다는 것은 어디선가 이 비호환성을 해결해주고 있는 주체가 있다는 것이며, 두 기술의 접점에서 이 역할을 수행해주고 있는 것이 라우터이다.

  • 비호환 기술이 만나는 곳, 라우터(router) 라우터가 동작하는 방식은 시베리아 횡단열차에 비유될 수 있다. 시베리아 횡단 열차는 모스크바-북경 노선을 달릴 때, 몽골에서 중국으로 들어오는 국경에서 열차가 달리는 선로의 너비가 달라지게 된다. 선로의 너비 차이로 인해 몽골까지 달려오던 횡단 열차가 정상적으로 달릴 수가 없게 되는데, 이를 네트워크 기술들의 비호환성과 비유될 수 있다. 이 선로 너비의 차이를 해결하기 위해서 사람들은 객차만을 크레인으로 들어올린 뒤에 기존의 바퀴 대신 새 바퀴 위에 올려놓는다. 이러한 바퀴 교체는 서로 다른 선로를 호환하기 위한 필수 과정이다.

    라우터는 이 과정과 매우 비슷하게 서로 다른 기술을 연결한다. -객차 = ip데이터그램 -바퀴 = 네트워크 기술 프레임 라우터는 전달되는 것의 핵심 내용이자 표준 포맷인 ip데이터그램만을 송신측 네트워크 기술의 프레임에서 떼어내어 수신측 네트워크 기술 프레임에 태우는 방식으로 서로의 기술을 연결한다.

  • 이제 어떤 기술이든 다 연결할 수 있다. 서로 연결된 근접한 기기 사이를 링크라고 부른다. 하나의 링크에는 단 두개의 기기만을 직렬적으로 연결할 수도 있으며, 병렬적으로 세개 이상의 기기를 연결할 수도 있다. 하나의 링크 안에는 단 하나의 네트워크 기술이 사용되므로, 시베리아 횡단열차 예시에서, 국가에 해당한다고 볼 수 있다. (한 나라 안에서 하나의 표준화된 선로만 사용한다고 가정할 때) 우리는 링크와 링크 사이에 라우터를 위치시키고, 앞에서 설명한 방식으로 서로 연결해주기만 하면 전세계를 연결할 수가 있다. 평균적으로 30개 정도의 링크를 거쳐지나가면 지구상의 어느 기기와 연결될 수가 있다.

    목적지가 되는 특정 기기까지 도달하는 데 연결되어야하는 링크의 범위를 인터넷 직경이라고 부르는데, 이 인터넷 직경의 최대치는 약 30홉(링크 단위)정도라고 표현할 수 있는 것이다.

    원하는 목적지의 Ip주소를 적으면 그곳으로 도달하기까지 거쳐야하는 각 홉에 해당하는 라우터의 IP주소를 나열하는 명령어는 다음과 같다. -윈도우 : tracert -리눅스 : traceroute 이 명령어에서 나타나는 정보 중에는 다음 홉까지 가는데 걸리는 시간도 있는데, 유난히 많이 시간이 많이 걸린 홉은 대개 태평양을 건너는 링크이다. 또한 각각 라우터의 도메인 이름을 살펴보면 라우터가 속해진 도시 이름을 예측할 수가 있다.

네트워크 기술이 IP와 연동되기 위한 조건

  • 어떤 “네트워크“ 기술이 IP와 연동하려면? 새로 구축된 네트워크가 IP에 의해서 연결이 되고 싶다면 어떻게 해야할까? IP측에서 네트워크 기술에 요구하는 다양한 조건들이 있으나, 가장 우선인 것은 자신 네트워크 기술의 프레임 안에 IP데이터그램이 실려있음을 표시해야한다는 조건이다. 예를 들어서, 이더넷의 프레임 헤더(헤더란 트레일러의 상대개념으로 컨테이너처럼 포장하고 있는 것을 말한다. 바이너리 관점에서 보았을 때에는 앞쪽에서 이끌어주는 것이 헤더이고 끝에 딸려오는 것이 트레일러이다.)는 16진수로 0800이라는 숫자를 적어놓음으로써 자신의 짐칸에는 IP데이터그램이 실려있다는 표시를 하고 있다. 이처럼 네트워크 기술이 IP데이터그램을 포장하는 과정을 마치 우리가 편지를 쓰고 봉투에 넣을 때 봉투에 자신의 편지에 대한 정보를 써넣는 것처럼 비유될 수 있으며 캡슐화라는 말로 대표될 수가 있다. 캡슐화 과정은 인터넷 기술을 사용하기 위한 필수 과정이다.

  • 모든 “네트워크“ 기술은 IP 밑으로 정렬! 모든 네트워크 기술은 Ip밑으로 정렬되어야 한다. 예전에는 IP 또한 다른 네트워크 기술처럼 특정 범위 한해서만 사용되었고, 미래에도 그렇게 될 줄 알았으나, 네트워크 기술 전쟁 이후로부터 IP가 강력한 포용 능력을 기반으로 다른 모든 기술들을 장악하게 되었다. 이에 따라 다른 네트워크 기술들은 IP가 요구하는 것에 순응하지 않고는 생존할 수 없게 되었다. 이러한 현 상황에 대해서 IP는 3계층, 다른 네트워크 기술을 2계층이라고 불리며, 다른 네트워크 기술들은 2계층으로 ‘전락’한 것이라고 볼 수 있다. IP 기술 또한 각각의 네트워크 기술이 갖는 실질적으로 기기와 기기를 연결하는 다양한 기술들이 제거되고, 각 기술을 연결하기만 하는 데이터링크의 기능만 하는 상태가 되었다.

    모든 네트워크 기술은 IP에 복속되었기 때문에 IP는 모든 기술 위에서 동작한다고 표현할 수 있다. (IP runs on everything)

1.3 프로토콜

프로토콜의 개념

  • 의전(儀典) 프로토콜(Protocol)이라는 말은 의전(儀典)이라는 말로 번역되며, 원래는 통신 분야에서 사용되는 단어는 아니었다. 의전은 외교에서 자주 사용되는 말인데, 일종의 약속을 뜻한다. 회담에서 NO라는 말을 쓰면 안된다든지, 와이셔츠에 특정 색 단추를 달 수 없는 등의 약속들이 예가 될 수 있다.
  • 통신 분야에서 프로토콜은 특정 목적을 달성하기 위해 협조하는 둘 이상의 당사자 사이에 사용되는 엄밀히 약속된 언어를 말한다. 여기서 당사자는 컴퓨터 혹은 소프트웨어가 된다. 실제 예시로 들자면, 우리가 웹 서핑을 하는 것도 웹서핑이라는 목적을 달성하기 위해 우리가 사용하는 컴퓨터가 브라우저를 통해 웹 서버와 1:1 소통하는 현상이다. 이때 약속으로써 정의되는 언어는 매우 반드시 엄밀해야한다. 글자 한자만 틀려도 컴퓨터는 작동 자체가 불가능하기 때문이다.

언어로서의 프로토콜

  • 프로토콜은 현실에서 사용하는 자연언어와 유사한 점이 있다.
  • 프로토콜 규약(spec)은 항상 세가지를 정의한다. 이것들은 자연언어에서도 볼 수 있는 특징들이다.
    1. 메시지 형식 : 통신 프로토콜은 자연언어의 문법과 같다. 우리는 다른 사람과 정상적으로 소통하기 위해 문법을 준수해야 한다.
    2. 메시지 교환 순서 : 메시지 하나하나의 형식은 올바르더라도 순서가 엉망이면 소통이 불가능하다. 순서가 딱하나만 있는 것은 아니지만 제약 조건이 존재한다.
    3. 내부적 행동 : 메시지는 아무 뜻없이 발송되지 않는다. 메시지를 송신한 측은 무언가를 요구한 것이고, 수신받은 측은 이에 따라 반드시 어떤 동작을 수행해야 한다.

메시지 형식

  • 새 프로토콜을 논의할 때 항상 메시지의 형식을 먼저 확인해야 한다.
  • 예: IP 데이터그램

위의 그림은 우리가 자주 보게될 그림으로 메시지 형식을 추상화한 것이다. 전체적으로 사각형 형태를 띄고 있는데, 통신에서 전달되는 데이터들은 당연히 사각형으로 생기지 않고, 0, 1 비트들이 뱀처럼 나열된 모양새일 것이다. 해당 그림은 한줄 한줄을 32 비트 단위로 잘라 한 행으로 놓았다. 푸른 부분은 헤더이고, 가장 밑의 노란 부분이 페이로드이다. 페이로드(영어: payload)는 사용에 있어서 전송되는 데이터를 뜻한다. 페이로드는 전송의 근본적인 목적이 되는 데이터의 일부분으로 그 데이터와 함께 전송되는 헤더와 메타데이터와 같은 데이터는 제외한다.(참고: https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EB%A1%9C%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)#:~:text=%ED%8E%98%EC%9D%B4%EB%A1%9C%EB%93%9C(%EC%98%81%EC%96%B4%3A%20payload),%EC%9D%98%20%EC%9D%BC%EB%B6%80%EB%A5%BC%20%EB%9C%BB%ED%95%9C%EB%8B%A4.)

편지를 보내고자 할 때 배달되기 위해 필요한 정보를 적은 봉투가 필요한 것처럼, 이 페이로드를 다른 곳으로 전달하기 위해 필요한 정보가 헤더이다.

헤더에 적을 것이 많다는 것은 이 프로토콜이 하는 일이 많다는 뜻과 같다.

스위트

  • 인터넷 프로토콜 스위트 (suite; 一切) 자주 사용하게 될 개념 중 하나는 인터넷 프로토콜 스위트(suite)로, IP를 중심으로 모든 인터넷에 쓰이는 프로토콜의 집합을 말한다. 지금도 인터넷 프로토콜 스위트는 확장되고 발전 중이다. (예 : http 1,0, http 1,1, http 1.2 …)

IP를 표준화하는 기관

  • Internet Engineering Task Force (IETF) 인터넷 프로토콜들을 만들고 표준화하는 기관은 IETF로, 이 곳에서 1년 3차례 회의를 한다. 여기서 미국방부가 IP를 관리했을 때의 잔재가 남아있는 것을 확인할 수 있는데, Task Force가 그렇다. 이 말은 군대에서 사용되는 용어로, 표준을 만든 단체에 군대 용어가 붙은 것은 이 기관이 국방부 소속이었기 때문이다. 아무튼 IP 표준을 만들기 위해서는 표준이 될 수 있는 후보가 Standard -> Draft Standard -> Standard 각 단계를 거쳐 인증되어야 한다. 그리고 최종적으로는 RFC라는 이름의 문서에 기록된다.

1.4 계층화 원칙 (Layering Principle)

생활속 계층화 원칙

  • 수많은 인터넷 프로토콜들은 계층화 원칙을 중심으로 조직화되어 있다.

  • 생활 속의 계층화 원칙 계층화원칙은 우리 생활에서도 찾아볼 수 있는데, 예를 들면 우리나라에서 아마존에서 판매중인 책을 주문했을 때, 아마존 직원이 직접 책을 가져다주는 것이 아니라, 다양한 주체와 단계를 통해서 책이 도착하게 된다. 송신측에서 수신측까지의 전달을 한 주체가 모두 해결할 수는 없기 때문에 이를 계층적으로 조직화하게 된다.

    아래의 그림처럼 아마존은 책을 포장하고, 트럭에 실어서 미국 우체국에 배송하면, 우체국은 공항까지 책을 전달한다. 책은 비행기를 타고 한국 공항에 도착하게 되며, 이를 한국 우체국이 공항에서 고객의 집까지 배송한다.

이 과정을 계층적으로 나눈다면 총 세개의 계층이 있다.

  • 고객과 아마존 : 송신측과 수신측, 출발지와 목적지
  • 미국과 한국의 우체국 : 송신/수신측과 항공사를 연결
  • 항공사 : 국경을 건너서 책을 배송

현실적으로는 이 계층들 사이사이에 더 다양한 계층이 존재할 수 있다.

7계층/5계층 모델

앞에서 설명한 것처럼 인터넷을 통해서 메시지가 전달될 때에도 각각의 프로토콜들이 계층적으로 조직화되어있다. 인터넷 프로토콜은 OSI라고 불리는 가장 대표적인 7계층 모델과 실질적으로 현실에서 사용되고 있는 5계층 모델이 있다.

  • 교과서적인 OSI (Open Systems Interconnect) 7 계층 모델
  • 현실에서의 승자, 인터넷 5 계층 모델

각각의 계층은 서로 위 아래로 붙어있는 계층에만 관심이 있으며 이외에 접점이 없는 다른 계층들에 대해서는 전혀 모른다. 이럴 경우 가장 좋은 점은 모듈화가 가능하다는 점이다. 모듈화는 각 구조를 이루는 조각들이 다른 것으로 바꿔끼우는 일이 용이하게끔, 분리되는 것을 말한다.

아마존이 각 계층의 주체들은 자기와 동등한 레벨에 대응되는 상대측(peer)의 계층, 그리고 잣니의 위 아래 레벨에 해당하는 계층하고만 대화하므로, 총 세 개의 방향으로만 대화한다. Peer과는 프로토콜을 통해, 위아래 계층과는 서비스 인터페이스를 통해 소통한다.

OSI는 TCP/IP하고 경쟁했던 기술이지만 이제는 더 이상 사용되지 않는다. 그러나 OSI 모델은 인터넷 프로토콜 계층 구조를 명확히 이해하는데 도움이 되므로, 교과서처럼 여전히 많은 곳에서 가르치고 있다.

OSI의 7계층이 Application Layer가 5계층 모델에서 5계층인 Application Layer와 의미가 동일하지 않다. 5계층은 OSI의 상위 3계층을 어플리케이션 레이어라는 하나의 계층으로 통합한 것이며, 5계층의 Application Layer는 7계층의 상위 계층 기능을 모두 포함한다.

각 계층의 역할

  1. 물리 계층(Physical Layer) 이 계층만이 현실에서 존재하는 것이고, 나머지 위의 모든 상위 계층들은 illusion, 즉 논리적인 존재이다. 여기서 논리라는 의미는 우리가 익히 알고 있는 논리의 의미와는 조금 다르다. 여기서 의미하는 논리는, 마치 누군가와 통화할 때 수화기 너머로 들리는 소리가 사람의 목소리처럼 들리도록 모사된 허상인 것과 같다.

    따라서 물리계층은 정말로 어떤 메시지가 물리 매질(구리선, 공간, 광섬유, 물 등)을 통해서 전달되는 과정을 책임진다. 그리고 나머지 상위 계층은 물리계층에 의해 운반되는 허상이다.

    이 물리계층에 의해서만 자연현상이 발생한다. 각 매질마다 여기에다가 이진정보를 싣는 방법은 다양한데, 이 방법을 구현하는 것이 물리계층이다. 즉 물리 계층은 물리 매체에 어떻게 어떻게 bit들을 실을 것인가에 고민한다.

  2. [데이터] 링크 계층 ([Data]Link Layer) 물리계층에서 물리적인 매체를 통해 표현된 비트들을 묶어 한단위로 모으고(framing) 하나의 링크를 건너가게 해주는 과정을 담당하는 것이 데이터링크 계층이다. 데이터링크의 주요 역할은 다음과 같다.

    • 프레이밍(Framing) : 최하위 계층인 물리 계층에서는 데이터가 비트 스트림(처음과 끝이 없는 줄줄이 비트들)으로 보이지만, 데이터링크계층에서 이 스트림들을 패킷들로 분리하기 떄문에 이 계층을 지나면 패킷의 처음과 끝을 알 수 있게 된다.
    • 흐름제어(Flow Control) : 에러 보정을 위한 에러 제어 등의 기능을 제공한다. 물리전송 매체 특성상 오류와 잡음이 랜덤하게 작용할 확률이 높아 전송 오류를 검출하고 수정하는 것이다.
    • 순서제어(Sequence Control) : 패킷이나 ACK 신호를 잘못 혼동하는 것을 피하기 위해서 패킷과 ACK신호에 일련번호를 부여한다.

    데이터 링크 계층은 네트워크 계층에서 전달되어 내려온 패킷에 데이터링크 계층의 헤더와 트레일러를 덧붙여서 데이터 프레임을 만든다. 헤더와 트레일러의 내용은 네트워크 유형에 따라 다르다. 일반적으로 헤더에는 프레임의 시작을 알리는 플래그를 시작으로 목적지의 주소가 포함되며, 트레일러에는 에러 검출을 위한 체크섬과 패킷의 끝을 알리는 플래그 등으로 구성된다.

  3. [인터]네트워크 계층([Inter]Network Layer) 한 링크를 건너가는 과정을 데이터링크 계층이 담당했다면, 서로 호환되지 않는 네트워크에 해당하는 각 링크들 사이를 연결하는 (인터)네트워킹 과정을 담당하는 계층이다. 즉 링크들을 엮어 그물망을 만들기 위한 인터네트워킹 프로토콜(IP)로 대표될 수 있다..

    각각의 컴퓨터 안에는 5계층 프로토콜 계층들이 존재하고, 이 둘 사이를 연결해주는 링크들이 있는데(사실은 물리계층에서만 실제로 연결되어있긴 하다) 이 양측을 연결하는 하나의 링크를 건너가고 나면, 라우터를 만나게 될 것이다.

    이 라우터 안에는 물리, 데이터링크, 네트워크 계층의 범위까지만 해당하는 스택이 들어있다. 송신측 컴퓨터에서는 응용계층에서부터 데이터가 만들어지고, 각 계층을 지나면서 편지를 봉투에 겹겹이 넣듯이 껍데기가 모두 입혀지고 나면, 주어진 물리 매체를 통해서 한 링크를 건너간다. 한링크를 건너가서 라우터를 만나면 라우터는 인터네트워킹 기술을 통해서 다른 네트워크 기술에 해당하는 링크로 데이터를 넘겨줘야한다.

    네트워크 계층은 이 인터네트워킹 기술을 담당하는 프로토콜을 의미한다. 그리고 앞에서 설명했다시피, 라우터는 손신측에서 들어온 데이터에서 링크 계층(+물리계층)에 해당하는 프레임을 떼버리고, 다음으로 보내줄 링크 계층에 해당하는 프레임에 IP 데이터그램만을 태움으로써(링크를 건너가기 위해 물리계층도 추가) 인터네트워킹을 구현한다. 이것이 IP 기술의 주요역할이다.

    세계를 잇고 있는 몇개의 주요 라우터를 중심으로, 우리가 사용하는 기기들이 다닥다닥 붙어있는 모양새라고 생각해볼 수 있다.

  4. 트랜스포트 계층(Transport Layer) 물리계층, 데이터링크 계층, 네트워크 계층에 의해서 무언가가 지나다니는 길이 조성되었다면, 이제 그 길 위에서 실질적으로 무언가를 운송해주는 역할이 필요하다. 이것이 프랜스포트 계층이다.

  5. 응용 계층(Application Layer) 이제 길과 운송 기능까지 모두 조성되었다면 이를 응용해서 메시지를 보내어 무언가 목적을 달성할 수 있게 해주는 어플리케이션 계층이 하위게층 위에 쌓이게 된다.

이것들이 모두 우리가 사용하는 모든 기기에 들어있다. 서로 연결되어 무언가가 전송되는 두 기기 있다면, 기기 안에는 모든 계층이 구현되어있지만, 실제로 기기가 서로 연결되어있는 계층은 물리 계층이다. 실제로 물리매체를 통해서 데이터가 전달되기 때문이다.

  • 5 계층… 이들은 다 어디 있을까?

    1. 물리 계층 : 하드웨어 요즘은 주로 통신 칩으로 구현되어있고, 노트북을 쓰고 있다면 CPU 칩 안에 일부를 차지하고 있다.
    2. 데이터 링크 계층 : 아래 절반 - 하드웨어에 구현된다. 위 절반 - OS 커널 안에 구현된다.
    3. 네트워크 계층, 트랜스포트 계층 : 커널 안에 구현된다.
    4. 응용 계층 : 응용 소프트웨어 내에 구현된다.

    인터페이스를 통해 계층 사이에서 데이터를 주고받는다.

1.5 캡슐화(Encapsulation)와 멀티플렉싱(Multiplexing)

배달 구간과 Encapsulation/Decapsulation

캡슐화(encapsulation)는 편지 봉투 안에 편지를 넣고, 봉투 위에 배달에 필요한 정보(목적지/출발지 주소)들을 적는 것과 같다. 통신 프로토콜 스택에서의 캡슐화도 이와 같은 역할을 한다. 캡슐화의 목적은 보안도 있지만 가장 중요한 것은 목적지 주소를 적는 데에 있다. 봉투 역할을 하는 것에는 헤더와 트레일러가 있다. 주로 중요한 정보(출발지/목적지 주소)는 헤더에 적혀있고, 오류가 있는지 정도의 부가적인 정보는 트레일러에 적힌다.

그런데 각 프로토콜 계층마다 전달을 담당하는 구간이 다르다. 따라서 각 계층에 따라 목적지를 적는 봉투도 상이하다.

각 프로토콜 계층에서 담당하는 구간의 목적지에 도달하면 그 계층에 해당하는 봉투가 개봉되는데, 이를 Decapsulation이라고 한다. 예를 들어, 데이터링크 계층은 한 링크만을 지나가는 과정을 책임지는데, 송신기기의 데이터링크 계층에서 encapsulation된 봉투가 한 링크를 지나 라우터에 도착하면 decapsulation되는 것이다.

각 계층을 지나면서 차례차례로 Encapsulation된 헤더와 트레일러는 결국 목적지 기기에 도착하면 각 계층에 해당하는 것들만이 역순으로 하나씩 Decapsulatione되고, 안에 있는 알맹이만이 위 계층으로 올라가게 된다.

Multiplexing/Demultiplexing

멀티플렉싱은 아래 계층의 프로토콜이 위 계층의 프로토콜의 여러 종류를 서비스하는 것을 뜻한다. 송신기기와 수신기기의 서로 같은 계층에 해당하는 프로토콜(peer protocol)들 종류는 동일해야 한다. 이를 실현시키기 위해서 하위 계층은 상위 계층의 프로토콜 종류에 대한 정보를 헤더에 적는다. 예를 들면, 이메일을 보내기 위해 데이터를 송신할 때 TCP 프로토콜을 사용하고, TCP(트랜스 포트 계층)가 IP(네트워크 계층)에게 부탁하면 IP가 그에 해당하는 봉투를 encapsulation할 것이다. 그리고 수신측 기기에 도착해서 데이터링크 계층의 봉투가 모두 decapsulation되고, IP데이터그램이 그 안에서 나오게 되면 여러 개의 트랜스포트 계층 프로토콜 (TCP, UDP 등등)중 TCP으로 가라고 안내해주는 것이다. 즉, 송신 측의 네트워크 계층에서 encapsulation이 일어날 때, 상대방 기기에 도착하면 이를 TCP에 전달해달라는 정보가 함께 추가된 것이다.

  • Multiplexing 구체적으로는 아래 그림처럼 HTTP가 TCP에 요청하면 TCP는 그에 따라 헤더에 80번을 적는다. TCP는 이어서 IP에 요청하면 IP 헤더에는 6번이라고 적힌다.
  • Demultiplexing 수신기기에서 계층 역순으로 헤더와 트레일러가 벗겨지는데 이때 네트워크 계층의 헤더에 6번이 써져있는 것을 보고 트랜스포트 계층의 TCP로 보내고, TCP에서는 80번을 확인하고 HTTP로 보내게 된다.

1.6 통신 방식[에 따른 프로토콜] 분류 기준

통신 방식을 여러 기준으로 분류해볼 수가 있다.

  • 양방향 (duplex) vs. 단방향 (simplex) 통신하는 양 측 사이에 데이터가 가는 방향이 단방향인지, 혹은 양방향인지에 따라 나눌 수 있다. 그런데 단방향 통신은 완전한 통신의 형태라고 하기엔 모호한 감이 있다. 양방향 통신도 Full-duplex와 Half-duplex로 나뉠 수 있다. Full-duplex는 동시에 데이터가 양방향으로 갈 수 있는 통신이지만 Half-duplex 한 순간 동시에는 한 방향으로만 갈 수 있는 통신이다. 마치 무전기와 같은 원리라고 비유하여 생각해볼 수 있다. 대부분의 무선 통신이 Half-duplex에 속한다. LTE, 5G는 Full-duplex이지만 구현에 관점에서 보면 좀 더 이야기가 복잡해진다.

  • 연결지향 (connection-oriented) vs. 비연결 (connectionless) 전화선과 같이 반드시 연결이 맺어지고 나서야 통신이 가능해지는 것을 연결지향 통신이라고 한다. 비연결은 완전히 연결되지 않더라도 일단 데이터를 보낼 수 있는 통신인데, 가장 대표적인 것이 IP이다. IP의 가장 태생적인 특징으로, 미국방부가 소련과의 핵전쟁을 염두에 두고 구축했으므로 연결이 충분히 되지 않는 환경에서도 데이터를 보낼 수 있는 형태로 설계했기 때문이다.

  • 패킷 교환 (packet switching) vs. 회선 교환 (circuit switching) 패킷 교환은 데이터를 조각조각 나눠서 보내는 통신 형식을 말한다. 패킷은 계층마다 부르는 이름이 다 다르다. 각 계층에서 패킷을 칭하는 용어

    • 데이터링크 : 프레임
    • IP : 데이터 그램
    • TCP : 세그먼트

    회선 교환과 같은 아날로그 형식의 통신은 데이터를 패킷처럼 끊어서 보내는 것이 불가능하다.

Comments