【问题标题】:c TCP rawsocket optionsc TCP rawsocket 选项
【发布时间】:2015-01-29 02:33:26
【问题描述】:

如何包含 TCP 选项 MSS(最大段大小), WS(窗口比例), 麻袋允许。 c原始套接字中的选项

我们可以在 TCP 中包含其他选项,例如 source、destination、syn、ack tcp->src, tcp->dst, tcp->syn, tcp->ack。 ………… 但是当我包含 tcp reserverd 特殊选项 mss,ws tcp->mss,tcp->ws.
它显示 MSS、WS 不在 tcp 标头中的错误 谁能告诉我如何在 tcp raw socket 中包含这些选项

谢谢你

【问题讨论】:

    标签: c sockets tcp


    【解决方案1】:

    Linux 中的 TCP WS

    假设是 Linux,我相信你不能直接在 C 中更改 TCP 窗口大小。这是因为这是由内核直接处理的。

    修改 TCP WS 的一种方法是混合使用以下 sysctl 变量(在man tcp 中阅读有关它们的更多信息):

    • tcp_wmem
    • tcp_rmem
    • tcp_window_scaling

    根据 RFC 1323 (https://www.ietf.org/rfc/rfc1323.txt),TCP 窗口缩放允许最大 65K 的 WS。 Linux 内核中默认的最大 TCP WS 为 32K。根据man tcp,您将增加套接字缓冲区的大小,此时将使用 TCP 窗口缩放。

    Linux 中的 TCP MSS

    再一次,我相信这只能在内核级别实现。您可以使用iptables 内核模块覆盖 MSS 的默认计算(根据跳跃距离动态计算)。具体来说,使用--set-mss 选项。

    见:http://lartc.org/howto/lartc.cookbook.mtu-mss.html

    如果我错了,请纠正我。

    【讨论】:

    • @user 即使可以,你也不能随便摆弄 MSS 或窗口比例,除非你神奇地碰巧知道内核内部发生了什么。
    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2017-10-27
    相关资源
    最近更新 更多