我想知道如何在SYN数据包中设置MSS?它是一个操作系统中的固定值还是可以在同一操作系统中更改该值?我知道不同操作系统的价值不同。 SYN中的MSS值是否与硬件配置有关? 感谢。
答案 0 :(得分:0)
RFC 879描述了如何使用和指定MSS。
简而言之,在通过SYN数据包进行TCP握手期间指定了MSS。但是,稍后可以通过操作系统本身或通过设置协议选项来更改此值。
您可以通过setsockopt设置选项TCP_MAXSEG。
答案 1 :(得分:0)
我们可以通过设置套接字选项TCP_MAXSEG在tcp会话期间设置MSS值吗? 我的要求是在正在进行的tcp数据会话期间编辑MSS值。
答案 2 :(得分:0)
尽管SYN和SYNACK数据包中的MSS值分别由发起方和响应方设置,但被广泛使用的称为 MSS钳制的做法可能导致网络元素更改MSS在路径上-通常用于减少经过某种隧道链接的所有连接的MSS。例如,PPPoE通常用于住宅宽带,要求的MTU为1492,相应的IPv4 MSS为1452,因此,当SYN离开您的计算机时,其MSS为1460(假设您使用的MTU为1500的以太网),但是一旦通过MSS钳制ISP路由器后,SYN数据包中的MSS随后将更改为1452,同样对于传入/响应者的SYNACK数据包也是如此,因此连接的MSS减少为1452。这种做法似乎代替了Path MTU Discovery它依赖于使用网络中的ICMP 分片所需响应,因为在配置不佳的网络上,某些负载平衡技术可能会丢失这些响应。