我想知道如何在SYN数据包中设置MSS?它是一个操作系统中的固定值还是可以在同一操作系统中更改值?我知道该值在不同的操作系统中是不同的。同样,MSS值与硬件配置有关?谢谢。

有帮助吗?

解决方案

RFC 879 描述如何使用和指定MSS。

简而言之,通过SYN数据包在TCP握手期间指定了MSS。但是,以后可以通过OS本身或设置协议选项更改此值。

您可以通过setSockopt设置选项tcp_maxseg。

其他提示

虽然SYNACK数据包中MSS的值分别由启动器和响应者侧设置,但广泛使用的实践称为 MSS夹紧 可能导致MSS被路径上的网络元素更改 - 这通常用于减少通过某种隧道链接的所有连接的MSS。例如,PPPOE通常在住宅宽带上使用,需要1492的MTU,相应的IPv4 MSS为1452,因此Syn可能会以1460的MSS离开您的机器(假设您使用的是1500的MTU),但是一旦IT通过MSS夹紧ISP路由器SYN包中的MSS随后将更改为1452,同样对于接入/响应者的Synack数据包,因此连接以减少的MSS为1452。 路径MTU发现 依赖于使用ICMP 需要分裂 网络的响应是因为它们在配置较差的网络和某些负载平衡技术上可能会丢失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top