dav*_*vid 6 c sockets checksum tcp
当raw sockets用于发送TCP数据时,允许保留source ip address零,以便内核输入正确的值.这很有用,尤其IP是在使用多个接口(具有不同地址)时.
raw sockets
TCP
source ip address
IP
我现在的问题是:要计算TCP校验和,我需要知道源IP地址到底是什么.这对我来说似乎不可能?
无论如何确定IP我的传出数据包的来源?
(另一种方法是,将我的原始套接字专门绑定到一个地址,但我宁愿不想这样做).
/编辑:使用Linux
cni*_*tar 1
如果你没有绑定你的套接字,内核必须根据目标地址找到源地址。
基本上完成了路由查找并确定了目标接口。之后,从该接口获取 IP:数据包的源。
所以你的问题变成了执行路由查找,方式ip route get就是这样。
ip route get
@nos 提到使用不同的套接字(UDP)并将其连接到该目标地址。使用获取其本地绑定名称getsockname应该会为您提供将用于该目的地的源地址。
getsockname
归档时间:
14 年,8 月 前
查看次数:
1815 次
最近记录: