이글은 혼자 공부하는 네트워크(저자 : 강민철)의 책과 강의 내용을 개인적으로 정리하는 글임을 알립니다.


프로토콜(protocol)

현대 인터넷은 호스트 간 패킷을 교환하는 방식으로 대부분 패킷 교환 방식을 사용한다.

언어가 정보를 주고받기 위해 사회적으로 합의된 의사소통 방식이라면, 프로토콜은 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법을 의미한다.

즉, 서로 다른 통신 장치들이 정보를 주고받으려면 프로토콜이 통해야 한다. 우리가 인터넷을 이용할 수 있는 것은 모두 상대 호스트와 동일한 프로토콜을 사용하기 때문이다.

다만 일상 속 언어와는 달리 통신 과정에서는 하나의 프로토콜만 사용하지 않는다. 일반적으로는 여러 프로토콜을 함께 사용한다.

 

모든 프로토콜에는 저마다의 목적과 특징이 있다.

프로토콜의 존재 이유는 정해져 있기 때문에 저마다 목적과 특징이 다양하다.

프로토콜마다 목적과 특징이 다르기에 이에 부합하는 정보도 달라질 수 있으며, 따라서 특정 프로토콜로 주고받는 패킷의 부가 정보도 달라질 수 있다.

즉, 프로토콜마다 패킷의 헤더 내용이 달라질 수 있다.

 

네트워크 참조 모델

네트워크를 통해 정보를 주고 받을 때는 정형화된 여러 단계를 거친다.

이 과정은 계층으로 표현할 수 있다.

이렇게 통신이 일어나는 각 과정을 계층으로 나눈 구조를 네트워크 참조 모델이라고 한다.

계층으로 표현한다는 점에서 네트워크 계층 모델이라 부르기도 한다.

 

이와 같이 통신 과정을 계층으로 나눈 이유는 아래와 같이 크게 두 가지이다.

  1. 네트워크 구성과 설계가 용이하다.
  2. 네트워크 문제 진단과 해결이 용이하다.

 

OSI 모델

OSI 모델은 국제 표준화 기구에서 만든 네트워크 참조 모델이다.

통신 단계를 7개의 계층으로 나누는데, 최하위 계층에서 최상위 계층순으로 각각 물리, 데이터 링크, 네트워크, 전송, 세션, 표현, 응용 계층이다.

 

TCP/IP 모델

OSI 모델은 주로 네트워크를 이론적으로 기술하고 이해할 때 사용하는 반명에 TCP/IP 모델은 이론 보다는 구현에 중점을 둔 네트워크 참조 모델이다.

OSI 모델의 목적이 '이상적 설계'에 가깝다면, TCP/IP 모델은 '실용적 구현'에 가깝다.

TCP/IP 모델은 TCP/IP 4계층, 인터넷 프로토콜 스위트, TCP/IP 프로토콜 스택이라고도 부른다.

TCP와 IP 모두 프로토콜의 이름이다.

OSI 7계층, TCP/IP 4계층은 사실 아무것도 해주지 않는다.

네트워크 참조 모델은 네트워크 프로토콜과 장비가 따라야 할 필수 규칙이 아닌 가이드라인이며, 특정 계층으로 나누어 설명하기 어려운 프로토콜이나 장비가 존재할 수 있다. 네트워크 참조 모델은 네트워크 작동을 직접적으로 책임지지 않고, 통신 구조를 이해하기 위한 참고용 모델이다.

 

 

TCP/IP 모델 확장

전통적인 TCP/IP 모델에서의 최하위 계층은 OSI 모델에서 물리 계층보다는 데이터 링크 계층 역할을 수행하는 쪽에 가까웠다.

TCP/IP 몯레에는 OSI 모델에서의 물리 계층에 해당하는 개념이 없다는 견해도 있다.

그래서 많은 공식 문서와 전공 서적에서는 OSI 모델과 TCP/IP 모델을 대응하여 설명하기 위햇 TCP/IP 모델에 물리 계층을 추가해 TCP/IP 모델을 5계층으로 확장하여 기술하기도 한다.

 

 

캡슐화와 역캡슐화

패킷은 송신 과정에서 캡슐화가 이루어지고, 수신 과정에서 역캡슐화가 이뤄진다.

송수신하는 메시지는 송신지 입장에서는 가장 높은 계층에서부터 가장 낮은 계층으로 이동하고, 수신지 입장에서는 가장 낮은 계층에서부터 가장 높은 계층으로 이동한다.

 

캡슐화(encapsulation)

패킷 교환 네트워크에서 메시지는 패킷 단위로 송수신된다.

  • 패킷은 헤더와 페이로드, 때로는 트레일러를 포함하여 구성됨
  • 프로토콜의 목적과 특징에 따라 헤더의 내용은 달라질 수 있다.

어떤 정보를 송신할 때 각 계층에서 상위 계층으로부터 내려받은 패킷을 페이로드로 삼아, 프로토콜에 걸맞은 헤더(혹은 트레일러)를 덧붙인 후 하위 계층으로 전달한다.

즉, 한 단계 아래 계층은 바로 위의 계층으로부터 받은 패킷에 헤더 및 트레일러를 추가해 나간다.

이렇게 송신 과정에서 헤더 및 트레일러를 추가해 나가는 과정을 캡슐화라고 부른다.

 

역캡슐화(decapsulation)

역캡슐화는 어떤 메시지를 수신할 때는 캡슐화 과정에서 붙였던 헤더 및 트레일러를 각 계층에서 확인한 뒤 제거한다.

이를 역캡슐화라고 한다.

 

PDU(Protocol Data Unit)

각 계층에서 송수신되는 메시지의 단위를 PDU라고 한다. 즉, 상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더 및 트레일러를 추가하면 현재 계층의 PDU가 된다.

응용 계층의 PDU는 메시지(message), 네트워크 계층의 PDU는 IP 데이터그램(IP datagram), 물리 계층의 PDU는 심볼(symbol)이라 지칭하기도 한다.

  • PDU는 주로 전송 계층 이하의 메시지를 구분하기 위해 사용한다. 전송 계층보다 높은 계층에서는 일반적으로 데이터 혹은 메시지로만 지칭하는 경우가 많다.
  • 전송 계층의 PDU는 TCP 프로토콜이 사용되었을 경우에는 세그먼트, UDP 프로토콜이 사용되었을 경우에는 데이터그램이 된다.
  • 참고로 패킷이라는 용어는 패킷 교환 네트워크에서 쪼개어져 전송되는 단위를 통칭하기 위한 일반적인 용어로 사용되기도 하지만, 네트워크 계층에서의 송수신 단위를 지칭하기 위해 사용되기도 한다.
    네트워크 계층의 PDU인 패킷은 후자이고, 패킷 교환 네트워크에서 사용된 패킷은 전자인 셈이다.
    이 글에서 혼란을 방지하기 위해 네트워크 계층의 PDU는 IP 패킷이라고 지칭한다.

 

트래픽과 네트워크 성능 지표

  • 트래픽(traffic) : 네트워크 내의 정보량을 의미

특정 노드에 트래픽이 몰린다는 것은 해당 노드가 특정 시간동안 처리해야 할 정보가 많음을 의미한다.

이 경우 해당 노드에 과부하가 생길 수 있다. 컴퓨터에서 여러 프로그램을 동시에 실행하면 CPU가 뜨거워지며 성능이 저하되는 것처럼, 트래픽이 몰려 특정 노드에 과부하가 생기면 성능의 저하로 이어질 수 있다.

 

네트워크의 성능을 평가할 수 있는 세가지 대중적인 지표가있다.

  • 처리율: 처리율(throughput)은 네트워크를 통해 실제로 전송되는 정보의 양을 의미하며, 주로 bps, Mbps, Gbps와 같은 단위로 표현된다. 이 값은 순간적인 전송 속도를 보여주며, 네트워크의 실시간 성능을 측정할 때 사용된다.
  • 대역폭: 대역폭(bandwidth)은 네트워크가 최대로 전송할 수 있는 데이터 양을 나타낸다. 이는 주로 bps, Mbps, Gbps 단위로 표현되며, 넓은 대역폭은 더 많은 데이터를 송수신할 수 있는 능력을 의미한다.
  • 패킷 손실: 패킷 손실(packet loss)은 네트워크에서 전송된 패킷이 목적지에 도달하지 못하는 상황을 말한다. 이는 네트워크 과부하나 장애로 인해 발생할 수 있으며, 손실된 패킷의 비율로 표현된다.