TCP 아래의 IP 계층은 최선의 전달이고 신뢰할 수 없기 때문에 TCP는 스스로 안정적인 전송을 완료해야 합니다. 다음으로, 안정적인 전송을 구현하는 방법을 설명하기 위해 간단한 중지 및 대기 프로토콜부터 시작합니다. 신뢰할 수 있는 전송의 몇 가지 특성, 즉 손실 없음, 중복 없음, 순서대로 도착에 주의할 필요가 있습니다.
TCP는 안정적인 전송을 위해 중지 및 대기 프로토콜을 사용하지 않습니다.
Stop Waiting Protocol
전송 계층의 데이터 전송 단위를 세그먼트라고 합니다. 이하에서는 편의상 모두 그룹이라고 부릅니다.
정지 및 대기 프로토콜의 원리는 매우 간단합니다. 패킷을 보낸 후 전송을 중지하고 이전 패킷의 확인을 기다린 후 다음 패킷을 계속 보냅니다.
다음은 여러 가지 상황을 통해 분석됩니다.
오류가 없는 상황
오류가 없는 상황은 아래와 같이 매우 간단합니다. 각 패킷이 전송된 후 전송을 중지하고 후속 패킷 전송을 계속하기 전에 패킷 확인을 기다립니다.
오류가 발생합니다
오류가 발생하는 경우는 두 가지 경우입니다. 첫 번째는 전송된 패킷이 대상 주소로 성공적으로 전달되지 않은 경우이고, 다른 하나는 전송된 데이터 패킷에 오류가 있는 경우입니다. 오류. 그림을 통해 두 가지 상황을 분석해 보겠습니다
먼저 B의 동작을 살펴보겠습니다. A는 M1 패킷을 보냅니다. 패킷이 잘못된 경우 B는 패킷을 받은 후 해당 패킷을 폐기합니다. 아무 일도 일어나지 않습니다. 하지 마십시오. (A는 잘못된 패킷이 수신되었다는 알림을 받지 않습니다.) B가 M1 패킷을 수신하지 못하면 아무 것도 모르고 어떤 조치도 취하지 않습니다.
A가 다음에 무엇을 하는지 살펴보겠습니다. A는 패킷을 보낸 후 B의 M1 패킷 확인을 받지 못합니다. 대기 시간이 초과되면 M1 패킷을 다시 보내야 합니다. 타임아웃 재전송을 구현하려면 타임아웃 타이머를 설정해야 합니다. 타임아웃 기간 이전에 전송된 패킷이 확인되면 타임아웃 타이머가 재설정되고, 그렇지 않으면 패킷을 재전송해야 합니다.
몇 가지 주의할 점이 있습니다:
A 패킷을 보낸 후 시간 초과 재전송을 위해 패킷 복사본을 저장해야 합니다. 이 패킷에 대한 승인을 받으면 패킷 복사본을 삭제할 수 있습니다.
각 그룹의 도착 상태를 알 수 있도록 각 그룹에 번호를 붙여야 합니다.
불필요한 재전송을 방지하려면 제한 시간을 평균 전송 시간보다 약간 길게 설정해야 합니다.
확인 상실 및 확인 지연
패킷 전송 중 오류 외에도 확인이 반환되는 경우에도 오류가 발생합니다. 확인 상실 및 확인 지연.
먼저 확인손실 상황을 살펴보면 A그룹 B가 이를 받아 A에게 확인메일을 보냈으나 확인메일이 분실되어 A가 받지 못했습니다. A는 M1의 확인을 받지 못했기 때문에 타임아웃 이상 기다린 후 M1을 B로 다시 전송합니다. 이때 B는 중복 패킷 M1을 수신하고 두 가지 작업을 수행해야 합니다.
중복 패킷 M1을 버리고
M1 확인을 A에게 보냅니다. A가 M1을 재전송했으므로 A가 M1의 패킷을 수신하지 못했다는 의미이기 때문입니다. 따라서 B는 계속해서 M1에게 확인 메시지를 보내야 합니다.
M1의 그룹 확인이 늦었습니다(타임아웃 기간 이후에 수신됨). A는 중복 확인을 받은 후 이를 폐기하고 다른 조치를 취하지 않습니다.
위의 타임아웃 재전송 메커니즘을 통해 신뢰할 수 없는 네트워크 전송에서도 안정적인 전송이 가능합니다.
채널 활용도
위의 중지 및 대기 프로토콜은 간단하지만 매우 큰 단점이 있습니다. 채널 활용도가 너무 낮습니다. 확인 수신을 기다리는 동안 채널이 완전히 유휴 상태가 되어 매우 낭비됩니다.
채널 활용도를 높이기 위해 파이프라인 전송을 사용할 수 있으며, 이는 여러 패킷을 지속적으로 보낼 수 있어 채널 활용도를 크게 향상시킬 수 있습니다.
파이프라인 전송을 사용하는 프로토콜에는 연속 ARQ 프로토콜 및 Window 슬라이딩 프로토콜이 있습니다. TCP는 슬라이딩 윈도우 프로토콜을 사용하여 안정적인 전송을 완료합니다.
위 내용은 한 기사로 TCP의 안정적인 전송 원리를 이해하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!