Computer Science/Computer Network

[Computer Network] Transport Layer Service | 전송 계층 서비스

lww7438 2020. 5. 20. 11:03

Transport Layer Service

 

전송 계층 서비스

 

 

 

- Layer 4(L4)에서 제공하는 네트워크 서비스로 아래와 같이 구성된다:

  1. Process to Process Communication (TCP/UDP 제공)
  2. Encapsulation and Decapsulation (TCP/UDP 제공)
  3. Multiplexing and Demultiplexing (TCP/UDP 제공)
  4. Flow Control (TCP 제공)
  5. Error Control (TCP 제공)
  6. Congestion Control (TCP 제공)
  7. Connection-Oriented Service (TCP 제공)
  8. 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)