【发布时间】:2011-06-29 17:35:01
【问题描述】:
当使用raw sockets发送TCP数据时,允许将source ip address留零,以便内核输入正确的值。这很有帮助,尤其是在使用多个接口(具有不同的IP 地址)时。
我现在的问题是:要计算到TCP 校验和,我需要知道源 IP 地址到底是什么。这对我来说似乎是不可能的?
有没有办法确定我的传出数据包的来源IP?
(另一种方法是专门将我的原始套接字绑定到一个地址,但我不想这样做)。
/edit: 使用 Linux
【问题讨论】:
-
您使用的是什么操作系统?原始套接字设施可能因操作系统而异,因此这很重要。
-
为什么需要计算校验和?
-
为什么不使用 SOCK_STREAM 套接字,这样您就不必担心自己实现所有 TCP?我很好奇您从原始套接字中获得了什么好处,这使得所有这些额外的工作变得有价值。
-
这是一个研究项目,它强制执行
tcp以及使用raw sockets和正确的校验和。