네트워크 트래픽에 따른 효율적/신뢰성 있는 전송을 위한 알고리즘
흐름 제어: 슬라이딩 윈도우
– 매번 ACK를 기다리지 않고 여러 패킷을 차례로 전송
– 각 컴퓨터의 창 크기를 확인하여 ACK 없이 계속해서 창 크기만큼 가져옴
– 발신자와 수신자 모두 자신의 창 크기(버퍼 크기)를 65535로 설정
– 단, 윈도우 크기는 RTT 값을 기준으로 즉시 재설정됩니다.
– SYN과 SYN/ACK 사이의 시간인 RTT(Round Trip Time)를 측정하고 이를 기준으로 윈도우 크기 재설정
교통 체증 제어
– 전송 제어를 위한 두 개의 창
– 수신창(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