[Networks] Protocol Layers and Their Service Models
인터넷에는 여러 개의 애플리케이션, 프로토콜, 여러 종류의 종단 시스템, 패킷 스위치, 그리고 여러 종류의 link-level 미디어가 있습니다. 이 복잡한 인터넷을 네트워크 구조로 표현해보고자 합니다.
Layered Architecture
먼저, 인간과의 유사성을 살펴보겠습니다. 우리는 매일매일 복잡한 신체 시스템과 함께 살아갑니다. 누군가가 당신에게 항공 시스템에 대해서 설명을 부탁했다고 상상해보겠습니다. 항공기 체크인/체크아웃, 수화물, 게이트 직원, 조종사, 항공기, 그리고 항공 시스템 등으로 엮인 이 복잡한 시스템을 어떻게 설명할 수 있을까요? 이 시스템을 설명하는 방법 중 하나는 당신이 항공기를 타고 목적지에 도착하는 일련의 과정을 설명하는 방법입니다. 대부분의 사람은 위 그림과 같은 과정을 거치며 출발지로부터 도착지까지 이동합니다.
네트워크의 패킷도 사람과 유사한 과정을 거치며 Source Host 로부터 Destination Host 까지 이동합니다. 위 그림을 보면, 양쪽 끝에 티켓팅 과정이 있습니다. 또한 티켓팅을 완료한 사람을 위한 수화물 과정이 있고, 티켓팅과 수화물까지 모두 완료한 사람을 위한 게이트 과정이 있습니다. 게이트 과정까지 완료한 사람은 이륙과 비행 과정이 있습니다. 이 과정을 수평적인 방식으로 표현한 그림이 아래와 같습니다.
항공 시스템의 여러 과정들을 계층적으로 표현한 그림입니다. Gate 레이어를 살펴보면, 출발 게이트와 도착 게이트가 존재하며, 이는 탑승객과 수화물을 이동시킵니다. Takeoff/Landing 레이어를 살펴보면, 출발 공항의 활주로로부터 도착 공항의 활주로까지, 탑승객과 그들의 수화물을 이동시킵니다. 각 레이어는 Baggage 레이어에서 수화물을 맡기고 찾는 것처럼, 그들만의 서비스를 제공합니다. 또한 제공하는 서비스는 해당 레이어 아래의 레이어의 서비스를 사용하여 제공하기도 합니다. 예를 들어, Gate 레이어는 Takeoff/Landing 레이어가 제공하는 출발지 활주로로부터 도착지 활주로까지 탑승객과 수화물을 옮기는 서비스를 사용합니다. 이를 통해 탑승객이 항공기에서 내려 Unload 게이트로 나올 수 있는 것이죠. 이러한 레이어 형태의 구조는 복잡한 시스템을 이해하기 쉽도록 설명해줍니다.
Protocol Layering
복잡한 항공 시스템을 레이어 형태로 표현했던 것처럼, 아주 복잡한 네트워크도 레이어 형태로 표현할 수 있습니다. 또한 항공 시스템의 각 레이어에서 제공하는 서비스(수화물, 게이트 등)와 같이, 네트워크 레이어에도 제공하는 서비스가 있습니다. 이 서비스는 각 레이어가 지켜야하는 규약을 소프트웨어, 하드웨어, 혹은 소프트웨어+하드웨어 로 구현해놓은 것입니다. 예를 들어 HTTP 나 SMPT 와 같은 Application 레이어의 프로토콜은 거의 종단 시스템의 소프트웨어로 구현되어 있습니다.
여러가지 레이어의 프로토콜들을 Protocol Stack 이라고 부릅낟. Internet Protocol Stack 은 위 그림과 같이 5개의 레이어를 포함하고 있습니다.
Application Layer
네트워크 애플리케이션들과 그들의 Application 레이어 프로토콜들이 위치하는 레이어입니다. 인터넷 Application 레이어에는 아래와 같이 많은 프로토콜들이 포함됩니다.
HTTP : 웹 문서를 요청/전송하는 프로토콜
SMTP : 이메일 메시지를 전송하는 프로토콜
FTP : 2개의 종단 시스템 사이에 파일을 전송하는 프로토콜
www.caputdraconis.dev 와 같은 읽기 쉬운 종단 시스템의 주소를 32 bit 네트워크 주소로 바꾸는 역할을 하는 Domain Name System(DNS) 또한 Application 레이어의 프로토콜 기반입니다.
각 레이어마다 정보 패킷을 부르는 이름이 상이한데, Application 레이어에서 이러한 패킷을 message 라고 부릅니다.
Transport Layer
2개의 종단 애플리케이션 사이에 애플리케이션 레이어의 messages 를 전송하는 레이어입니다. 2개의 Transport 프로토콜 TCP와 UDP가 이 레이어에 속하며, 이들은 애플리케이션 레이어의 messages 를 전송합니다.
TCP는 애플리케이션에게 연결 지향(Connection-oriented) 서비스를 제공합니다. 이 서비스에는 목적지까지 메시지가 도착하는 것을 보장, 그리고 흐름 제어(flow control)가 포함됩니다. 또한, 장문의 메시지를 여러개의 조각으로 나누어 전송, 네트워크가 혼잡할 때 전송속도를 줄이는 혼잡 제어(congestion control) 들도 TCP가 제공하는 서비스입니다.
UDP는 TCP 와 반대로 연결을 하지 않는(Connectionless) 서비스를 제공합니다. 신뢰성, 흐름 제어, 혼잡 제어를 제공하지 않는 no-frills 서비스입니다.
Transport 레이어에서는 패킷을 segment 라고 부릅니다.
Network Layer
Network 레이어의 패킷을 부르는 이름인 Datagrams 를 하나의 호스트에서 다른 호스트로 옮기는 역할을 수행하는 레이어입니다. Source 호스트의 TCP 와 UDP(트랜스포트 레이어 프로토콜)는 트랜스포트 레이어 세그먼트와 도착지 호스트 주소를 Network 레이어에게 넘겨줍니다. 이때 넘겨주는 데이터들은 우편을 보낼 때 편지와 도착지 주소를 같이 보내는 것과 유사합니다. Network 레이어는 도착지 호스트의 트랜스포트 레이어에게 세그먼트를 배달하는 서비스를 제공합니다.
Network 레이어에는 유명한 IP 라는 프로토콜이 포함됩니다. 종단 시스템과 라우터들이 어떻게 행동해야 하는지에 대해 적혀있는 데이터그램의 필드를 정의하는 역할을 수행합니다. 또다른 Network 레이어 프로토콜인 라우팅 프로토콜은, 출발지로부터 도착지까의 경로를 결정하는 역할을 수행합니다. 라우팅 프로토콜은 종류가 많아서, 네트워크 관리자가 어떤 라우팅 프로토콜을 선택하느냐에 따라서 라우팅 방식이 결정됩니다. Network 레이어는 이와 같이 IP 프로토콜과 많은 라우팅 프로토콜을 포함하지만, IP 레이어라고도 불립니다. 그만큼 IP가 중요하다는거죠..
Link Layer
앞서 살펴본 Network 레이어는 Source 호스트와 Destination 호스트 사이에 위치한 라우터를 통해 데이터그램을 라우팅합니다. 패킷을 하나의 노드로부터 다음 노드로 이동시키기 위해서, Link 레이어에 의존해야 합니다. 즉, Network 레이어는 데이터그램을 다음 노드로 이동시켜주는 Link 레이어에게 데이터그램을 내려주게 됩니다. 다음 노드에서는 받은 데이터그램을 Network 레이어에게 올려주는 방식입니다.
Link 레이어가 제공해주는 기능들은 Link 레이어 프로토콜에 의존합니다. 예를 들어서, 전송 노드로부터 수신 노드까지 링크를 이용해 믿을 수 있는 전송을 하는 Link 레이어 프로토콜이 존재합니다. 이때, 앞에서 알아본 TCP 의 믿을 수 있는 전송과는 다릅니다. TCP 는 노드끼리가 아닌, 종단시스템끼리의 전송이기 때문입니다. Link 레이어의 프로토콜의 예시로는 Ethernet, WiFi, 그리고 케이블 액세스 네트워크의 DOCSIS 프로토콜이 있습니다.
Source 로부터 Destination 까지 여러개의 링크를 타고 이동해야 하는 데이터그램은 링크마다 서로 다른 Link 레이어 프로토콜에 의해서 컨트롤 될 것입니다. 예를 들어서 어떤 링크에서는 Ethernet, 또다른 링크에서는 PPP 에 의해서 컨트롤 되는 상황을 말합니다.
링크 레이어에서는 패킷을 frames 라고 부릅니다.
Physical Layer
Link 레이어가 수행하는 임무가 하나의 네트워크 요소로부터 인접한 다른 네트워크 요소까지 프레임 전체를 이동시키는 것이였다면, Physical 레이어가 수행하는 임무는 하나의 노드로부터 다음 노드까지 프레임으로 묶인 각각의 비트들을 이동시키는 것입니다. Physical 레이어에 포함되어 있는 프로토콜들은 링크와 twisted-pair copper wire나 single-mode fiber optics 와 같은 링크의 물리적 요소들에 의존하고 있습니다. 예를 들어, Ethernet 은 twisted-pair copper wire 를 위한 프로토콜 하나, coaxial cable 을 위한 프로토콜 하나.. 이렇게 많은 Physical 레이어 프로토콜을 포함하고 있습니다. 각 프로토콜마다, 비트들은 각기 다른 방법으로 링크를 타고 이동합니다.
Encapsulation
위 그림은 패킷들이 프로토콜 스택을 통해 어떻게 이동하는지를 간략하게 표현하고 있습니다. Link-layer 스위치와 라우터는 모두 패킷 스위치이지만, 각각 Physical~Link / Physical~Network 레이어까지만 구현되어 있습니다. 그 위 레이어가 없어도, 패킷을 라우팅 할 수 있기 때문입니다. 실제로 Link-layer 스위치는 Network 레이어가 없기 때문에, IP 프로토콜을 사용할 수 없습니다. 그렇기에 Link-layer 스위치는 IP 주소를 인식할 수 없습니다.
위 그림을 보면 Encapsulation 의 중요한 개념을 알 수 있습니다. Encapsulation, 캡슐화는 정보를 캡슐에 담는 것을 말합니다. 전송하는 호스트를 보면, Application 레이어의 메시지(M)가 Transport 레이어로 넘겨집니다. 이때, Transport 레이어는 Application 레이어로부터 메시지를 받아서, 추가적인 정보(Ht)를 앞에 붙입니다. 이 정보는 수신 호스트 쪽의 Transport 레이어에서 사용됩니다. Application 레이어 메시지를 Encapsulation 하고, 그 앞에 Transport 레이어의 추가 헤더 정보(목적지 정보, 에러 감지 Bits 등)를 결합한 것을 transport-layer segment 라고 합니다. Transport 레이어는 이 세그먼트를 Network 레이어에게 넘겨주고, 또다시 네트워크 레이어의 헤더 정보(Hn, 출발지 도착지 주소 등)를 붙입니다. 그 결과 network-layer datagram 이 완성됩니다. 또다시 Network 레이어는 이 데이터그램을 Link 레이어에게 넘겨주고, Link 레이어 또한 헤더 정보를 추가해서 link-layer frame 을 완성시킵니다. 위 그림을 살펴보면 Protocol Stack 을 내려오며 각 레이어마다 헤더 필드와 페이로드 필드 두가지 타입의 필드가 있음을 확인할 수 있습니다. 위 레이어로부터 내려온 패킷을 우리는 Payload 라고 부릅니다.
참고
https://www.rfc-editor.org/rfc/rfc3439
댓글
이 글 공유하기
다른 글
-
[Networks] Networks Under Attack
[Networks] Networks Under Attack
2023.05.24 -
[Networks] Delay in Packet-Switched Networks
[Networks] Delay in Packet-Switched Networks
2023.05.18 -
[Networks] Circuit Switching
[Networks] Circuit Switching
2023.05.16 -
[Networks] Store and Forward Transmission
[Networks] Store and Forward Transmission
2023.05.15