PE Notes · 네트워크
TCP, UDP, 혼잡 제어, 폴리싱과 셰이핑
연결형 TCP와 비연결 UDP를 신뢰·창·헤더로 가르고, 슬로스타트부터 빠른 복구, 폴리싱과 셰이핑이 cwnd에 미치는 영향을 정리합니다.
인터넷이 붕괴하지 않은 이유는 송신자가 스스로 속도를 줄였기 때문입니다. 는 ACK와 창으로 그 일을 하고, 는 그 짐을 내려 실시간과 질의를 빠르게 합니다. 입구에서 초과를 자르느냐, 출구에서 고르게 내보내느냐가 다시 창을 흔듭니다.
연결과 비연결
TCP는 로 세션을 엽니다. 순서·재전송·흐름 제어·혼잡 제어가 같이 갑니다. UDP는 헤더 8바이트로 바로 던집니다. DNS·음성·게임이 이쪽입니다.
종료는 FIN을 양쪽으로 주고 TIME_WAIT를 둡니다. 마지막 ACK가 사라질 여지를 2MSL만큼 남깁니다.
| 비교축 | TCP | UDP |
|---|---|---|
| 연결 | 있음 | 없음 |
| 신뢰 | 재전송·순서 | 체크섬 정도 |
| 흐름·혼잡 | 있음 | 없음 |
| 헤더 | 20바이트 이상 | 8바이트 |
| 자리 | 웹·파일·메일 | DNS·VoIP·게임 |
오류제어 토픽의 선택 재전송이 TCP 창 안에 녹아 있습니다. 라우팅은 경로만 고르고, 속도 조절은 종단이 합니다.
창이 지수에서 선형으로
혼잡은 라우터 버퍼가 넘쳐 드롭이 나는 상태입니다. 는 를 1 MSS에서 매 RTT 두 배로 키우다 ssthresh에서 혼잡 회피로 넘어갑니다. 회피는 RTT마다 1 MSS입니다.
는 네트워크를 지키고, 흐름 제어는 수신 버퍼를 지킵니다. 둘 다 창이지만 주체가 다릅니다.
Tahoe는 중복 ACK에도 슬로스타트로 돌아갑니다. Reno는 절반으로 줄이고 빠른 복구로 선형 구간에 남습니다. CUBIC은 고대역에서 창을 3차 곡선으로 키웁니다. 타임아웃은 더 심한 신호입니다.
| 비교축 | 흐름 제어 | 혼잡 제어 |
|---|---|---|
| 대상 | 수신 호스트 | 경로 전체 |
| 창 | rwnd | cwnd |
| 신호 | 윈도 광고 | 드롭·중복 ACK·RTT |
실제 송신량은 두 창의 최소입니다.
자르면 창이 움츠러든다
폴리싱은 CIR를 넘는 패킷을 입구에서 버립니다. TCP는 드롭을 혼잡으로 보고 cwnd를 줄입니다. 은 출구 버퍼에 담아 고르게 내보내, 드롭을 줄입니다. 대가는 지연입니다.
| 비교축 | 셰이핑 | |
|---|---|---|
| 초과 | 즉시 드롭·강등 | 버퍼 후 송신 |
| TCP | 창이 자주 꺾임 | 친화적 |
| 지연 | 거의 없음 | 버퍼만큼 |
| 자리 | 인그레스 | 이그레스 |
은 UDP 위에 혼잡 제어와 암호를 다시 올립니다. HTTP/3가 여기를 씁니다. 연결은 에 가깝고, 스트림이 한 손실에 모두 멈추지 않습니다. BBR은 손실 대신 대역과 RTT를 봅니다.
QoS 토픽이 클래스와 큐를 다루면, 여기서는 종단 창이 그 드롭에 어떻게 반응하는가를 적습니다.