TCP (Transmission Control Protocol, 전송 제어 프로토콜)
Source port
: 송신 측 애플리케이션을 식별하는 번호Destination port
: 수신 측 애플리케이션을 식별하는 번호Sequence number
: 세그먼트에 담긴 데이터의 시작 바이트 번호ACK #
: 다음에 기대하는 바이트 번호, 이 숫자보다 이전까지는 모두 잘 받았다는 의미URG
: 긴급 데이터 표시(거의 사용 X)ACK
: ACK# 확인 응답PSH
: 즉시 데이터를 애플리케이션에 전달하라는 요청(거의 사용 X)RST
: 연결 재설정SYN
: 연결 시작 요청(3-way handshake)FIN
: 연결 종료 요청Receive window
: 수신 윈도우 크기, 수신 측이 현재 얼마만큼 데이터를 더 받을 수 있는지 알려줌(흐름 제어에 사용) → 이 값을 통해 송신 측은 수신 측의 버퍼가 꽉 찾는지 확인Checksum
: TCP 헤더와 데이터에 오류가 있는지 확인, 데이터가 중간에 손상되었는지 확인하는 용도신뢰성이 있기 위해 다음 네 가지 문제 해결해야함
1. 패킷 손실 감지
2. 순서 바뀜 감지
3. 혼잡 제어(Congestion control)- 네트워크 혼잡
4. 흐름제어(Flow control) - Overload - receiver가 overload되는 문제
Stop and Wait
Sliding Window(Go Back N ARQ)
용어 정리
cwnd
(congestion window): 송신 측이 한 번에 보낼 수 있는 최대 바이트 수ssthresh
(slow-start threshold) : slow start와 AIMD 방식을 구분하는 임계값혼잡 제어 개요
해결 방법
AIMD
(Additive Increase/ Multiple Decrease)
패킷이 문제없이 도착 시 cwnd 1씩 증가
타임아웃시 cwnd를 절반으로 줄임
slow start
(AIMD 개선안)
AIMD는 네트워크 수용량 주변에서는 효율적으로 동작 but, 초반에 cwnd를 1씩 올리는 부분이 너무 느림
패킷을 보내고 문제 없이 돌아오면 각 응답 패킷에 따라 cwnd 1씩 증가(한 주기 지나면 패킷수 2배 증가)
혼잡 현상 발생시 cwnd를 1로 떨어뜨림
1로 떨어뜨린 기점까지는 다시 2배로 증가, 1로 떨어진 지점부터는 cwnd 1씩 증가
Fast Retransmit
- 혼잡 인지 방식
Fast Recovery
(빠른 회복)
흐름 제어는 송신 측과 수신 측 사이 속도를 다루고, 혼잡 제어는 호스트와 라우터를 포함해 더 넓은 범위를 아우른다.
'User Datagram Protocol'