У меня есть приложение, которое должно иметь фиксированный (516 байтов) размер полезной нагрузки в пакете TCP. Само приложение не может быть изменено, чтобы настроить его параметры, поэтому мне нужно настроить размер буфера TCP ОС ....
Насколько я знаю, размер буфера TCP (SO_SNDBUF) может быть настроен так, чтобы «автонастройка» не пыталась включить больше данных в пакет.
Если я настрою SO_SNDBUF на 516, это будет только для полезной нагрузки или это повлияет на весь пакет (заголовок + полезная нагрузка)?
Если вы установите SO_SNDBUF на сокете на 516, ядро удвоит его и предположит, что размер буферов должен составлять 1032 байта. Эти накладные расходы предназначены для структур ядра.
Если вы создаете буфер сообщений с 516 байтами, заполняете его, а затем вызываете send (), sendto () или write (), то эти 516 байтов будут автоматически отправлены по сети в виде одного пакета.