[О блоге]
[наверх]
[пред]
[2023-11-16 16:03:11+03:00]
[0569bd4a712d92a33ed743ab8ed90008a95beef5]
Темы: [c]
Попробовал TCP Fast Open
о котором узнал в 88ce198f30f60b4201e7ccc142d9942fa8104412.
Глядя на исходный код cURL и GnuTLS, в которых есть его поддержка,
оказалось, что они только для GNU/Linux или macOS. Видимо, когда был
hype на эту тему, то в macOS оно раньше появилось.
Вообще просто так его включить то не сложно: setsockopt(sock,
IPPROTO_TCP, TCP_FASTOPEN, ...). Но посылки данных с первыми SYN-ами
конечно не будет. Для этого надо делать не connect(), а
sendto(sock, ...). Что не всегда тривиально легко сделать. У меня код
подключения (connect()) и создания сокета были совмещены в одной
функции. После которой и всякий Capsicum включался, который sendto и
setsockopt не даст выполнить просто так. В общем, немного порефакторить
пришлось код.
Данные от сервера же могут не пойти с первым SYN+ACK если успеет
сработать таймер на delayed ACK. Но в трафике теперь видно что handshake
сообщение от клиента идёт с первым пакетом, тогда как от не быстрого
сервера приходит SYN+ACK, SYN, но он в это время уже считает
Диффи-Хельмана.
[оставить комментарий]