如何使用 Python 的套接字库更改 TCP Header 和选项
How to change TCP Header and options using Python's socket library
我想获得一些关于如何修改 TCP header 以及更改 TCP header 上的选项的帮助。我对选项的 MSS 部分特别感兴趣。
我试过使用不同选项的 setsockopt() 但没有成功。
下面是一些尝试更改 MSS 的代码:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#! Settings mss
s.setsockopt(socket.IPPROTO_TCP, socket.IP_OPTIONS , b"MSS:400")
我希望 MSS 更改为 400。代码运行但它不会更改 MSS(使用 Wireshark 检查)。
使用 TCP_MAXSEG
选项。
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_MAXSEG, 400)
除了@Barmar 所说的之外,您还可以在任何 unix 系统的 "man pages" 中找到更多信息,方法是键入以下之一:
man 7 ip
man 7 tcp
man 7 udp
man
是manual的缩写,7
是overview/misc section
tcp page 关于 TCP_MAXSEG
的说法:
The maximum segment size for outgoing TCP packets. In Linux 2.2 and earlier, and in
Linux 2.6.28 and later, if this option is set before connection establishment, it
also changes the MSS value announced to the other end in the initial packet. Values
greater than the (eventual) interface MTU have no effect. TCP will also impose its
minimum and maximum bounds over the value provided.
我想获得一些关于如何修改 TCP header 以及更改 TCP header 上的选项的帮助。我对选项的 MSS 部分特别感兴趣。
我试过使用不同选项的 setsockopt() 但没有成功。
下面是一些尝试更改 MSS 的代码:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#! Settings mss
s.setsockopt(socket.IPPROTO_TCP, socket.IP_OPTIONS , b"MSS:400")
我希望 MSS 更改为 400。代码运行但它不会更改 MSS(使用 Wireshark 检查)。
使用 TCP_MAXSEG
选项。
s.setsockopt(socket.IPPROTO_TCP, socket.TCP_MAXSEG, 400)
除了@Barmar 所说的之外,您还可以在任何 unix 系统的 "man pages" 中找到更多信息,方法是键入以下之一:
man 7 ip
man 7 tcp
man 7 udp
man
是manual的缩写,7
是overview/misc section
tcp page 关于 TCP_MAXSEG
的说法:
The maximum segment size for outgoing TCP packets. In Linux 2.2 and earlier, and in Linux 2.6.28 and later, if this option is set before connection establishment, it also changes the MSS value announced to the other end in the initial packet. Values greater than the (eventual) interface MTU have no effect. TCP will also impose its minimum and maximum bounds over the value provided.