패킷 교환 방식으로 데이터를 전송하는 인터넷
TCP/IP 모델의 핵심인 IP 프로토콜과 TCP 프로토콜은 전 세계에 존재하는 수만 가지의 LAN을 연결하여 인터넷을 구축하고 데이터를 전송하기 위한 규칙입니다. 전 세계를 연결하는 복잡한 네트워크인 인터넷에서는 엄청난 양의 데이터를 보다 효율적이고 안정적으로 전송하기 위해 패킷 교환 방식으로 데이터를 전송합니다. 따라서 TCP와 IP는 패킷 교환 방식에 따라 데이터를 전송할 때 사용하는 프로토콜입니다.
이번 포스팅에서는 TCP와 IP대해 자세히 살펴보기 전에 TCP/IP의 기반이 되는 인터넷의 데이터 전송 방식인 패킷 교환 방식에 대해 살펴보도록 하겠습니다.
네트워크에서 데이터의 전송 방식
노드와 링크로 구성된 네트워크
수많은 컴퓨터와 네트워크 장비를 전송 매체로 연결한 네트워크는 <그림 1>과 같이 노드와 링크로 구성되어 있습니다. 네트워크의 가장자리에 연결된 노드, 즉 인터넷에서 데이터의 최초 송신지 또는 최종 수신지 역할을 하는 노드를 호스트, 호스트 사이에 위치한 노드를 중간 노드라고 합니다. 즉, 네트워크는 상호 연결된 노드의 모임으로 구성되며, 중간 노드를 경유하여 송신지 호스트에서 수신지 호스트로 데이터가 전송됩니다.
노드 자세히 ⇒ <개발자의 단어> 노드, 호스트, 서버와 클라이언트의 구별
노드와 링크를 통한 데이터 전송
송신 호스트가 전송한 데이터가 중간 노드에 도착하면 노드와 연결된 링크 중에 어떤 링크로 이동할지를 선택해 다음 노드로 이동합니다. 수신 호스트에 도착할 때까지 데이터는 노드를 이동하면서 각 노드에 연결된 적절한 링크를 선택하는 과정을 반복하며 이동 경로를 찾아갑니다.
<그림 1>에서 호스트 A에서 호스트 D로 데이터를 전송하는 경우, 호스트 A가 보낸 데이터는 먼저 노드 ①로 전송됩니다. 노드 ①에 도착한 데이터는 자신과 연결된 노드 ②, 노드 ③, 노드 ④로 가는 링크 중 하나를 선택해서 이동합니다. 노드 ④로 가는 링크를 선택한 경우 다시 노드 ④와 연결된 노드 ⑥과 노드 ⑦로 가는 링크 중 하나를 선택해서 이동합니다. 각 노드에서 어떤 링크를 선택하느냐에 따라 호스트 A에서 호스트 D로 데이터가 이동하는 경로는 노드 ① ⇒ 노드 ③ ⇒ 노드 ⑥ ⇒ 노드 ⑦, 노드 ① ⇒ 노드 ④ ⇒ 노드 ⑦, 노드 ① ⇒ 노드 ② ⇒ 노드 ⑤ ⇒ 노드 ⑦ 등 다양합니다.
송신 호스트에서 수신 호스트로 데이터를 전송할 때 노드가 연결된 링크 중에서 어떤 링크를 거쳐 데이터를 이동시킬 것인지, 다시 말하면 송신 호스트에서 수신 호스트까지 가는 다양한 이동 경로 중에 어떤 경로를 선택해서 데이터를 전송할 것인지 결정하는 방법에는 크게 회선 교환 방식과 패킷 교환 방식이 있습니다.
회선 교환 방식과 패킷 교환 방식
회선 교환 방식
회선 교환 방식(Circuit switching)은 통신하고자 하는 두 호스트가 데이터를 전송하기 전에 미리 하나의 고정된 이동 경로를 설정하는 방식입니다. 미리 설정된 이동 경로는 두 호스트만이 독점적으로 사용하는 전용 경로가 되며, 통신을 종료할 때까지 변경되지 않기 때문에 모든 데이터가 같은 경로로 전달됩니다.
호스트 A가 호스트 D에게 데이터를 전송하기 전에 노드 ① ⇒ 노드 ④ ⇒ 노드 ⑦을 거치는 이동 경로를 설정하면 두 호스트 간에 통신이 종료될 때까지 모든 데이터는 이 이동 경로로만 전송됩니다.
외형상 호스트 A와 호스트 D 간에 가장 효율적인 경로는 노드 ① ⇒ 노드 ④ ⇒ 노드 ⑦을 거치는 이동 경로입니다. 그러나 데이터 전송 시점에 노드 ④의 트래픽*이 많은 경우라면 오히려 노드 ① ⇒ 노드 ③ ⇒ 노드 ⑥ ⇒ 노드 ⑦의 경로나 노드 ① ⇒ 노드 ② ⇒ 노드 ⑤ ⇒ 노드 ⑦의 경로가 더 효율적인 이동 경로일 수 있습니다.
*. 트래픽(traffic)은 네트워크에서 일정 시간 내에 전송되는 데이터의 양을 의미합니다. 따라서 트래픽 이 많다는 것은 전송되는 데이터 전송량이 많다는 뜻입니다.
어떤 이동 경로가 더 나을지는 데이터를 전송하는 시점의 네트워크 혼잡도 등 여러 요인에 따라 달라지는 데 회선 교환 방식은 데이터 전송 전에 미리 이동 경로를 결정하기 때문에 데이터 전송 시의 이동 경로가 효율적이지 못한 경우가 발생합니다.
또한 회선 교환 방식을 사용하면 이미 설정된 이동 경로는 설정이 해제되기 전까지 데이터를 전송하지 않을 때에도 다른 호스트가 이 이동 경로를 사용할 수 없게 된다는 측면에서도 비효율적입니다.
이러한 회선 교환 방식의 비효율성을 개선한 것이 패킷 교환 방식입니다.
패킷 교환 방식
패킷 교환 방식(Packet Switching)은 미리 고정된 이동 경로를 설정하지 않는 대신 데이터를 패킷(Packet)이라고 하는 작은 단위로 나누어 전송하는 방식입니다. 패킷은 네트워크에서 데이터를 전송하기 쉽도록 분할한 전송의 기본 단위입니다. 데이터는 네트워크를 통해 전송되기 전에 패킷이라는 작은 조각으로 나뉘고, 각 패킷에는 고유 번호가 있어서 네트워크를 거쳐 최종 수신지에 전송되었을 때 원래의 데이터로 재결합됩니다.
각 패킷은 전송 당시 가장 효율적인 경로를 각자 설정해 최종 수신지까지 이동합니다. 즉 미리 정해진 경로가 없이 전송 당시의 상황에 따라 매번 다른 경로로 갈 수도 있습니다.
패킷 교환 방식의 데이터 전송이 가능하기 위해선 패킷을 수신한 중간 노드가 패킷의 수신지 호스트를 확인하고 수신지 호스트까지 가는 다양한 경로 중 그 당시 가장 좋다고 판단되는 경로를 따라 다음 중간 노드로 패킷을 전송하는 기능, 즉 라우팅을 수행해야 합니다. 이러한 라우팅을 수행하는 중간 노드가 바로 라우터라는 네트워크 장비입니다.
송신 호스트에서는 네트워크가 사용하는 프로토콜*을 사용하여 데이터를 작은 단위로 분할하고, 분할된 데이터 앞에 패킷의 번호, 패킷의 송신지 및 수신지 등 패킷의 전송을 제어하기 위한 정보**를 담은 패킷 헤더를 붙여 패킷이라는 형태로 변환하여 네트워크로 전송합니다. 이렇게 데이터가 패킷이라는 단위로 변환되는 과정을 캡슐화(Encapsulation)라고 합니다.
*. 패킷 교환 방식에서 패킷을 만들고 재결합할 때 사용되는 패킷 헤더에 기록되는 정보와 그 정보를 어떻게 처리할 것이지에 대해서는 프로토콜이 정합니다. 인터넷에서 패킷을 만들 때 사용하는 대표적인 프로토콜이 TCP와 IP 프로토콜입니다.
**. 패킷마다 독립적으로 전송되기 때문에 어디에서 어디로 가는지에 대한 정보를 모든 패킷이 가지고 있어야 하고, 패킷을 다시 결합하여 데이터를 만들 수 있도록 모든 패킷은 저마다 고유 번호를 갖고 있어야 합니다.
캡슐화 자세히 ⇒ TCP/IP 데이터 통신(ft. 캡슐화와 역캡슐화)
아래 <그림 4>와 같이 송신 호스트 A가 수신 호스트 D로 전송한 패킷은 중간 노드인 라우터의 라우팅에 따라 패킷 ①은 노드 ① ⇒ 노드 ③ ⇒ 노드 ⑥ ⇒ 노드 ⑦의 경로로, 패킷 ②는 노드 ① ⇒ 노드 ④ ⇒ 노드 ⑦의 경로로, 패킷 ③은 노드 ① ⇒ 노드 ② ⇒ 노드 ⑤ ⇒ 노드 ⑦의 경로로 전송될 수 있습니다.
이처럼 송신 호스트가 전송한 각 패킷들은 서로 독립적인 라우팅 과정을 거쳐 수신 호스트에 도착하기 때문에 패킷마다 전송에 걸리는 시간이 다르고, 출발한 순서와 무관하게 수신 호스트에 도착합니다. 즉, 패킷 간 전송 순서가 보장되지 않기 때문에 수신지 호스트에서는 송신지 호스트가 전송한 패킷이 모두 도착하면 프로토콜을 사용하여 패킷 헤더를 읽고 패킷의 순서를 다시 정리해서 원래의 데이터로 패킷을 재결합합니다.
<그림 4>에서 수신지 호스트 D는 패킷 ①, ②, ③을 전부 수신하면, 패킷 ②, ①, ③의 순서로 도착했더라도 패킷 ①, ②, ③의 순서로 정리한 후 원래의 데이터로 재결합합니다.
패킷 전송 방식을 사용하면 패킷이 전송될 때마다 최적의 경로를 찾아 이동하기 때문에 전송 효율이 높고, 노드와 노드 간의 링크를 다수의 패킷이 공유하기 때문에 링크를 독점하는 회선 교환 방식보다 효율적입니다.
이러한 효율성으로 인해 인터넷에서 컴퓨터가 데이터를 주고받을 때는 패킷 교환 방식을 사용합니다.
인터넷뿐만 아니라 과거 회선 교환 방식을 사용하던 전화, 이동통신 등의 통신 서비스도 점차 패킷 전송 방식으로 전환되어 패킷 전송 방식을 기반으로 서비스의 특성에 따라 변형된 형태로 사용되고 있습니다. 대표적으로 이동 통신에서도 LTE부터는 모든 통신이 패킷을 사용하는 방식으로 만들어졌습니다. 따라서 정보통신 네트워크에서 데이터는 패킷이라는 작은 단위로 분할되어 라우터를 통해 전송되는 것이 기본이라고 할 수 있습니다.
패킷 교환 방식과 TCP/IP의 데이터 단위
패킷은 인터넷에서 전송되는 데이터의 기본 단위로 '헤더'와 '데이터 조각'이라는 두 부분으로 구성됩니다. 패킷의 헤더에 패킷의 송신지와 수신지 등 패킷의 전송을 제어할 수 있는 정보가 담겨 있기 때문에 패킷이 송신지와 수신지에서 하나의 단위로 취급되어 전송하는 데이터 단위가 될 수 있습니다. 보내는 사람의 주소와 받는 사람의 주소가 씌여진 소포나 택배가 하나의 단위로 배송되는 것과 같은 원리입니다.
패킷을 만들고, 전송하고, 재결합할 때 사용되는 헤더에 기록되는 정보와 그 정보를 어떻게 처리할 것인지에 대해서는 프로토콜이 정하고, 프로토콜에 따라 데이터에 헤더가 추가되어 패킷이라는 단위로 변환되는 과정이 캡슐화입니다.
앞서 TCP/IP에 의한 데이터의 전송 과정을 살펴볼 때 패킷과 캡슐화라는 용어가 등장했습니다. 아래 <그림 5>와 같이 데이터가 송신 호스트의 응용 계층에서부터 네트워크 인터페이스 계층으로 이동하면서 헤더가 추가되는 과정을 캡슐화라고 했습니다. 또한 캡슐화된 데이터를 구분하기 위해 각 계층마다 별도의 데이터 단위가 존재하고 인터넷 계층에서 사용되는 데이터 단위가 데이터그램 또는 패킷이라고 했습니다. TCP/IP를 사용하는 인터넷이 패킷 교환 방식에 기반해서 데이터를 전송하고 있기 때문에 각 계층에서 프로토콜에 따라 데이터를 처리하고 헤더가 추가되는 과정을 캡슐화라고 한 것입니다.
TCP/IP에 의한 데이터의 전송 과정 자세히 ⇒ TCP/IP 데이터 통신(ft. 캡슐화와 역캡슐화)
따라서 각 계층이 데이터를 프로토콜에 따라 처리하고 헤더를 추가한 데이터 단위가 모두 패킷입니다. 즉, 응용 계층의 메시지, 전송 계층의 세그먼트, 인터넷 계층의 데이터그램, 네트워크 인터페이스 계층의 프레임이 각 계층에서 패킷을 부르는 이름인 것입니다. 패킷의 헤더가 송신지와 수신지 정보를 담고 있기 때문에 하나의 전송 단위로 취급되어 <그림 5>처럼 각 계층에서 볼 때 패킷인 각각의 데이터 단위를 전송할 수 있게 되는 것입니다.
인터넷 계층에서 만들어진 패킷을 부를 때 데이터그램이라는 이름 대신 그냥 패킷이라고 사용하기도 합니다*. 특히 IP 프로토콜에 따라 만들어진 IP 데이터그램을 IP 패킷 또는 그냥 패킷이라고 부르는 경우가 많습니다. 즉 패킷은 네트워크에서 전송되는 데이터의 기본단위이면서, 인터넷 계층에서 정의되는 데이터 단위를 의미하기도 합니다.
*. 송신 호스트의 인터넷 계층에서 만든 데이터 단위가 라우터로 전송되고 라우팅을 통해 수신 호스트까지 전달되기 때문에 패킷 교환 방식을 대표하는 측면이 있습니다.
패킷 전송 방식의 패킷은 누구?
패킷 전송 방식의 패킷은 데이터를 효율적으로 전송하기 위해 데이터를 작은 조각으로 분할하고 분할된 조각에 헤더를 붙여 캡슐화 데이터를 의미합니다. 그리고 이 패킷을 라우터가 라우팅을 통해 송신 호스트에서 수신 호스트까지 전송하는 것이 패킷 교환 방식입니다.
TCP/IP의 4계층에서 만들어진 데이터 단위가 모두 헤더와 데이터로 구성되어 있다는 측면에서 패킷의 종류이지만, 원본 데이터를 분할하여 전송의 효율성을 꾀하는 패킷 전송 방식의 패킷을 만드는 것은 전송 계층의 TCP 프로토콜입니다. 그래서 전송 계층에서 만든 데이터 단위가 '부분, 분할하다'는 뜻을 가진 세그먼트*(segment)입니다.
*. 정확히는 전송 계층에서 TCP 프로토콜에 따라 분할한 데이터에 헤더를 붙인 것을 세그먼트라고 합니다. 전송 계층에는 TCP외에 UDP 프로토콜이 있는데 UDP는 데이터를 분할하지 않고 상위 계층에서 받은 데이터에 헤더를 붙이기 때문에 데이터그램이라고 합니다.
그런데 인터넷 계층에서 사용하는 데위터 단위 즉, IP 프로토콜에 따라 변환된 데이터 단위인 IP 데이터그램을 IP 패킷이라고 부르는 경우가 더 많고 때로는 그냥 패킷이라고 부르기도 합니다. TCP 프로토콜이 만든 세그먼트가 아니라 IP 프로토콜이 만든 데이터그램을 패킷이라고 부르는 이유는 무엇일까요?
TCP 프로토콜이 데이터를 분할해서 만든 세그먼트를 수신 호스트까지 전송할 수 있는 IP 주소가 IP 데이터그램의 헤더에 담기기 때문입니다. 라우터가 이 IP 주소를 기반으로 라우팅을 하는 과정이 곧 인터넷에서 패킷 교환 방식에 따라 데이터가 전송되는 과정이기 때문에 IP 데이터그램을 패킷 교환 방식의 패킷이라고 볼 수 있는 것입니다.
결국 TCP 프로토콜과 IP프로토콜이 함께 패킷 교환 방식의 패킷을 만들고 전송하는 규칙을 정하고 있는 것입니다.
따라서 패킷은 네트워크에서 패킷 교환 방식에 따라 전송되는 데이터의 기본 단위를 의미하기도 하고, 인터넷 계층에서 정의되는 데이터 단위를 의미하기도 하며, 인터넷에서 IP 프로토콜에 만들어진 IP 데이터그램을 의미하기도 합니다.
TCP 프로토콜과 IP 프로토콜
앞서 TCP/IP 모델의 4개의 계층 중에서 응용 계층은 데이터의 내용에 따른 서비스를 처리하는 역할을 하고, 하위 3개의 계층이 데이터 전송을 책임지는 역할을 한다고 했습니다. 하위 3개의 계층 중 최하위 계층에 위치한 네트워크 인터페이스 계층은 LAN 안에서 물리적으로 연결된 네트워크 기기 간에 데이터 전송을 담당하기 때문에 LAN이 연결된 인터넷에서의 데이터 전송을 책임지는 것은 결국 전송 계층과 인터넷 계층입니다. 전송 계층의 TCP 프로토콜과 인터넷 계층의 IP 프로토콜이 패킷 교환 방식을 구현하여 인터넷에서 정확한 목적지까지 효율적인 데이터 전송을 가능하게 하기 때문에 인터넷의 핵심이 TCP와 IP인 것입니다.
TCP/IP 계층의 역할 자세히 ⇒ TCP/IP 계층의 특징과 역할
전송 계층과 인터넷 계층은 메시지(응용 계층의 패킷)가 송신 호스트에서 수신 호스트까지 실제 전송되는 과정을 책임집니다.
송신 호스트의 전송 계층이 전송하려는 메시지를 여러 개의 패킷으로 나누어서 인터넷 계층으로 보냅니다(세그먼트 전송). 인터넷 계층은 이 패킷(세그먼트)을 수신지 호스트까지 하나씩 전송하는 역할을 합니다. IP 프로토콜을 사용하여 세그먼트에 수신지 호스트의 IP 주소를 담은 IP 헤더를 부착한 패킷(IP 데이터그램)을 전송하고, 중간 노드인 라우터가 IP 주소를 기반으로 한 라우팅을 통해 수신지 호스트까지 전송하는 것입니다.
수신지 호스트의 인터넷 계층에서 패킷 헤더의 IP 주소를 읽고 자기한테 온 패킷이 맞으면 전송 계층으로 넘깁니다. 전송 계층에서는 세그먼트 헤더의 정보를 읽고 수신한 패킷들을 재결합하여 메시지를 만들고 메시지를 보낼 애플리케이션을 확인하여 전송합니다. 인터넷 계층에서는 IP 주소로 수신지 호스트까지 패킷을 전송하는 역할을 할 뿐 모든 패킷이 재결합할 수 있도록 오류나 중복 없이 제대로 전송되었는지를 확인하는 역할은 전송 계층이 합니다. 이때 사용하는 프로토콜이 TCP입니다. 인터넷 계층에서 전송되는 패킷들이 각각 독립적으로 전송되기에 송신되는 순서와 다르게 도착할 수도 있습니다. 그래서 TCP 프로토콜은 모든 패킷이 오류 없이 전송되었는지 확인하고, 송신 호스트가 보낸 순서대로 패킷을 받아 재결합할 수 있도록 전송 과정을 제어합니다. 즉, 전송 계층은 패킷을 재결합한 메시지가 수신 호스트로 올바르게 전송될 수 있도록 보장하는 역할을 하는 것입니다.
이렇게 인터넷 계층이 IP 프로토콜을 사용하여 각 패킷의 전송을 책임지는 반면 전송 계층에서는 TCP 프로토콜을 사용하여 전체 메시지의 전달을 책임집니다.
다음 포스팅에서는 패킷의 전송을 책임지는 IP 프로토콜에 대해 자세히 살펴보도록 하겠습니다.
참고 자료
정기철, 「인공지능 시대를 위한 컴퓨터 과학 개론」, 한빛아카데미, 2020.
다케시타 다카후미 외 3인, 이영란 역, 「마스터링 TCP/IP 입문편」, 성안당, 2019.
ANK CO., Ltd., 이영란 역, 「TCP/IP가 보이는 그림책」, 성안당, 2019.
강환수 외 3인, 「컴퓨터 개론」, 인피니티북스, 2019.
진혜진, 「네트워크 개론」, 한빛아카데미, 2019.
삼성SDS 기술사회, 「정보통신」, 한울아카데미, 2019.
정진욱 외 4인, 「컴퓨터 네트워크」, 생능출판사, 2018.
김현정, 「소프트웨어 개념사전」, 궁리, 2019.
이영호 외 1인, 「당신이 지금 알아야 할 AWS」, 비제이 퍼블릭, 2019.
김종훈, 「소프트웨어 세상을 여는 컴퓨터 과학」, 한빛아카데미, 2018.
Gene, 김성훈 역, 「그림으로 배우는 네트워크 원리」, 영진 닷컴, 2020.
Ryuji Kitami, 이영란 역, 「그림 한 장으로 보는 최신 네트워크 용어 해설」, 정보문화사, 2016.
미즈구치 카즈야, 이승룡 역, 「모두의 네트워크」, 2018.
리브로웍스, 신상재 역, 「TCP/IP 쉽게, 더 쉽게」 , 제이펍, 2016.
Gene, 진솔 역, 「손으로 익히며 배우는 네트워크 첫걸음」, 한빛미디어, 2017.
아미노 에이지, 김현주 역, 「하루 3분 네트워크 교실」, 영진닷컴, 2016.
김석준, 「문과생을 위한 ICT 이야기 」, 커뮤니케이션즈북스, 2019.
James F. Kurose외 1인, 「컴퓨터 네트워킹 」, 퍼스트북, 2017.
Tsutomu Tone, 이도희 역, 「성공과 실패를 결정하는 1%의 네트워크 원리 」, 성안당, 2018.
'냐옹아 멍멍해봐(How to Speak IT) > 테크(IT) 문법' 카테고리의 다른 글
쉽게 이해하는 네트워크 13. IP 주소 의미와 체계 및 서브넷 마스크 (6) | 2020.11.12 |
---|---|
쉽게 이해하는 네트워크 12. TCP/IP 모델의 인터넷 계층과 IP 프로토콜 (4) | 2020.11.09 |
쉽게 이해하는 네트워크 10. TCP/IP 네트워크 인터페이스 계층의 역할과 데이터 전송 (ft. 랜카드와 MAC 주소) (1) | 2020.10.29 |
쉽게 이해하는 네트워크 9. 웹 서버와 웹 브라우저의 TCP/IP 통신 과정 (0) | 2020.10.22 |
쉽게 이해하는 네트워크 8.인터넷의 TCP/IP 데이터 전송 과정(ft. 캡슐화와 역캡슐화) (4) | 2020.10.19 |