TCP: Отключить чистые ACK?

TCP: Отключить чистые ACK?

У меня есть сценарий, в котором я хочу отключить чистые ACK (TCP ACK без данных), но я не могу найти, как это сделать. Есть ли опция, которую я могу установить так, чтобы ACK всегда прикреплялись к следующему пакету данных (в котором я могу быть уверен, что он придет)?

Я пробовал отключить quickACKs через ip routeкоманду для определенного диапазона сети и устройства, но это, похоже, не дало никакого эффекта. В качестве дополнительной информации, я использую ядро ​​4.4 на этой машине. Если вам нужна дополнительная информация, спрашивайте, и я предоставлю.

решение1

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

решение2

Как оказалось, приложение, которое отправляло мне эти чистые ACK, использовало сокет с установленной опцией TCP_NODELAY, поэтому на каждый пакет отвечали как можно скорее, не дожидаясь дополнительных данных.

Связанный контент