TCP 제어

네트워크 트래픽에 따른 효율적/신뢰성 있는 전송을 위한 알고리즘

흐름 제어: 슬라이딩 윈도우


– 매번 ACK를 기다리지 않고 여러 패킷을 차례로 전송

– 각 컴퓨터의 창 크기를 확인하여 ACK 없이 계속해서 창 크기만큼 가져옴

– 발신자와 수신자 모두 자신의 창 크기(버퍼 크기)를 65535로 설정

– 단, 윈도우 크기는 RTT 값을 기준으로 즉시 재설정됩니다.

– SYN과 SYN/ACK 사이의 시간인 RTT(Round Trip Time)를 측정하고 이를 기준으로 윈도우 크기 재설정


TCP 제어 1

교통 체증 제어


– 전송 제어를 위한 두 개의 창

– 수신창(RWND): 흐름제어에 사용(슬라이딩 윈도우)

– Congestion Window(CWND): 네트워크 혼잡 제어에 사용

– 송신측 최종 윈도우 크기 = min(RWND, CWND)

– 초기 혼잡 구간: 1MSS

MMS = MTU - (IP헤더길이) - (TCP헤더길이)


MTU(Maximum Transmission Unit): 한번 전송때 보낼 수 있는 최대 단위 
보통 1500 - 20 - 20 = 1460bytes

명령: ifconfig, ipconfig로 확인 가능

혼잡 제어 알고리즘 1: AIMD


– 처음에 CWND =1

– ACK가 도착하면(패킷 전송 성공) -> CWND = CWND + 1

– 일정 시간 동안 ACK가 도착하지 않음(패킷 전송 오류) -.> CWND = CWND / 2

************************************************** ************************************************ ** **********************************

느린 전송으로 인해 AIMD 알고리즘에 의해 생성된 알고리즘(Slow Start, Congestion avoidance)

************************************************** ************************************************ ** **********************************

혼잡 제어 알고리즘 2: SLOW START


– 일반적으로 초기에 CWND = 1

– ACK가 도착하면(패킷 전송 성공) -> CWND = CWND 2회

– 일정 시간 동안 ACK가 도착하지 않는 경우: 패킷 전송 오류 – CWND = 1(초기값)

혼잡 제어 알고리즘 3: 혼잡 회피


– CWND가 일정 크기에 도달했을 때

– ACK가 도착하면(패킷 전송 성공 시) -> CWND = CWND +1