통신/네트워크 프로토콜

TransportLayer

문상휘파람 2024. 9. 29. 01:59

개요

전송층은 네트워크층과 응용층 사이에 위치하며, 응용층에 서비스를 제공하는 역할을 한다. 전송층은 네트워크로부터 서비스를 제공받고, 이를 이용하여 응용 프로그램 간의 데이터 전송을 처리한다.

Internet 전송층 프로토콜

TCP

  • 신뢰성 있는, 순서대로 전달: TCP
    • 네트워크 혼잡 제어
    • 수신 측 흐름 제어
    • 연결 설정

UDP

  • 신뢰성 없는, 순서대로 전달되지 않는: UDP
    • "최선의 노력"으로 동작하는 IP 확장
  • 제공되지 않는 서비스:
    • 지연 보장
    • 대역폭 보장

TCP, UDP 가 핵심

전송층 서비스

프로세스 간 통신

전송층은 응용층의 개체인 프로세스 간 통신을 제공한다. 전송층의 주 역할은 메시지를 적절한 프로세스로 전달하는 것이다.

주소 체계: 포트 번호

  • 클라이언트와 서버 간 프로세스 간 통신에서 각 프로세스는 고유한 포트 번호로 식별된다.
  • 포트 번호의 범위는 0 ~ 65,535이다.
    • 잘 알려진 포트: 0 ~ 1,023
    • 등록된 포트: 1,024 ~ 49,151
    • 동적 포트: 49,152 ~ 65,535

포트 번호의 역할

  • 로컬 및 원격 호스트는 IP 주소를 사용하여 식별되며, 프로세스는 포트 번호를 통해 식별된다.

소켓 주소

IP ad와 Port ad 같이 묶은 주소

소켓 주소는 각 종단점에서 연결을 만들기 위해 필요한 주소로, IP 주소와 포트 번호를 결합한 형태이다. 소켓은 응용 프로그램이 메시지를 전송하거나 수신할 때 사용되는 문 역할을 한다.

소켓 프로그래밍

소켓 프로그래밍은 클라이언트/서버 응용 프로그램을 구현할 때 사용되며, 이를 통해 서로 통신한다. 클라이언트는 데이터를 소켓으로 보내고, 서버는 소켓을 통해 데이터를 수신한다.


다중화와 역다중화

다중화 - 역다중화

다중화는 여러 응용 프로그램이 동일한 전송 계층 프로토콜을 사용할 수 있도록 하며, 역다중화는 수신된 데이터를 적절한 소켓으로 전달하는 과정이다. IP 주소와 포트 번호를 사용해 데이터가 정확한 소켓에 전달된다.

비연결형 다중화 (UDP)

  • UDP는 비연결형 전송 프로토콜로, 목적지 포트 번호를 기반으로 데이터를 소켓에 전달한다.

연결형 다중화 (TCP)

  • TCP는 4개의 요소(IP 주소, 포트 번호 등)를 사용하여 연결을 식별하고, 수신된 데이터를 적절한 소켓에 전달한다.

전송층의 흐름 제어

흐름제어

흐름 제어는 송신 측과 수신 측 간의 데이터를 조절하는 메커니즘이다. 송신 측이 데이터를 너무 빠르게 보내면 수신 측이 처리하지 못할 수 있기 때문에, 흐름 제어는 데이터를 저장할 버퍼를 이용하여 제어한다.

오류 제어

오류 제어는 전송 중 발생할 수 있는 오류를 탐지하고 수정하는 과정을 포함한다. 손상된 패킷은 폐기되고, 손실된 패킷은 재전송된다. 중복된 패킷도 확인 후 폐기한다.


RDT (Reliable Data Transfer)

RDT 예제 - 중요함

 

RDT는 전송층에서 신뢰성 있는 데이터 전송을 보장하기 위한 프로토콜이다. TCP는 RDT의 대표적인 예로, 오류 없이 데이터를 송/수신할 수 있도록 설계되었다. RDT 3.0은 ACK 신호를 기다리고, 일정 시간이 지나도 응답이 없으면 패킷을 재전송하는 방식으로 동작한다.

Stop-and-Wait 프로토콜 - 제일 기본

Stop-and-Wait는 패킷을 하나씩 보내고, 각 패킷에 대한 확인 응답(ACK)을 기다린 후에 다음 패킷을 전송하는 방식이다. 흐름 제어와 오류 제어를 제공하며, 패킷이 손실되거나 훼손되면 재전송한다.


파이프라이닝

파이프라이닝

 

파이프라이닝은 여러 패킷을 동시에 전송하는 방법이다. 이를 통해 전송 효율성을 크게 향상시킬 수 있다. 두 가지 파이프라인 프로토콜인 Go-Back-NSelective Repeat가 존재한다.

Go-Back-N

Go-Back-N

 

송신 측에서 N개의 확인되지 않은 패킷을 파이프라인에 보낼 수 있으며, 수신 측이 누락된 패킷을 발견하면 그 이후 모든 패킷을 다시 전송한다.

Selective Repeat

Selective Repeat

 

Selective Repeat는 송신 측이 누락된 패킷만 다시 전송하며, 수신 측은 순서에 맞게 도착하지 않은 패킷을 임시로 저장한다.


Go-Back-N과 Selective Repeat 비교

  • Go-Back-N은 수신 측이 누락된 패킷을 발견하면 모든 패킷을 다시 요청하지만, Selective Repeat는 필요한 패킷만 재전송한다.
  • Selective Repeat는 더 효율적이지만 구현이 복잡하다.

전송층의 성능 문제

전송층의 성능은 전송 속도와 대역폭, 그리고 네트워크 상태에 따라 달라진다. RDT 3.0처럼 성능이 저하되는 경우, 파이프라이닝과 같은 기술을 사용해 효율성을 높일 수 있다.

'통신 > 네트워크 프로토콜' 카테고리의 다른 글

TCP(1) - 구조와 특징  (0) 2024.09.29
UDP  (0) 2024.09.29
Routing Algorithms  (0) 2024.09.29
IP(2) - 데이터 그램 구조와 단편화 및 검사합  (0) 2024.09.29
IP(1) - 주소지정과 클래스  (1) 2024.09.28