TCP 오류제어
개요
| 개념 | TCP/IP 전송계층에서 종단간 사용자들의 신뢰성 있는 데이터 송수신을 위해 손실, 오류, 순서 문제를 제어하는 기능 (단위 : 세그먼트(Segment)) | |
| 특징 | 오류검출 | 손상(checksum), 손실(sequence number & ack number), 시간초과(Time-Over) |
| 오류정정 | 기본(Go-back-n(Cumulative ACK)), 옵션(selective repeat ARQ(Selective ACK)) | |
오류제어 과정
훼손/손실 세그먼트 재전송 |
![]() |
| 확인세그먼트 손실과 누적확인 |
![]() 1401은 사라졌지만 1601이 1600번까지는 다 받았음을 알려줌! |
오류제어 요소
| 수신확인 | - 수신측이 체크섬(Checksum) 계산을 통해 데이터 세그먼트 손상 여부 확인, 정상일 경우 ACK 통지 - 송신측이 ACK를 통해 정상 수신 확인 |
| 누적 수신 확인 (Cumulative) |
- 송신측은 확인 세그먼트를 통해 수신측이 (확인번호 - 1)번째 바이트까지 누적하였음을 확인 |
| 재전송 | - 재전송 조건 (언제 다시 보낼지에 대한 기준) • RTO(Retransmission Time Out) 만료 : 일정시간 ACK안오면 재전송함, 일반적 재전송 • 3 Duplicate ACK’s 수신 : 같은 ACK 3번연속 수신 (같은 (ACK = 다음 받고싶은 번호)를 여러 번 보낸다는 건 “어디까지는 잘 받았는데, 그 다음 게 안 왔다”는 뜻) |
TCP/IP 오류제어 고려사항
| 고려사항 | 내용 |
| 재전송 타이머 값 설정 | - 지나치게 짧은 타이머 값의 설정은 정상전달중인 데이터 세그먼트에 대한 재전송 초래 - 지나치게 긴 타이머 값의 설정은 대기 시간 증가로 전체적인 지연시간 상승 초래 - 일반적으로 재전송 타이머 값은 2 × RTT로 설정 |
| RTT 계산 | - 이전 RTT를 많이 반영하고, 현재 RTT를 조금 반영하여 부드럽게 평균을 내는 방식이 필요 |
슬라이딩 윈도우 (Sliding Window)
개요
| 개념 | ![]() 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 확인 응답(ACK)없이 전송할 수 있게 하여 흐름을 동적으로 조절하는 제어 알고리즘 |
| 특징 | ① 윈도우 크기만큼 ② ACK 수신여부에 따라 오른쪽 이동 |
슬라이딩 윈도우 구성 요소
| 구성요소 | 설명 |
| 윈도우 | ACK를 받지 않아도 즉시 전송이 가능한 데이터 |
| 윈도우 열림 동작 | 수신측으로 부터 ACK가 동작하여, 윈도우의 오른쪽 경계가 오른쪽으로 이동 (ACK가 오면 “앞부분은 잘 받았으니 다음 것도 보내도 됨으로 오른쪽으로 이동) |
| 윈도우의 닫힘동작 | 데이터(바이트)가 전송되어, 윈도우의 왼쪽 경계가 오른쪽으로 이동함 (이미 끝난 데이터는 창문 범위에서 빼버리고 윈도우 경계가 오른쪽으로 이동) |
| 윈도우 크기 | RWND(수신측윈도우)와 CWND(혼잡윈도우) 중 작은 값으로 결정 • RWND(상대가 받을수 있는 양) : ACK를 포함하고 있는 세그먼트를 사용하여 상대방에게 알려줌 • CWND(네트워크가 감당할 수 있는양) : 혼잡상태가 발생하지 않도록 네트워크에서 결정하는 값 - 수신 윈도우 크기가 증가하면 송신측 윈도우 크기도 증가 - 수신 버퍼가 가득찰 경우 수신 윈도우 크기는 0이 됨 - 송신 프로세스는 수신윈도우의 크기가 0이 아닐 때까지 전송불가 ![]() |
슬라이딩 윈도우 문제점 Silly Window Syndrome 및 해결방안
가. Silly Window Syndrome 설명
| 구분 | 내용 | |
| 개념 | • 슬라이딩 윈도우 동작 시 송수신의 낮은 데이터 생성, 소비 속도로 인한 효율 감소 현상 (너무 조금씩 보내서 비효율이 심해지는 현상) |
|
| 유형 | 송신 측 Syndrome | 송신 응용프로그램이 Data를 1byte(또는 적은 Data)씩 생성 |
| 수신 측 Syndrome | 수신 응용프로그램이 Data를 1byte(또는 적은 Data)씩 소비 | |
나. Silly Window Syndrome 해결방안
| 구분 | 해결방안 | 설명 |
| 송신 측 Syndrome 해결 |
Nagle’s Algorithm | 첫 발생 데이터는 세그먼트 생성/전송하고 이후는 최대크기 세그먼트 구성시까지 전송 보류 (첫데이터는 그냥 보내고 조금씩 생겨도 바로바로 보내지 말자) |
| 수신 측 Syndrome 해결 |
Clark’s Solution | •최소공간 확보 전엔 rwnd: 0 으로 응답(송신 방지), 확인응답 전송 지연 (조금 비었다고 바로 보내라고 하지 말자) |
TCP 혼잡제어
개요
| 개념 | 네트워크 내 패킷 수가 과도하게 증가하는 혼잡(Congestion) 현상 발생 시 전송패킷수를 낮추어 혼잡을 제어하는 알고리즘 수행기술 |
| 개념도 | ![]() 처음 전송량 작다가 Slow Start( 네트워크 괜찮은지 보면서 빠르게 증가) > ssthresh 도달 (이제 위험할 수 있으니 조심)> Congestion Avoidance(혼잡회피: 천천히 증가) > 손실 발생(혼잡 신호 감지)> Fast Retransmit(손실 패킷 재전송)> 전송량 감소(혼잡 완화 위해 줄임) > 다시 증가(Fast Recovery) * Tahoe는 거의 처음부터, Reno는 절반 수준에서 회복 |
절차 및 상세설명
![]() |
| 구분 | 설명 |
| Slow Start | - 송신측에서 패킷을 전송하는 비율과 수신측이 받은 ACK를 통해 지수의 크기로 증가시키는 기법 - 처음 연결 설정 시 CWND값은 1로 초기화 하여 세그먼트 전송후 ACK을 수신하면 2,4,8,16개로 CWND를 임계값까지 증가함 (처음에는 적게 보내다가, 괜찮으면 1,2,4,8...빠르게 늘리는 방식) |
| Congestion Avoidance | - 일정시간동안 ACK가 수신되지 않거나 일정수의 중복ACK가 수신되면 송신측은 패킷손실을 인지하고, Congestion Avoidance 상태가 됨 (임계값(ssthresh)에 도달하면 선형적으로 증가) |
| Fast Retransmit | - 연속된 Duplicate ACK를 수신하는 경우 TCP는 해당 Segment를 즉시 다시 전송함 (보통 중복 ACK 3번이상 오면 손실로 보고 그 세그먼트를 바로 재전송) |
| Fast Recovery | - Fast Retransmit 이후 새로 Slow Start를 통해서 설정된 연결의 안정상태에 도달할 필요없이 Congestion Avoidance 상태에서 전송할 수 있도록 하는 것 (손실이 나도 처음부터 다시 시작하지 않고, Congestion Avoidance 뒤에서 다시 이어가는 방식) |
'Study Note > 네트워크' 카테고리의 다른 글
| [품질] QoS(Quality of Service) (0) | 2026.04.09 |
|---|---|
| [기본모델>장비] 스위치 (0) | 2026.04.08 |
| [통신기술>무선통신기술] 6G (0) | 2026.04.07 |
| [기본모델>2데이터링크] 접근제어 (0) | 2026.04.07 |
| [기본모델>OSI 7] OSI 7계층 (0) | 2026.04.06 |





