В моей локальной сети у меня есть маршрутизатор, на котором работает сервер Samba, и мой компьютер подключается к маршрутизатору.
Я использовал wirehark при загрузке файла с моего ПК на сервер самбы.
Ниже приведен ярлык результата wirehark,
Как видно, после ответа сервера в кадре 7560 мой компьютер отправляет несколько пакетов, которые все имеют полный размер (кадр с 1514 байтами).
Но в кадре 7560 заявленный размер окна составляет 94 байта.
И описанная выше ситуация происходит во всех результатах.
Итак, я не могу понять, как мой компьютер может отправлять почти 30000+ байтов, в то время как последние пакеты с сервера объявляют только окно размером 94 байта.
Я бы подумал, что это Масштабирование окна TCP на работе - вероятно, это было согласовано при настройке подключения и не принимается во внимание Wireshark. Таким образом, заявленный размер окна составляет не 94 байта, а (2 ^ Икс) * 94 где Икс коэффициент масштабирования.
Размер окна зависит от размера сетевого буфера, настройка по умолчанию в Linux 2.6 должна подойти, в случае, если сетевой буфер слишком мал, используйте следующее рекомендованное значение для Gigabit Ethernet.
sysctl -w net.ipv4.tcp_rmem="40960 1048560 4194304"
sysctl -w net.ipv4.tcp_wmem="40960 196608 4194304"
sysctl -w net.core.rmem_max=4194304
sysctl -w net.core.wmem_max=4194304
подробнее http://honglus.blogspot.com/2010/01/double-network-throughput-by-tuning.htm
Вы можете использовать iperf для определения размера окна, если он отлично сообщает для локальной сетевой карты сервера, это может быть проблема с маршрутизатором или приложением.