Transport Layer Service
전송 계층 서비스
- Layer 4(L4)에서 제공하는 네트워크 서비스로 아래와 같이 구성된다:
- Process to Process Communication (TCP/UDP 제공)
- Encapsulation and Decapsulation (TCP/UDP 제공)
- Multiplexing and Demultiplexing (TCP/UDP 제공)
- Flow Control (TCP 제공)
- Error Control (TCP 제공)
- Congestion Control (TCP 제공)
- Connection-Oriented Service (TCP 제공)
- Connectionless Service (UDP 제공)
- TCP는 제공하는 서비스의 수가 비교적 많기 때문에 Heavy-Weighted 하다고 표현한다.
* 이로 인해, TCP 기반의 L5 Application에서는 처리가 수월하다. (전달받는 패킷들이 무결하다.)
- UDP는 제공하는 서비스의 수가 비교적 적어 Light-Weighted 하다고 표현한다.
* 이로 인해, UDP 기반의 L5 Application에서는 빠른 처리가 가능하나 패킷이 무결하지 않을 수 있다.
* UDP 기반 프로그램에서 신뢰성 서비스가 필요할 경우, L5의 Application에서 신뢰성 서비스를 직접 제공하게 된다.
1. Process to Process Communication
- L4주소인 Port Number를 이용한 프로세스 간 통신이다.
* Network Layer vs Transpory Layer (L3 vs L4)
Network Layer(L3)
- L3에서는 IP주소를 이용하여 패킷은 Source에서 Destination으로 전송한다.
- IP주소는 노드의 인터페이스마다 하나씩 할당된다.
Transport Layer(L4)
- 하나의 노드 안에는 다수의 Process가 Run되고 있다.
(Program은 Static Entity이며, Process는 Dynamic Entity이다.)
- L4에서는 양쪽 노드 내부의 프로세스끼리 메시지를 주고 받는 Process to Process Communication이 이루어진다.
- 또한, 프로세스는 통신의 실질적인 시작점과 종착점이 되기 때문에 End to End Communication이라 부르기도 한다.
Port Numbers (포트 번호)
- 포트번호는 L4의 각 프로세스를 식별할 수 있는 주솟값이다.
- 그림에서의 Daytime Service는 Well-Known Service로써,
요청을 보내면 응답으로 현재 날짜와 시간을 전달받을 수 있다.
- Daytime Service의 Well-Known Port Number는 13번이다. (그림의 52,000은 클라이언트의 포트 번호이다.)
※ 프로세스를 지칭하는 값으로 Process-ID가 존재하지만, 사용하지 않고 포트 번호를 주소로 사용하는 이유
1. Process-ID를 정의하는 표준이 존재하지 않아, OS별로 Process-ID 명명법이 제각기 다를 수 있다.
2. Process-ID는 가변적인 값이다.
- 어떤 Process가 Off된 후 다시 On되면 Process-ID가 바뀌어 있기 때문에, 정상적인 통신이 불가능하다.
IP Address vs Port numbers (L3 주소 vs L4 주소)
- IP주소를 통해 네트워크 상에서, 목적지에 해당되는 노드(Machine)를 찾아올 수 있다.
- 포트 번호를 통해 실질적인 목적지에 해당되는 노드(Machine) 내에 프로세스를 찾아갈 수 있다.
ICANN Range (IANA Range)
- ICANN(IANA) 기관에서 정해놓은 포트 번호 정의에 대한 규정이다.
- 포트 번호는 16bit Unsigned Integer로 구성되어 0부터 65,535 사이의 값을 가진다.
- Well-Known Port Numbers (0 ~ 1023)
- Well-Known Service를 위한 포트 번호 영역이다.
- 일반 Host가 사용하지 못한다.
- Registered Port Numbers (1024 ~ 49151)
- 기관(기업)에서 개발한 S/W에 사용하기 위한 포트 번호 영역이다.
- ICANN에 등록 절차를 거쳐야 이용할 수 있다.
- Dynamic or Private Port Numbers (49152 ~ 65535)
- 일반 Client의 프로세스가 포트에 연결될 때 사용하는 포트 번호 영역이다.
Example 13.1 (TCP/IP Protocol Suite p.378)
UNIX 시스템 계열의 머신에서 어떤 포트번호가 사용중인지를 확인하기 위한 내용은 /etc/services 파일에 저장되어 있다.
\(\texttt{\$grep tftp /etc/services}
- /etc/services에 위치한 파일에서 tftp가 들어있는 라인을 찾아 출력할 것을 명령한다.
- 출력 결과를 통해, tftp 서버가 TCP와 UDP로 포트번호 69번(Well-Known)으로 열려있음을 확인할 수 있다.
TFTP (Trivial File Transfer Protocol)
- File Transfer를 위한 FTP이다.
- 인증을 수행하지 않고, 연결을 가능하게 한다. (보안 측면에서 좋지 않다.)
\(\texttt{\$grep snmp /etc/services}\)
- 161번 포트로 상대에게 요청/명령을 보낼 수 있다. (네트워크 상태를 묻거나, 명령을 지시하거나)
- 162번 포트(only UDP)는 네트워크에 이상 증상을 즉시 관리자에게 통보하기 위한 포트 번호이다.
SNMP (Simple Network Management Protocol)
- 망 관리를 위한 프로토콜이다.
- 네트워크 장비에 상태를 묻거나, 관리 명령을 보낼 때 이용하는 프로토콜이다.
- 위 출력 결과에서 알아낸 포트번호(161, 162)를 통해 네트워크 장비들과 통신할 수 있다.
Socket Address (소켓 주소)
- 통신하고자 하는 Entity의 실질적인 주소는 IP주소와 포트 번호가 포함된 소켓 주소이다.
2. Encapsulation and Decapsulation
- 송신자는 Encapsulation(헤더를 붙임)하고, 수신자는 점검 후 Decapsulation(헤더를 떼어냄)한다.
- 대부분의 계층에서 수행하는 서비스이다.
3. Multiplexing and Demultiplexing
- L5의 응용 프로세스들로부터 메시지/송신자 포트번호/수신자 포트번호가 Parameter로써 L4에 전달된다.
- 송신자는 송신자의 포트 번호를 이용하여 Multiplexing을 수행한다.
- 수신자는 수신자의 포트 번호를 이용하여 Demultiplexing을 수행한다.
- 대부분의 계층에서 수행하는 서비스이다.
Pushing and Pulling
- Pushing Service
- Producer(데이터 제공자)와 Consumer(데이터 요구자) 사이에서 오가는 데이터를 제어하는 서비스이다.
- Push는 Consumer가 요청하지 않았음에도, Producer가 일방적으로 메시지를 보내는 것을 의미한다.
- 보다 처리속도가 느린 Consumer의 경우, Buffer Overflow를 방지하기 위해 Flow Control이 필요하다.
* Flow Control은 Pushing 서비스에서 발생할 수 있는 문제를 예방한다. - Pulling Service
- Consumer 가 자신이 필요한 데이터를 Producer 에게 요청하여, 요청한 것 만큼만 데이터를 받는 서비스이다.
4. Flow Control
- 신뢰성 서비스 중 하나이다.
- Sender 내에서 L5는 Producer, L4는 Consumer에 해당된다.
- Pushing 서비스가 수행되므로, Flow Control이 필요하다.
* 같은 Machine 내에서 수행되는 Flow Control은 구현/동작이 쉽다.
- Sender의 L4(Producer)에서 Receiver의 L4(Consumer)로 Pushing 서비스가 제공되며,
이렇게 다른 Machine 에 제공되는 Flow Control 서비스는 보다 중요하다.
- Receiver 내에서 L4(Producer)와 L5(Consumer) 사이에는 Pulling Service가 제공되어,
L5는 원하는 데이터만 제공받게 된다.
* 즉, Flow Control이 필요하지 않다.
5. Error Control
- Sender가 보낸 패킷에 오류가 발생할 경우, Receiver가 수행하는 대처 방안이다.
- 신뢰성 서비스 중 하나이다.
- Sender는 패킷을 송신한 후, Timer를 동작시키고 정해진 시간 내에 ACK가 올 것을 기다린다.
- ACK가 수신되면, Timer를 종료시킨다.
- Time-Out되면(ACK가 수신되지 않으면), 해당 패킷을 재전송한다.
Error의 종류는 아래와 같다:
- Bit Error
- 패킷의 내용이 잘못된 상태를 의미한다.
- Bit Error가 감지된 패킷은 폐기된다.
- Lost Packet
- 패킷이 유실된 상태를 의미한다.
- Duplicated
- 패킷의 중복 수신을 의미한다.
- Out of Order
- 패킷의 순서가 옳지 못함을 의미한다.
Error를 처리하는 메커니즘은 아래와 같다:
- EDC (Error Detection Code)
- Timer
- ACK
- Packet Sequence
7. Connection-Oriented Service(TCP 제공) and Connectionless Service (UDP 제공)
- L4의 TCP 프로토콜은 Connection-Oriented 서비스(CO 서비스)를 제공한다.
- L4의 UDP 프로토콜은 Connectionless 서비스 (CL 서비스)를 제공한다.
- 서비스를 이용하는 입장(L5의 Application)에서 봤을 때, 패킷이 순서대로 입력되면 Connection-Oriented,
패킷의 순서가 엉켜있으면 Connectionless라 봐도 무방하다.
Connectionless Service (UDP 제공)
- L3의 IP에서는 Connectionless 방식으로 패킷을 주고받으므로, 여러 패킷이 같은 경로로 이동한다는 보장이 없다.
- 그러므로, 패킷이 순서대로 도착한다는 보장 또한 없다.
- Connectionless 통신에서는 순서가 바뀌어 전달된 패킷을 그대로 상위 계층으로 Decapsulation한다.
- 수신한 L5의 Application이 적절히 조치하여 메시지를 이용한다. (필요 시, 순서를 맞추거나*, 순서를 맞추지 않고 사용한다.)
* Multimedia Application은 빠른 송수신과 올바른 순서, 일정한 패킷 간 시간 간격을 지향하므로, UDP 프로토콜 하에 구동된다.
Connection-Oriented Service(TCP 제공)
- Connection Oriented Service는 아래와 같이 3개의 Phase로 구성된다.
1. Connection Establishment
2. Data Transfer
3. Connection Teardown
- 위와 같이, Packet 2가 Packet 1보다 먼저 도착하게 되면 ACK를 보내지 못하게 된다. 이후에 Packet 1이 수신되면, Packet 1과 2를 수신했다는 내용의 ACK를 송신하게 된다.
- 수신된 Packet을 Buffering하고, 패킷의 Sequence Number를 전달받음으로써 L5에는 순서에 맞게 전달할 수 있다.
- L5의 Application이 요청할 때마다, 순서대로 패킷을 올려보낸다. (Pulling Service이기 때문이다.)
※ Physical Network(L2)에서 제공하는 Connection-Oriented Communication
- Sender와 Receiver 사이에 Virtual Circuit을 구축하여 논리적인 전용 회선을 제공한다.
- 즉, 모든 패킷이 하나의 경로로 이동하게 되며, 패킷들 간 순서가 맞을 수 밖에 없다.
- 단, Sender와 Receiver 사이에 다수의 Physical Network가 위치하고, 하나의 물리넷이라도 CO대신 CL방식으로 연결되면, 패킷이 옳은 순서대로 전송된다는 보장이 없어진다.
- 위와 같은 이유로 인해, L3에서는 CL 서비스만 제공한다.
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)