4 분 소요


트랜스포트 계층

역할

각기 다른 호스트에서 동작하는 프로세스 사이의 논리적 통신을 제공한다.

  • 네트워크 계층 프로토콜은 호스트 사이의 논리적 통신을 제공한다.

특징

  1. IPPort 번호로 식별한다.
    • IP를 통해서 호스트를, Port를 통해서 프로세스를 찾아간다.
  2. 종단 시스템(end system, host)에 존재한다.
    • Network core, Access network에는 트랜스포트 프로토콜이 존재하지 않는다.
  3. IP 계층에 대한 다양한 제어를 수행한다.
    • 동적으로 IP주소를 관리, IP 변환, IP 패킷의 흐름제어를 한다.
    • PDU : 세그먼트(segment)

다중화와 역다중화

정의

트랜스포트 계층애플리케이션 계층 간의 데이터를 주고 받게 해주는 서비스를 의미한다.

역다중화 (demultiplexing)

정의

트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업을 역다중화 라고 한다.

다중화 (multiplexing)

정의

출발지 호스트에서 소켓으로부터 데이터를 모으고, 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보로 캡슐화하고, 그 세그먼트들을 네트워크 계층으로 전달하는 작업을 다중화 라고 한다.

포트 번호란?

정의

트랜스포트 계층에서의 식별자 역할을 하는 것을 말한다.

특징

  1. 소켓에 대한 식별을 한다.

  2. 일반적으로 source/destination 별로 port 번호가 존재한다.

  3. well-kown port number (0~1023)

img1

User Datagram Protocol (UDP)

특징

  1. 간단한 multiplexing/demultiplexing 기능의 프로토콜이다.

  2. Port 번호와 Checksum만 헤에더 붙는다.

  3. 사실상 IP 의 기능만 수행하며, 애플리케이션 계층에서 흐름 제어, 기타 기능을 구현한다.

  4. 연결 과정 없이 바로 전송이 가능하다. (비연결형)
    • 연결을 하지 않고 별도의 흐름제어, 혼잡제어를 수행하지 않기 때문에 TCP 보다 속도가 빠르다.
  5. 헤더의 크기가 작다. (8byte)
    • TCP는 20 byte

송수신 과정

UDP 소켓의 생성

애플리케이션 프로세스에서 소켓 생성 즉시 트랜스포트 계층의 port 번호가 부여된다.

UDP segment 송수신

Two tuple : 목적지 IP & port 번호

수신 port 번호가 같으면 동일한 소켓으로 들어간다. ↔ TCP는 송신 port 번호도 고려하여 소켓으로 매핑된다.

상대방 호스트의 port 가 열려있으면 항상 전송이 가능하다.

IP, port 번호를 지정해서 보내면 바로 전달이 가능하다. (비연결형)

Source port의 존재 의의

  • return address 개념이다.

UDP 세그먼트 구조

img2

신뢰적인 데이터 전송의 원리

Automatic Repeat reQuest (ARQ)

정의

Acknowlegement + timer + reactions로 구성된다.

신뢰성 있는 PDU 전송을 위한 가장 보편적인 프로토콜 함수이다.

TX/RX 가 confimation (ACK)를 받거나 timer-out 까지 기다리는 동안 하는 일련의 동작을 포함한다.

방식

재전송 방법에 따라 여러 방식이 존재한다.

GBN (Go Back N)

img3

N번째 unconfirmed PDU로 돌아가서 거기서부터 재전송을 한다.

TX entity는 acknowledged 되기 전까지 보낸 PDU를 그대로 버퍼에 저장하고 있어야 한다.

RX entity는 N번째 PDU가 문제가 생기면 이후에 PDU(N+1~)는 모두 버린다.

time-out의 경우 N번째 PDU부터 재전송한다.

SR (Selective Repeat)

img4

손실된 PDU에 대해서만 골라서 재전송한다.

RX entity는 제대로 받은 PDU를 저장한다.

transmission order대로 다 받을때 까지 저장한다.

cumulative ACK를 통해 제대로 전달된 PDU를 TX entity에서 확인한다.

GBN VS SR

SRRX entity측에 buffer가 요구된다.

GBNTX entity측에 buffer가 요구된다.

GBN은 재전송 수신까지 시간이 좀 걸리는데 SR은 상대적으로 재전송 수신이 덜 걸린다.

-> TCP 는 SR과 GBN 의 혼합형이라고 생각하면 된다.

Transmission Control Protocol (TCP)

특징

TCP는 연결 지향형이다.

connection establishment 과정이 존재한다.

connection이 존재 해야지만 세그먼트를 전달할 수 있다.

전이중 서비스(full-duplex service)를 제공한다.

A와 B가 연결되어 있으면 A→B, B→A 양방향으로 흐를 수 있다.

TCP 연결은 항상 단일 송신자와 단일 수신자 사이의 점대점(point-to-point) 이다.

한 송신자가 멀티캐스팅할 수 없다.

Four tuple

source IP/port number, destination IP/port number 로 구성된다.

UDP와 다르게 source에 대한 정보까지 고려야여 소켓에 매핑된다.

TCP 는 신뢰적 데이터 전송을 제공한다.

재전송 및 ARQ 기능을 포함한다.

TCP 세그먼트 구조

img10

3-way handshake

img5

request / setup / complete

initiator가 confirmation 수신에 대해 responder에게 confirm을 또 해준다. (complete)

responder는 complete 수신후에 connection이 맺어진 것으로 간주한다.

complete가 loss가 일어나도 responser는 connection이 맺어진 상태로 가정할 수 있다.

  • 이전에 request를 받았으므로, connection을 맺고자 하는 initiator 의 상태는 이미 확인했다.
  • 후속 data PDU을 수신하면 complete를 수신한 것으로 간주할 수 있다.

흐름제어

정의

송신자수신자 의 버퍼를 오버플로시키는 것을 방지하기 위해 속도를 조절하는 것을 의미한다.(송신자의 억제)

송수신 entity 사이에 교환되는 PDU 개수를 조정하는 것을 의미한다.

필요성

수신측송신측보다 데이터 처리 속도가 느리다면 저장 용량을 초과한 이후에 오는 PDU는 손실될 수 있다.

만일 손실이 발생한다면 송/수신 측 간에 불필요한 요청이 추가로 발생하게 된다.

이를 막기 위해서 수신측의 데이터 처리 속도에 맞춰서 송신측에서 PDU를 보내도록 할 수 있는 방법이 요구된다.

방식

Stop and Wait

img6

이전에 전송한 패킷에 대한 응답을 받아야만 요청을 할 수 있도록 하는 방법이다.

당연히 성능이 좋지 않기 때문에 사용하지 않는다.

Sliding window protocol

수신측이 제공한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송하게 하여 데이터 흐름을 동적으로 제어하는 방식이다.

img7

먼저 윈도우에 포함되는 모든 패킷을 전송한 후, 패킷드의 전달이 확인되는 순간 이 윈도우를 옆으로 옮기면서 다음 패킷을 전송한다.

혼잡제어

정의

네트워크 혼잡을 피하기 위해서 송신측에서 보내는 데이터의 전송 속도를 제어하는 것을 혼잡제어라고 한다.

필요성

송신측에서 전송하는 모든 데이터는 인터넷으로 연결된 네트워크를 통해서 전송된다.

만약 한 라우터에 많은 패킷이 몰리게 되면 라우터의 큐가 꽉 차게되고 패킷을 버리게 된다.

이렇게 되면 송신 호스트는 결국 다시 재전송을 하게 될 것이고 네트워크 혼잡도만 높아지게 된다.

때문에 네트워크가 혼잡할 때는 송신측의 전송 속도를 제어할 필요가 있다.

방식

AIMD(Additive Increase / Multiplicative Decrease)

패킷을 보내고 문제없이 도착하면 window 크기를 1씩 증가시키는 방식이다.

패킷 전송이 실패하거나 일정 시간이 지나게 되면 보내는 속도를 절반으로 줄인다.

초기의 네트워크 대역폭을 높게 사용하지 못하고 네트워크가 혼잡해지는 것을 미리 감지할 수 없다.

Slow start

AIMD와 달리 패킷이 성공적으로 전송되면 ACK 패킷마다 window 크기를 1씩 증가시켜준다.

즉 한 주기마다 window 크기가 두배로 커진다.

패킷 전송에 실패하게 되면 window 크기를 1로 줄이고 혼잡이 발생했던 window 크기까지 지수함수 크기로 증가시킨다.

혼잡 발생 크기를 넘기면 1씩 증가시킨다.

Fast Recovery

혼잡 상태가 발생하면 window 크기를 반으로 줄이고 선형 증가시키는 방식이다.

혼잡 상황을 한번 겪고 나면 AIMD 방식으로 동작한다.

참고

  • https://gyoogle.dev/blog/computer-science/network/%ED%9D%90%EB%A6%84%EC%A0%9C%EC%96%B4%20&%20%ED%98%BC%EC%9E%A1%EC%A0%9C%EC%96%B4.html

  • 컴퓨터네트워크 하향식 접근

태그:

카테고리:

업데이트: