[TIL] 20241219 TIL : Transport Layer pt.1

Jaeyoung Ko·2024년 12월 19일
0

<1> Transport Layer

전송층은 응용층과 네트워크 계층 사이에 위치하는 계층으로, network layer로부터 서비스를 제공받아 application layer에 서비스를 제공한다.

The transport layer is responsible for the delivery of a message from one process to another.

간단히 말하면, 전송층은 두 종단 시스템으로부터 전체 메시지를 신뢰성있게 전달하는 역할을 한다.

우리가 주요하게 다룰 전송층의 역할은 다음과 같다.

1) Process-to-Process Delivery

2) Flow Control

3) Error Control



1) Process-to-Process Delivery

cf. Network Layer

네트워크 계층은 컴퓨터 레벨에서, 즉 source-to-destination으로의 호스트 간 통신을 책임져 개별 패킷의 전달을 담당한다.
반면, 전송 계층은 이 패킷들을 재조립하여 메시지를 신뢰성 있게 대상 프로세스에 전달하는 역할을 한다.


이 통신을 달성하기 위한 방법으로, IP addressPort number 두 식별자를 이용한다.
IP address는 호스트 서버를 지정, Port number를 통해 프로세스를 지정한다.

이 두 식별자의 조합을 Socket Address라고 한다.

cf. ICANN (Internet Corporation for Assigned Names and Numbers)

인터넷 할당 번호 관리 기관에서는 다음처럼 port number에 대해 세 구간으로 나눈다.

well-known : 0 ~ 1023 (ex. HTTP 80, HTTPS 443)
registered : 1024 ~ 49151
dynamic or private : 49152 ~ 65535 (temporary)


2) Flow Control

Flow Control이란 송신자와 수신자 간의 데이터 전송 속도에 대한 제어이다.
만약 송신 속도가 수신 속도에 비해 너무 느릴 경우, 대역폭이 낭비되며 비효율적인 전송이 이루어질 것이고, 송신속도가 수신 속도에 비해 너무 빠를 경우, 수신 측에서 buffer overflow로 인해 패킷 손실이 일어나는 등 과부화가 걸릴 수 있다.


정보 배달 방법: Pushing vs Pulling

  • Pushing: 송신자가 계속하여 메시지를 보내는 (pushing)하는 방식으로 과도한 수신으로 인한 loss 방지를 위해 flow control이 필요하다.
  • Pulling: 수신 측의 요청에 대해서만 메시지를 보내는 (pulling)하는 방식으로 구조적으로 flow control이 필요하지 않다.

즉, 위 이미지에서 4개의 개체, sender측 process, transport layer와 receiver측 process, transport layer에 대해, 정보 전달 방향에 따라 producer, consumer 역할을 맡으며 다음과 같은 pushing과 pulling을 사용하기에 해당 pushing 부분에 대해 flow control이 필요하다.


Flow Control 매커니즘

A. 버퍼 관리

buffer가 full일 때 메시지 경유 정지, buffer에 공간이 생기면 메시지 경유/전송 허용.


B. Sliding Window

Sliding Window는 송신 측과 수신 측 사이의 데이터 전송을 제어하는 방식으로, 한 번에 전송할 수 있는 패킷의 수를 제한하여 데이터 흐름을 조절한다. window 크기 내에 전송한 패킷에 대해 ACK를 받으면, 윈도우를 이동시켜 다음 패킷을 전송한다.

C. Congestion control

Congestion control는 패킷 손실, 지연율 증가를 야기할 수 있는 네트워크 혼잡을 감지하고, 이를 완화하여 데이터 전송의 효율성을 유지하는 메커니즘이다.


  • Slow Start
    작은 크기의 window 크기로 시작하여 ACK를 받을 때마다 점진적으로 window 사이즈 증가시키기.
  • 패킷 손실
    패킷 손실이 발생하면 혼잡 윈도우 크기를 줄인 후 데이터를 재전송합니다.

cf. TCP Tahoe, TCP Reno



3) Error Control

Error control이란 데이터 전송 중 발생하는 오류에 대한 detectioncorrection 이다.


Error Control 매커니즘

A. Checksum

데이터가 전송 중에 손상되지 않았는지 확인하기 위한 계산값이다. 송신자는 체크섬을 계산해 전송하고, 수신자는 받은 데이터와 계산된 값이 일치하는지 확인한다.

B. CRC (Cyclic Redundancy Check)

CRC는 더 강력한 오류 검사 방식으로, 데이터에 대한 다항식 나눗셈을 통해 오류를 탐지한다.

C. ARQ (Automatic Repeat reQuest):

ARQ는 오류가 발생했을 때 송신자가 데이터를 재전송하는 오류 수정 기법이다. 수신자가 오류를 탐지하면 송신자에게 재전송을 요청하고, 송신자는 해당 데이터를 다시 보낸다.

cf.
Stop-and-Wait
Go-Back-N ARQ
Selective Repeat

D. ACK 와 NACK

ACK는 수신자가 송신자에게 데이터가 정상적으로 도착했음을, NACK는 오류가 발생했음을 알리는 메시지이다.

송신자는 ACK를 받은 후에 다음 데이터를 전송할 수 있습니다. 오류가 발생하지 않았다면 ACK가 전송되고, 오류가 발생했으면 ARQ를 통해 재전송을 요청한다.

송신자는 NACK을 받은 후, 오류가 발생한 데이터를 재전송하고, 오류 발생 시 송신자에게 직접적인 피드백을 제공한다.

E. Sequence Number

Sequence Number는 송신자가 보낸 데이터 패킷에 부여하는 번호로, 데이터의 순서를 추적하는 데 사용한다. 수신자는 패킷의 순서를 확인하고 오류가 발생했을 때 재전송을 요청하며, 패킷이 중복되었을 경우 이를 감지하여 순차적인 데이터 흐름을 유지한다.








TO BE CONTINUED FOR

<2> Transport Layer Protocol

RDT

주의
TCP /= TCP/IP
TCP/IP 프로토콜 그룹은 전송 계층 프로토콜의 subset

UDP, TCP, SCTP + RUDP

profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글