如何打开原始套接字以从特定TCP端口发送?我希望我的所有连接总是来自短命之下的一系列端口。
答案 0 :(得分:6)
如果您使用原始套接字,则只需在数据包标头中填写正确的TCP源端口。
如果您正在使用TCP套接字接口(socket()
,connect()
和朋友),那么您可以通过调用客户端的bind()
系统调用来设置源端口socket - 与设置服务器套接字的侦听端口完全一样。
答案 1 :(得分:1)
使用原始套接字建立tcp连接介于困难和不可能之间;您需要在程序中实现整个tcp协议 AND 还要阻止内核发送自己对数据包的回复(如果内核在该接口上的地址上绑定了IP)。
这可能不是你想要的。但是,如果你确实需要它,那么发送带有你想要的任何源端口的tcp帧是微不足道的,因为你要在tcp头中指定它,当然,如果你实现自己的TCP层,你将会需要了解。