Network

[컴퓨터 네트워킹 하향식 접근] 3-1. 트랜스포트 계층: 개요

noahkim_ 2025. 3. 27. 18:00

이석복 님의 KOCW 강의 "컴퓨터 네트워크"를 정리한 글입니다.

* James F. Kurose님과 Keith W. Ross 님의
"컴퓨터 네트워킹 하향식 접근" 책을 교제로 한 강의입니다. (책의 내용은 포함되지 않았습니다)


1. 트랜스포트 계층 서비스 및 개요

트랜스포트 계층

  • 호스트 간의 데이터 전송을 관리하는 역할
기능 설명
신뢰성 있는 데이터 전송 데이터 전송 중, 오류를 검사하고 재전송을 처리함
흐름 제어 및 혼잡 제어
네트워크 혼잡과 수신자의 처리 능력에 맞게 데이터 전송 속도를 조절함
다중화 및 역다중화
여러 애플리케이션이 하나의 네트워크 연결을 공유할 수 있도록 데이터를 분리하고 재조합함

 

세그먼트

  • 트랜스포트 계층에서 전송되는 데이터 단위
  • ✅ 애플리케이션 계층에서 보낸 데이터를 세그먼트로 나누어 전송함

 

2. 신뢰성 있는 데이터 전송의 원리

알고리즘

항목 Stop-and-Wait Go-Back-N
Selective Repeat
슬라이딩 윈도우 크기 1 (하나만 전송) N (여러 개 동시 전송)
N (여러 개 동시 전송)
세그먼트 전송 방식 세그먼트 전송
ACK 기다림
세그먼트 전송
ACK 기다리지 않음
세그먼트 전송
ACK 기다림
ACK 처리 방식 개별 ACK 누적 ACK
개별 ACK
(SACK 옵션: 범위 처리)
오류 발생 시 동작 해당 세그먼트만 재전송 오류 세그먼트 이후 모든 세그먼트 재전송 해당 세그먼트만 재전송
효율성 ❌ 비효율적
(한 번에 하나의 세그먼트만 전송)
✅ 효율적
(여러 세그먼트 동시에 전송)
✅ 매우 효율적
(세그먼트별로 처리되어 재전송 최소화)
복잡성 간단 (직관적으로 동작) 중간 (윈도우 관리 및 누적 ACK)
가장 복잡
(독립적인 ACK 및 재전송 관리 필요)
타임아웃 및 재전송 타임아웃 발생 시 해당 세그먼트만 재전송 타임아웃 발생 시 문제 세그먼트 이후 모든 세그먼트 재전송
타임아웃 발생 시 문제 있는 세그먼트만 재전송

 

예) Stop-and-Wait

더보기
1 sender   seq=42, ack=79, data='C'
2 receiver seq=79, ack=43, data='C'
  • 송신자가 42번 바이트부터 시작하는 데이터 'C'를 보내면서, 수신자가 79번 바이트를 기대하고 있음 (78까지 OK)
  • 수신자가 79번 바이트부터 시작하는 데이터 'C'를 보내면서, 송신자가 43번 바이트를 기대하고 있음 (42까지 OK)

 

예) Go-Back-N

더보기

송신자

1 sender   
- seq=42, ack=79, data='C'
- seq=43, ack=79, data='D'
- seq=44, ack=79, data='E'
  • 수신자에게 78까지 받았음을 알려줌 (79번 바이트 수신을 기대함)
  • 42~44번 데이터 'C','D','E'를 보냄

 

수신자

- seq=79, ack=43
  • 수신자에게 42까지 받았음을 알려줌.
  • ➡️ 43, 44 재전송 받음

 

예) Selective Repeat

더보기

송신자

- seq=42, ack=79, data='C'
- seq=43, ack=79, data='D'
- seq=44, ack=79, data='E'
  • 수신자에게 78까지 받았음을 알려줌 (79번 바이트 수신을 기대함)
  • 42~44번 데이터 'C','D','E'를 보냄

 

수신자

- seq=79, ack=43
- seq=79, ack=45
  • 수신자에게 42, 44를 받았음을 알려줌. (43번 빠졌음)
  • ➡️ 43만 재전송 받음

 

신뢰성이 깨지는 경우

문제 유형 설명 수신 측 동작 송신 측 동작
세그먼트 에러  전송 도중 세그먼트가 변형됨 체크섬 오류 확인 후, 세그먼트 폐기
✅ 마지막으로 잘 받은 ACK 번호 재전송
ACK 미수신 시 재전송
세그먼트 유실 세그먼트 또는 ACK이 손실됨  데이터 못 받으면 그냥 대기
타임아웃 발생
✅ 해당 Sequence Number로 재전송
세그먼트 중복 송신자가 동일 패킷을 다시 전송 Sequence Number 중복 확인
이미 받은 세그먼트 버림
재전송받은 세그먼트에 대해 ACK 응답
✅ ACK 응답 수신 시, 다음 Sequence Number로 전송

 

3. 혼잡 제어의 원리

  • 송신자는 수신 버퍼 상태와 네트워크 대역폭을 고려하여 전송 속도를 조절해야 함

 

필요성

  • 인터넷 네트워크는 공유 자원이며, 단말들이 속도를 높이기 위해 많은 데이터를 전송하면 병목 현상이 발생함
  • ✅ 네트워크가 막히면, 패킷 유실 및 타임아웃 증가 -> 재전송 발생
  •  재전송이 많아지면 네트워크 혼잡이 가중되어 전송 속도가 더욱 느려짐
  • ➡️ TCP는 네트워크 상태가 나쁘면 속도를 늦추고, 좋으면 속도를 높임

 

혼잡 상태 감지 방법

  • 네트워크 상황을 파악하고, 혼잡이 발생하면 속도를 조절해야 함
방식 설명
End-to-End Congestion Control (현재 방식)
단말들이 네트워크 상태를 유추하여 서로 공유함.
Network-Assisted Congestion Control
네트워크 라우터가 혼잡 정보를 직접 제공함 (비현실적).

 

Congestion Window

  • 송신자가 네트워크 혼잡을 방지하기 위해 설정하는 전송 제한 크기
  • ✅ 송신자의 윈도우 크기를 조절하여 전송량 조절
  • ➡️ 수신 버퍼 상태와 네트워크 대역폭을 고려하여 조절함
  • ➡️ 둘 중 작은 값을 기준으로 전송 속도를 맞춤

 

4. 다중화와 역다중화

구분 다중화(Multiplexing) 역다중화(Demultiplexing)
정의 송신측에서 여러 애플리케이션이 하나의 IP/포트를 공유해 데이터를 보내는 기술 수신측에서 목적지 포트 번호를 보고 해당 애플리케이션에 전달
목적 네트워크 리소스를 효율적으로 사용 수신한 데이터를 올바른 애플리케이션 프로세스로 전달
작동 방식 송신 측에서 여러 애플리케이션의 데이터를 해당 포트 번호와 함께 패킷에 포함하여 전송 수신 측은 각 세그먼트의 목적지 포트 번호를 확인
예시 여러 웹 브라우저 탭이나 이메일 클라이언트가 하나의 IP 주소와 포트를 공유하면서도 독립적으로 데이터를 전송
수신 측에서 웹 브라우저와 이메일 클라이언트가 데이터 패킷을 받아 각각의 애플리케이션에 전달

 

 

출처