이석복 님의 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 주소와 포트를 공유하면서도 독립적으로 데이터를 전송 |
수신 측에서 웹 브라우저와 이메일 클라이언트가 데이터 패킷을 받아 각각의 애플리케이션에 전달
|
출처
'Network' 카테고리의 다른 글
[컴퓨터 네트워킹 하향식 접근] 3-3. 트랜스포트 계층: UDP (1) | 2025.03.28 |
---|---|
[컴퓨터 네트워킹 하향식 접근] 3-2. 트랜스포트 계층: TCP (1) | 2025.03.28 |
[러닝 HTTP/2] 1. HTTP의 진화 (0) | 2025.03.28 |
[컴퓨터 네트워킹 하향식 접근] 2. 애플리케이션 계층 (1) | 2025.03.27 |
[컴퓨터 네트워킹 하향식 접근] 1. 컴퓨터와 네트워크 인터넷 (0) | 2025.03.27 |