在 Linux C 程序中的非特权套接字(非原始套接字)上设置 TCP 选项

Set TCP Options on an unprivileged socket (not raw) in a Linux C program

我可以在 Linux C 程序中为非特权套接字(非原始)上的传出 TCP 数据包设置哪些 TCP 选项?我参考了 TCP Header.

中的 TCP 选项

我已经检查过 http://linux.die.net/man/7/tcp 所以现在我可以 add/edit:

MSS、时间戳、Window 缩放、Sack、快速打开(见下面的答案)

有没有办法添加其他选项?我对多路径特别感兴趣,但任何选项都会有所帮助。

谢谢!

TCP 快速打开可以与 MSG_FASTOPEN 标志一起使用,例如:

sendto(fd, data, len, MSG_FASTOPEN, ...

请注意,它必须得到服务器端的支持 - 在 Linux 这可以通过以下方式完成:

echo 2 > /proc/sys/net/ipv4/tcp_fastopen

有一个方便的参考here