Что: 0569bd4a712d92a33ed743ab8ed90008a95beef5
Когда: 2023-11-16 16:03:11+03:00
Темы: 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, но он в это время уже считает Диффи-Хельмана.
Сгенерирован: SGBlog 0.34.0