предположим, что у меня есть сеть 4 Мбит, и я хочу рассчитать пропускную способность данных, это с учетом максимальной скорости передачи за вычетом накладных расходов на заголовки ethernet/IP/TCP. Читая в Интернете, я обнаружил, что MSS (максимальный размер сегмента) сегмента TCP составляет 576 - 20 - 20, причем последние два являются служебными заголовками TCP и IP, что приводит к 93% данных, что означает, что я буду использовать только 93% моих 4MBits ссылаются на передачу данных. Теперь, где ссылка наверху? Его тоже нельзя добавить? Если я не ошибаюсь, заголовок Ethernet составляет около 46 байт, поэтому окончательная сумма будет 576 - 20 - 20 - 46 = 490, что приведет к пропускной способности данных 85%, но я делаю что-то не так?
Расчет пропускной способности сети
Ответы (2)
Просто работайте снизу вверх. Обычные фреймы Ethernet (без jumbo-кадров и тегов vlan) в сумме составляют 1542 bytes
и могут иметь полезную нагрузку 1500 bytes
. Заголовок Ipv4 без параметров — 20 bytes
, а заголовок TCP без параметров — также 20 bytes
. Таким образом, вы получаете 1460 bytes
возможных полезных данных 1542 byte
кадра канального уровня. Таким образом, ваша эффективность равна 1460/1542=0.9468223086900129
, в результате чего максимальная пропускная способность составляет 3.7872892347600517Mbps
.
Обратите внимание, однако, что это обычно будет ниже. Это теоретическая максимальная скорость для непрерывного потока, которую вы можете получить по полнодуплексному каналу после установления сеанса TCP и когда вы являетесь единственным пользователем этого канала. Также имейте в виду, что как только вы начнете отправлять данные с немного более высокой скоростью в течение некоторого времени, ваша ссылка станет перегруженной, вы увидите падение, и ваша фактическая пропускная способность TCP может значительно упасть из-за медленного старта.
Если соединение беспроводное (802.11), расчет становится намного более сложным из-за механизмов RTS/CTS, но это около /2
только для одного активного пользователя, и это без учета потерь, что нереально.
В общем, протокол может влиять на пропускную способность сети и намного больше, чем просто накладные расходы пакетов. Вы упомянули, что хотите измерить пропускную способность в сети Ethernet/IP/TCP, но влияние накладных расходов на пакеты этих протоколов НЕ единственное, что следует учитывать. TCP является протоколом, ориентированным на установление соединения, и использует ACK для сигнализации о том, был получен пакет или нет. user1777914 пропустил отметку о ACK, но кое-что понял - они больше не занимают ПРОСТРАНСТВО, но могут ЗАДЕРЖАТЬ передачу пакетов. По мере увеличения задержки общая пропускная способность сети может снижаться в зависимости от того, как часто приложение или операционная система хостинга ожидают ответа.
У. Ричард Стивенс написал УДИВИТЕЛЬНУЮ книгу о TCP/IP. Вот исключение, объясняющее теоретическую производительность TCP, что на нее влияет и как она рассчитывается.
Алгоритм Nagle также помогает с задержкой, но если он отключен, это может снизить пропускную способность.