TCP에서 수신자는 때때로 전송된 패키지의 수신을 확인합니다. 따라서 특정 다운스트림 대역폭을 달성하려면 항상 최소 업스트림 대역폭이 필요합니다.
내가 찾고 있는 것은 주어진 다운스트림 대역폭에 필요한 업스트림을 계산하는 요소입니다. 나는 이 계산을 더 어렵게 만드는 다양한 창 크기와 TCP의 다른 요인이 있다는 사실을 알고 있습니다. 그러나 적어도 근사치를 얻을 수 있는 기본 시나리오가 있을 수 있습니다.
답변1
이는 다른 많은 요인에 따라 달라지기 때문에 대답하기 어려운 질문입니다. 매우 구체적인 답변을 얻으려고 노력하는 것은 적어도 나에게는 설명하기 어려울 뿐만 아니라 훨씬 더 어려울 것입니다.
창을 최대로 확장할 수 있을 만큼 종단 간 링크가 안정적이라고 가정하면 최대 창 크기마다 하나의 ACK가 필요하다고 말할 수 있습니다. 일반적인 최대 창 크기는 64KB입니다. 적어도 Windows에서는 이것이 기본값이라고 생각합니다. 이는 레지스트리 키에 의해 설정됩니다.
이를 알고 나면 이제 왕복 시간이 무엇인지 알아야 합니다. 왜냐하면 매 RTT당 하나의 최대 창 크기 데이터만 수신하기 때문입니다. 데이터가 사용자에게 전달되는 한 가지 방법과 ACK를 받는 방법이 있습니다. 이제 우리는 위성을 통해 하나의 TCP 소켓에 필요한 업스트림을 계산하는 것처럼 플레이할 것입니다.
RTT = ~500ms
최대 창 크기 = 64KB
(64KB * 8)/.5 = 최대 다운로드는 1Mbps입니다. 물론 8번은 바이트 값을 비트로 변환하는 것이었습니다.
그런데 많은 경우 버퍼라고 하는 창 크기와 (RxBuffer/RTT = Througput)로 제공되는 TCP 처리량 계산을 볼 수 있습니다. 이제 업스트림을 계산해야 합니다. 위의 모든 내용을 통해 답이 분명해지기를 바랍니다. 보낸 사람에게 돌아가려면 초당 두 개의 ACK가 필요합니다. 이러한 ACK는 20Bs + 20Bs * 8(IP + TCP 헤더), 320bps입니다. 따라서 500ms의 RTT 및 64KB의 최대 RxBuffer 연결의 경우 1Mbps 다운로드 및 640bps 업로드를 넘지 않아야 합니다.
그게 당신을 올바른 길로 이끌었기를 바랍니다. 다시 읽어보니 나 자신도 헷갈렸다...