TCP/IP 5-Layer Model
TCP/IP 5-계층 모델
- 통신 시스템은 데이터 송수신 과정을 계층 구조*로 나누어 Divide-and-Conquer 방식으로 처리한다.
* 그러한 계층 구조로는 OSI 7계층 구조와 TCP/IP 5계층 구조가 있다.
- OSI 모델의 Layer-5 와 Layer-6는 명확한 정의가 없어 TCP/IP 모델에서는 OSI 모델의 5~7 Layer가 하나로 합쳐졌다.
- 물리 계층과 데이터 링크 계층에서는 LAN이나 WAN과 같은
하나의 Physical Network(물리 네트워크)에서의 데이터 송수신을 수행한다.
- 네트워크 계층과 전송 계층에서는 Layer 1~2와 Layer 5의 이질성을 메우기 위해 Middleware가 위치한다.
Example. Communication through an internet
Example. Logical Connections between Layers of the TCP/IP Protocol Suite
Physical Layer (물리 계층)
- 위 그림은 하나의 Private Internet을 도식화한 그림이다.
- Internet은 Host와 Router 두 개의 Node로 구성된다.
- 물리 계층에서의 통신은 기본단위가 Bit이며, 노드 간 Binary Data(0/1)가 송수신된다.
- 전송 매체는 Electrical Signal 또는 Optical Signal등이 될 수 있다.
- Host는 패킷의 Source 혹은 Destination이 될 수 있으며, Router와 같이 경유지가 될 수는 없다.
- Router는 패킷의 경유지가 됨은 물론, Source 혹은 Destination 또한 될 수 있다.*
- Link(분홍색 직사각형)는 하나의 Physical Network(물리 네트워크)를 의미한다.
(실제로 A와 B 랩탑 컴퓨터로 표현된 호스트는 물리 네트워크 밖에 위치해 있어야한다.)
- Link(물리 네트워크) 내부는 하나 이상의 Switch(Layer-2 장비)로 구성된다.
- 하나의 Link는 국가 ISP, 지역 ISP 혹은 기관 사용자, 개인 사용자 중 하나에 해당한다.
- Router(분홍색 타원)는 물리넷과 물리넷을 라우터들 끼리의 Point to Point(점대점) 방식으로 연결된다.
- Source에서 Destination까지 전기 신호가 송수신될 때, 환경에 따라
처음부터 끝까지 디지털 전기 신호로 전송될 수도 있고, 도중에 아날로그 신호**로 전환되어 전송될 수도 있다.
- Router는 Layer-3 장치이다. 그러므로 패킷의 L3 주소(IP주소)를 Routing Table을 참고하여 전송하게 된다.
* Router가 Packet의 Source 혹은 Destination이 되는 경우
Case 1. Router = Source
- 패킷 송수신 과정에서 오류가 발생하는 경우, 라우터가 오류 메시지를 전송할 때 라우터는 패킷의 송신자가 된다.
Case 2. Router = Destination
- 패킷 송수신 과정에서 호스트가 오류 여부를 파악할 때,
확인차 라우터에게 메시지를 보내는 겨우에는 라우터가 수신자가 된다.
- 따라서, Router도 Layer-1 부터 Layer-5 까지 완전한 형태로 존재한다.
** Physical Network 간 Analog Signal 송수신
- 물리 계층에서는 네트워크 간의 아날로그 신호 송수신 과정도 관장한다.
- 디지털 신호를 굳이 아날로그 신호로 변환해서 송신하고,
수신한 아날로그 신호를 다시 디지털 신호로 변환하는 이유는
아날로그 신호가 장거리 통신에 용이하고, 대체로 송수신 속도가 빠르기 때문이다.
(때문에, Digital to Digital 전송은 대체로 가깝고, 유선 환경에서 이루어진다.)
- 무선 아날로그 신호는 파장의 길이에 따라 매개체를 달리 한다.
ex) Radio Wave (1Ghz 이상) : 라디오 방송, 텔레비전 방송
ex) Micro Wave (1GHz 이하) : 인공위성 통신, 이동통신, WiFi, 블루투스와 같은 대부분의 무선 네트워크
Data Link Layer (데이터 링크 계층)
- 데이터 링크 계층에는 Data가 Packet* 단위로 송수신되며, 특히 데이터 링크 계층에서의 패킷을 Frame이라 부른다.
- 프레임은 Header와 Data로 구분되며, 헤더에는 Source와 Destination의 MAC 주솟값(\(M_{s}, M_{d}\))이 저장되어 있다.
- 프레임의 헤더 = \(M_{d}\) + \(M_{s}\) ; 이와 같이 프레임의 헤더에는 특별히, 목적지의 주소가 먼저 온다.**
(그 기원은 처음으로 고안된 네트워크인 LAN(Ethernet)에서 사용된 패킷의 헤더에는 목적지 주소가 먼저 저장되었던데서 온다.)
* Packet은 Layer-2 ~ Layer-4에서 송수신되는 데이터 단위이다.
각 레이어마다(혹은 프로토콜 마다) 패킷의 이름은 약간의 차이가 있다.
** 일반적으로, 패킷의 헤더에는 소스의 주소가 먼저 오고, 목적지의 주소가 나중에 온다.
※ 데이터 링크 계층에서는 Data Loss를 방지하기 위해 Reliability Service가 제공된다.
- 신뢰성 서비스는 주로, ISP와 같은 Core Network*에서 제공하는 기능이며,
Access Network**에서 제공하는 경우는 거의 없다.
* Core Network : 사용자가 직접 접근하지 않는 네트워크로, 국가 ISP와 같은 네트워크를 의미한다.
** Access Network : 사용자가 직접 접근하게 되는 네트워크이다.
Reliability Service on Data-Link Layer
- Framing
- Error Control
- Flow Control
- Congestion Control
1) Framing (프레이밍)
- 다음 노드로 보낼 Datagram(Layer-3으로부터 받은 패킷)에 대한 Encapsulation 혹은 Decapsulation 기능이다.
2) Error Control (오류 제어)
- 패킷을 보내는 과정에서 Bit Error와 Loss Error를 방지하는 기능이다.
a) Bit Error
- EDC(Error Detection Code)를 통해 오류 여부를 판별한다.
- 에러 발생 시, 구체적 오류 내용을 담은 NACK(No-ACK) Signal을 송신하거나, ACK Signal*을 보내지 않는 방식이다.
- Source 측에서는, Destination 측의 NACK 신호를 받았거나, ACK 신호를 받지 못해 Time-Out이 발생하면 데이터를 재전송한다.
b) Lost Error
- 패킷의 누락으로 인해 Source 측의 재전송이 필요한 경우이다.
- 패킷 내부의 Sequence Number를 통해 손실된 패킷만 다시 재전송하게 된다.
* ACK(Acknowledgement) Signal : 접수 확인 신호, 데이터 수신에 성공했음을 Source 측에 알리는 신호이다.
3) Flow Control (흐름 제어)
- 처리속도가 빠른 송신자와 느린 수신자 사이에 발생하는 Speed Mismatch 문제를 해결하는 기능이다.
- Destination 측의 수신 Buffer의 수용력 이상으로 데이터를 받게될 경우, Packet Loss가 생길 수 있다.
a) Stop/Resume 방식 흐름 제어
- 가장 단순한 방식으로, 일정량의 패킷이 수신되면 Stop Sign을 Source측에 전달한다.
b) 응답 확인 수신 방식 흐름 제어
- Buffer가 꽉 차게 될 경우, 이러한 상태를 알리는 신호를 Source 측에 전달해서 전송속도를 조절하게 된다.
- 반대로, Buffer에 여유가 있을 경우에도 이를 Source 측에 알려서 전송속도를 올리게 할 수도 있다.
4) Congestion Control (혼잡 제어)
- 물리 네트워크 상에서의 Buffer Overflow를 처리하는 기능이다.
- Switch 또한, 내부에 Buffer가 존재하는데, Buffer Overflow를 방지하기 위해 Source 측에서 송신하는 패킷의 양을 조절한다.
Network Layer (네트워크 계층)
- 네트워크 계층에서 전달되는 데이터의 단위는 IP Datagram*이다.
L3 패킷의 헤더에는 Source측 IP주소(\(I_{s}\))와 Destination측 IP주소(\(I_{d}\)가 저장되어 있다.
- 네트워크 계층에서 가장 많이 쓰이는 프로토콜은 IP 주소*를 사용하는 인터넷 프로토콜(IP)이다.
(IP만 있는것은 아니다.)
- Router는 연결된 Interface(경로)의 개수만큼 Layer 1-2 Column을 가진다.
(사실, 위 그림에서 R1과 R4는 세 쌍의 물리/데이터링크 레이어가 있어야 하고,
R2와 R3는 두 쌍의 물리/데이터링크 레이어가 있어야 한다.)
- 각 노드들은 자신의 Routing Table***을 토대로 데이터를 보낼 방향을 결정하게 된다.
- L3에서의 패킷 전달을 Source 호스트에서 Destination 호스트까지 전달하기 때문에
Host to Host Delivery라고 부른다.
- 출발점부터 도착점까지의 경로가 한 번에 나오지 않고, 각 노드에 도착할 때 마다 다음 경로가 계산된다.
이는 한 번에 하나의 물리넷을 건너가는 방식인데, 이를 두고 Hop-to-Hop Delivery라고 부른다.
* 위 그림에서 Datagram은 모호한 표현이다.
L4의 UDP 프로토콜에 따라 전달되는 패킷을 User-Datagram이라 하기 때문에
중복을 피하기 위해 L3의 패킷이름은 그냥 "Datagram"이 아닌, "IP Datagram"이라고 불러야 한다.
** Layer-3에서 IP주소는 한 노드 당 할당되는 것이 아니라, 하나의 인터페이스(경로) 당 하나가 할당된다.
*** Routing Table (라우팅 테이블)
- 라우팅 테이블에 저장된 데이터 중 가장 중요한 세 가지 요소로,
목적지 주소, 전송시 사용할 인터페이스, NHA(Next Hopping Address)가 Column으로 구성되어 있다.
- 해당 노드의 목적지 주소에 매칭되는, 다음 노드로 향하는 인터페이스로 나갈 준비를 하고,
NHA 주솟값을 향해 다음 노드로 이동하게 된다.
- 호스트 노드의 라우팅 테이블은 그 크기가 비교적 작고, 수정되는 일이 거의 없다.
- 라우터의 라우팅 테이블은 비교적 크기가 크고, 네트워크 추가/삭제에 따른 수정이 빈번하다.
Transport Layer (전송 계층)
- 전송 계층에서 많이 쓰이는 프로토콜에는 TCP와 UDP가 있다.
- L4 패킷의 헤더에는 Source측의 포트번호(\(P_{s}\))와 Destination측의 포트번호(\(P_{d}\))가 저장되어 있는데,
이를 통해 목적지의 해당 프로세스*까지 접근할 수 있다. (L3의 호스트 레벨보다 깊은 개념이다.)
- \(P_{s}\)(Sender측 포트번호)는 주로 Destination 측에서 ACK Signal을 전송할 때 이용된다.
- TCP에 따라 전달되는 패킷을 Segment라 하고, UDP에 따라 전달되는 패킷을 User Datagram이라고 한다.**
※ Layer-3의 Delivery Scope : Host to Host Delivery
※ Layer-4의 Delivery Scope : Process to Process Delivery 또는 End to End Delivery
(더 이상의 고차원적인 목적지가 없기 때문에 End라는 표현을 사용한다.)
* Process는 Dynamic Entity(동적인 개체, 실행중인 프로그램을 의미한다.) 개념이고,
Program은 저장장치에 저장되어 있는 Static Entity(정적인 개체) 개념이다.
** Segment (TCP)
- 포트번호를 이용해서 Destination까지 전달한다.
- 신뢰성 서비스를 제공하기 때문에 TCP기반에서는 L5에서 신뢰성 서비스를 고려하지 않고 프로그램을 개발할 수 있다.
- 신뢰성 서비스가 수행되기 때문에 프로그램이 비교적 크고 느리다.
ex) TCP 기반 프로그램 : 웹, 이메일 서비스, 파일전송 시스템, 인터넷 뱅킹 프로그램 등
** User-Datagram(UDP)
- 포트번호를 이용해서 Destination까지 전달한다.
- 신뢰성 서비스가 제공되지 않기 때문에, UDP기반의 L5에서 개발시 신뢰성 서비스 기능들을 따로 구현해야한다.
- 신뢰성 서비스가 제공되지 않기 때문에 실행 속도가 빠르다. (패킷 전송속도가 빠르다.)
ex) UDP 기반 프로그램 : 미디어플레이어, 인터넷 폰, 화상회의 플랫폼 등
Application Layer (응용 계층)
- 응용계층에서 오가는 데이터의 단위는 Message(메시지)이다. (하위계층의 패킷에 비해 상당히 큰 크기이다.)
- System 공용 Resource관리, 완전성 제어, 응용 Program(Application) 구동 등의 기능을 수행하는 Layer이다.
- 특수한 경우, 데이터가 전송 계층(L4)을 거치지 않고,
네트워크 계층(L3)에서 바로 응용 계층(L5)으로 전달되는 경우도 있다.
Example. E-Mail 송수신 과정에서의 Message 구조
- Internet은 수용 가능한 용량이 적기 때문에
비교적 크기가 큰 이메일 메시지는 하위 계층에서 적당한 크기의 패킷으로 분할되어 전송된다.
- Message = \(H_{5}\) + \(D_{5}\)
\(H_{5}\) : 송수신자의 이메일 주소, 송신 시간, 제목, Content Type(내용으로 들어가는 Data의 종류), Delimiter Type
\(D_{5}\) : 텍스트를 비롯한 여러가지 Multimedia, Delimiter(데이터들의 종류를 구분시키기 위한 칸막이)
Address System (계층 별 주소 시스템)
- 왼쪽엔 각 계층에서 전달되는 데이터들의 단위, 오른쪽엔 각 계층에서 다루는 주소 체계이다.
- 특히, L2 ~ L4에서 오가는 데이터의 최소 단위를 Packet이라고 부른다.
- 그림과 달리, Physical Layer에도 따로 주소가 사용되는 경우도 있지만, 일반적인 경우는 아니다.
- L2의 Physical Address는 초창기에 H/W Address라 부르기도 했었다. 또한, 데이터 링크 계층의 주소이기 때문에 Link Address라 부르기도 했으며, L2의 Sublayer(DLC, MAC)의 이름에서 유래된 MAC Address라 부르기도 한다.
(물리 주소 = 하드웨어 주소 = 링크 주소 = 맥주소)
- L3의 Logical Address는 TCP/IP가 개발된 초창기에 Protocol Address라 불린 적이 있었다. 또한, 네트워크 계층의 주소이기 때문에 Network Address라 부르기도 했다.
(논리 주소 = 프로토콜 주소 = 네트워크 주소)
- Layer 1~4에서는 주솟값을 Digit(이진숫자)으로 표현하는데 반해, Layer-5에서는 Symbolic-Address*를 사용할 수 있다.
* Symbolic-Address는 Name이라 부르기도 하며, 대표적으로 URL을 주솟값이 아닌, "www.google.com"과 같이 표현하는 것이 대표적인 예시이다.
TCP 5-Layer Summary
Layer Name | Packet Name | Address |
Application Layer |
Message | Names |
Transport Layer | TCP: Segment UDP: User Datagram |
Port Numbers |
Network Layer | IP Datagram | Logical Address (IP Address) |
Data Link Layer | Frame | Link Address (Physical Address) |
Physical Layer | Bit | 있거나 없거나 |
Packet Encapsulation and Decapsulation
Packet Multiplexing and Demultiplexing
* Digital Logic에서 Multiplexing은 다수의 Wire가 하나의 Wire로 통합되는 Operation,
Demultiplexing은 하나의 Wire를 다수의 Wire로 분리하는 Operation이었음을 상기하자.
Reference: TCP/IP Protocol Suite 4th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2010)
Reference: Data Communications and Networking 5th Edition
(Behrouz A. Forouzan 저, McGraw-Hill, 2012)