주요 차이점: 흐름 제어는 발신자와 수신자 간의 속도 불일치 문제를 해결합니다. 혼잡 제어는 네트워크 리소스 고갈 방지 문제를 해결합니다. 흐름 제어는 슬라이딩 창을 통해 구현됩니다. 혼잡 제어는 혼잡 창을 통해 구현됩니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
관련 추천: "Programming Teaching"
흐름 제어와 혼잡 제어의 차이점
TCP 흐름 제어와 혼잡 제어는 상대적으로 비슷한 개념인 것 같아서 혼동되기 쉽습니다. 그러나 사실 그들이 원하는 목표와 방법은 전혀 다르다.
흐름 제어는 발신자와 수신자 간의 속도 불일치 문제를 해결합니다. 발신자가 너무 빠르게 전송하면 수신자가 수신하고 처리할 시간이 없습니다. 사용되는 메커니즘은 전송되었지만 승인되지 않은 패킷 수를 제어하는 슬라이딩 창 메커니즘입니다.
혼잡 제어는 네트워크 리소스가 고갈되는 것을 방지하는 문제를 해결합니다. 자율적인 회피 조치를 취함으로써 누구나 제한된 네트워크 리소스의 고갈을 피할 수 있습니다. 패킷 손실이 발생하면 전송 속도를 제어하여 네트워크 부하를 줄입니다.
흐름 제어
특정 연결 통신 프로세스 중에는 창 크기가 변경되지 않습니다. 슬라이딩 윈도우는 메커니즘으로, 슬라이딩 윈도우의 크기는 송신 측에서 전송할 수 있는 데이터의 크기를 나타내며 수신 측에서 수신할 수 있는 데이터의 크기는 동적으로 변경됩니다.
혼잡제어
혼잡 회피 단계에서 제한 크기를 초과한 후 선형적으로 증가하는 과정과, 패킷 손실 발견 후 혼잡 창을 1로 변경하고 제한 크기를 절반으로 줄이는 과정입니다.
확장 정보
Flow 제어는 end-to-end 제어입니다. 예를 들어 A가 네트워크를 통해 B에게 데이터를 너무 빨리 보내면 B는 이를 받을 수 없습니다. 너무 작거나 처리가 너무 느립니다)), 이때 제어는 흐름 제어이며 원리는 슬라이딩 창의 크기를 변경하여 달성됩니다.
혼잡 제어란 A와 B 사이의 네트워크가 차단되어 전송 속도가 느려지거나 패킷 손실이 발생하고 전송 시간이 없는 경우를 말합니다. 너무 많은 데이터가 네트워크에 주입되는 것을 방지하면 네트워크의 라우터나 링크에 과부하가 걸리는 것을 방지할 수 있습니다. 혼잡 제어는 모든 호스트, 라우터 및 네트워크 성능 저하와 관련된 모든 요소를 포함하는 글로벌 프로세스입니다.
흐름 제어 메커니즘:
호스트 A가 호스트 B로 데이터를 보낸다고 가정합니다. 양측이 결정한 창 값은 400입니다. 각 메시지 세그먼트의 길이가 100바이트이고 시퀀스 번호의 초기 값은 seq=1이며 대문자 ACK는 헤더가 ACK로 간주됨을 나타내고 소문자 ack는 값을 나타낸다고 가정합니다. 확인 필드의
수신자의 호스트 B는 흐름 제어를 세 번 수행했습니다. 처음에는 창이 rwind=300으로 설정되고 두 번째에는 rwind=100으로 줄어들고 마지막에는 rwind=0으로 줄어듭니다. 즉, 보낸 사람은 더 이상 데이터를 보낼 수 없습니다. 발신자가 전송을 일시 중지하게 만드는 이 상태는 호스트 B가 새 창 값을 다시 보낼 때까지 계속됩니다.
B가 A에게 제로 윈도우 메시지 세그먼트를 보낸 직후 B의 수신 버퍼에 약간의 저장 공간이 있다고 가정해 보겠습니다. 따라서 B는 rwind=400인 메시지 세그먼트를 A에게 보냈지만 이 메시지 세그먼트는 전송 중에 손실되었습니다. A는 B가 보낸 0이 아닌 창 알림을 받기를 기다리고 있었고 B는 A가 보낸 데이터를 기다리고 있었습니다. 이로 인해 교착 상태가 발생합니다. 이러한 교착상태 상황을 해결하기 위해 TCP는 각 연결마다 연속 타이머를 가지고 있습니다. TCP 연결의 한 쪽이 상대방으로부터 제로 윈도우 알림을 수신하는 한 연속 타이머를 시작합니다. 연속 타이머에 의해 설정된 시간이 만료되면 제로 윈도우 감지 메시지 세그먼트(1바이트의 데이터만 전달)를 보냅니다. ) 및 상대방 이 감지 세그먼트를 확인할 때 현재 창 값이 제공됩니다.
혼잡 제어 메커니즘:
느린 시작 및 혼잡 회피
메시지 세그먼트 전송 속도는 수신 측의 수신 능력에 따라 결정될 뿐만 아니라 네트워크에 혼잡을 일으키지 않는 전반적인 상황을 고려해야 합니다. 이는 수신 상태 수량이라는 두 가지에 의해 결정됩니다. 창문과 혼잡창. Advertised Window라고도 알려진 수신자 창(Reciver Window)은 현재 수신 버퍼 크기를 기반으로 수신기가 약속한 최신 창 값이며 수신기의 흐름 제어입니다. 혼잡 창 cwnd (Congestion Window)는 추정된 네트워크 혼잡 수준을 기반으로 송신 측에서 설정한 창 값입니다. 이는 송신 측의 흐름 제어입니다.
느린 시작 원칙:
1) 호스트가 데이터 전송을 시작할 때 더 큰 전송 창의 모든 데이터 바이트가 즉시 네트워크에 주입되면 네트워크 상태가 불분명하여 문제가 발생할 수 있습니다. 네트워크 혼잡
2) 더 좋은 방법은 테스트하는 것입니다. 즉, 작은 도착부터 발신자의 혼잡 제어 창 값을 점차적으로 늘리는 것입니다.
3) 일반적으로 메시지 세그먼트 전송을 시작할 때 먼저 혼잡 창 cwnd를 최대로 합니다. 메시지 세그먼트의 MSS 값입니다. 새로운 메시지 세그먼트의 각 확인이 수신된 후 혼잡 창은 최대 1개의 MSS 값만큼 증가합니다. rwind가 충분히 큰 경우 혼잡 창 cwind의 증가로 인해 네트워크 혼잡이 발생하는 것을 방지하려면 다른 변수가 필요합니다. ssthresh
정체 제어의 구체적인 프로세스는 다음과 같습니다.
1) TCP 연결 초기화, 정체 창을 1로 설정
2) 느린 시작 알고리즘을 실행하면 cwind는 cwind =까지 기하급수적으로 증가합니다. = ssthress는 혼잡 회피 알고리즘 수행을 시작하고, cwnd는 선형 법칙에 따라 증가합니다
3) 네트워크 혼잡이 발생하면 ssthresh 값을 혼잡 전 ssthresh 값의 절반으로 업데이트하고 cwnd를 1로 재설정한 후 (2)단계를 따릅니다.
빠른 재전송 및 빠른 복구
재전송 타이머가 만료될 때까지 기다리기 때문에 TCP 연결이 오랫동안 유휴 상태가 되는 경우가 있습니다. 느린 시작과 혼잡 회피로는 이러한 문제를 잘 해결할 수 없으므로 빠른 재전송이 제안됩니다. - 복구 혼잡 제어 방법.
빠른 재전송 알고리즘은 재전송 메커니즘을 취소하지 않지만 경우에 따라 손실된 메시지 세그먼트를 더 일찍 재전송합니다(발신자가 3번의 반복 확인 ACK를 받으면 패킷이 손실된 것으로 결론짓고 기다림 없이 손실된 세그먼트를 즉시 재전송) 재전송 타이머가 만료됨). 느린 시작 알고리즘은 TCP가 설정된 경우에만 사용됩니다.
빠른 복구 알고리즘에는 다음 두 가지 핵심 사항이 있습니다.
1) 발신자가 세 번 연속 중복 확인을 받으면 "곱셈 축소" 알고리즘을 실행하고 느린 시작 임계값을 절반으로 줄입니다. 이는 네트워크 정체를 방지하기 위한 것입니다.
2) 이제 발신자는 네트워크가 혼잡하지 않을 것이라고 판단하므로 지금은 느린 시작 알고리즘을 실행하지 않고 대신 느린 시작 임계값이 절반이 된 후의 값으로 cwnd 값을 설정한 후 실행을 시작합니다. 혼잡 회피 알고리즘을 사용하여 혼잡 창을 선형적으로 증가시킵니다.
요약:
처음 두 알고리즘은 혼잡이 발생하기 전에 사용되며, 후자의 두 알고리즘은 혼잡이 발생한 후에 사용됩니다(즉, 3번의 반복 확인).
더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 방문하세요! !
위 내용은 흐름 제어와 혼잡 제어의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!