阅读:1296回复:1
关于TCP头校验和的计算不正确的问题
项目需求:
在浏览器里访问A地址,但是实际上访问到了B地址。 我的思路: 用Passthru截获到发出去的数据包,如果是TCP包,据按照定好的规则修改其目的IP和目的端口后发送出去,当然,修改后一定要重新计算校验和。 碰到的问题: 针对ICMP包,也就是ping包,修改目的IP后再计算IP首部校验和,然后发送出去,经测试正常实现了想要的功能,比如ping的是A地址,实际上B电脑收到了。这没问题。 但是TCP包涉及到了TCP首部校验和,现在是按照教程上的方法计算TCP首部校验和,发出的包没有任何回应,估计是校验和错误所致。 另外,发现一个奇怪的现象,截获到的一部分包(当然是还未修改的),其TCP首部校验和竟然和伪首部的每16位相加之河相等,奇怪了? 哪位大哥做过这方面的东西,说白了就是个NAT,指导下,谢谢啦。 |
|
沙发#
发布于:2013-08-14 11:49
和NAT一点关系都没有。你这个需求要看在什么级别上解决。不同的实现方式效果是不同的。直接修改IP层的数据最直接,可是算法比较复杂。通DNS角度解决比较简单,但是无法阻止用户直接用IP通讯。
|
|