Допустим, у меня есть карта Ethernet на 100 Мбит, идущая к моему маршрутизатору на 100 Мбит, затем к моему кабельному модему; на что мой провайдер продал мне 50 Мбит / с.

Теперь предположим, что я начал загружать невероятно большой файл на веб-сервер, и предположим, что веб-сервер может принимать неограниченные скорости (поэтому мы сосредоточены только на "моем конце").

Что мешает моей загрузке превысить 50 Мбит / с? Возможно, мой кабельный модем настроен на отправку только такого большого количества данных (по тому типу канала, который у него есть), но как мой (ПК, маршрутизатор, кабельный модем) узнает, что он "задушил" его обратно? Как моя операционная система знает, что НЕ следует отправлять данные из моего сетевого адаптера со скоростью 100 Мбит / с, потому что нисходящее соединение не может с этим справиться (мой ISP / кабельный модем).

Это то, что я думаю, я знаю:

Если он использует TCP, он будет использовать механизмы TCP для отправки соответственно. Если он использует UDP, он будет спамить со скоростью 100 Мбит / с, в конечном итоге заполнит буфер моего кабельного модема, и пакеты будут потеряны. Если это так, возможно, до того, как это произойдет, он выдаст другое сообщение управления потоком?

Может кто-нибудь объяснить, пожалуйста! Мне очень любопытно!

1 ответ1

1

TCP обеспечивает сквозное управление потоком верхнего уровня, чтобы попытаться выровнять наши скорости передачи через каждый узел, через который он проходит, чтобы не перегружать буфер какого-либо конкретного устройства, но сети уровня 2 также предоставляют сообщения прямого управления потоком , например, кадры ETHERNETII PAUSE.

Ваш модем скажет вашему хосту ненадолго отключиться, пока буфер выйдет из строя. Большая проблема возникает, когда устройство в середине сетевого пути должно буферизовать ваш видеопоток UDP. Он может только погасить источник на один переход вверх по потоку, который, по-видимому, запрашивает то же самое от своего партнера по восходящему каналу связи. Когда устройства в середине заполняются, они начинают сбрасывать кадры. UDP всегда был Best-Effort, и это прекрасный пример этого.

Итак, подведем итог: ваша сеть на самом деле не знает скорости своего соединения, кроме вычисляемых средних значений по времени, но аппаратное обеспечение реагирует на механизмы управления потоком и эвристически достигает скорости, с которой может справиться сеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .