阅读:3950回复:11
修改passthru后总是出现dup ack和retransmission怎么办
passthru来修改发送的数据包(修改了tcp数据包的内容和长度)后,就总收到dup ack并不断的发送retransmission。是不是要处理接受到该包的ack包呢?怎么处理呢?
在书上说ack有包头校验和等信息不知道如何获取如何处理?谢谢!! |
|
沙发#
发布于:2008-04-29 17:15
应该是超时问题.不能随便修改tcp数据包的内容和长度.除非处理非常严谨.
QQ:773709292 |
|
板凳#
发布于:2008-04-29 19:01
我感觉不是超时问题,因为如何我只改内容不增加长度的话就没有问题。而且发现紧接着发送包的seq要比收到的ack小!!
|
|
地板#
发布于:2008-04-30 15:27
tcp是流协议,所以改变长度就不同:结果超时
|
|
地下室#
发布于:2008-04-30 16:21
怎么讲呢?为什么该边了长度就超时呢?能详细讲一下吗?
我还发现一个关于tcp序号的问题 seq:dd 73 af ee <-----------------------------------修改过的tcp包 ack:d0 24 84 eb seq:d0 24 84 eb ack:dd 73 b0 b6 seq:dd 73 b0 b5<---------------------------------为什么是b5而不是b6呢 ack:d0 24 84 eb seq:d0 24 85 1a ack:dd 73 b0 b6 |
|
5楼#
发布于:2008-05-02 15:26
今天看了一下书发现原来tcp是按照8位组来编seq的,上面发了多少字节下一个seq就在原来的基础上加多少。比如说发的第一个包的seq为1数据长度为2则下一个包的seq就应该是1+2 = 3了。这样的话修改了一个tcp包,那为了能正常发送接收,其后的所有的发送包都要修改其seq,而所有的接收包都要修改其ack了呀。
这样一来就太麻烦了而且很容易出错的。该如何修改tcp的数据长度呢?求高手来支个招吧!!! |
|
6楼#
发布于:2008-05-04 11:19
|
|
7楼#
发布于:2008-05-04 17:16
qq加你了可总碰不到一起!!郁闷!!!
|
|
8楼#
发布于:2008-05-08 09:03
要是修改了数据或者是数据帧,那么你的checksum都是要重新计算的,要不然发出去的数据包会被丢弃,造成重传等问题。
|
|
9楼#
发布于:2008-05-11 07:46
已经做好了,checksum和seq ackseq 都需要修改的。
现在唯一不足的就是接收包的时候修改seq ack做的太简单了(刚做ndis,很多东西都感觉没头没脑的): 1、只对ptreceive中接收整个包做了处理,没有对接收不完整的包做处理 2、没有对ptreceivepacket做处理。在ptreceivepacket不知道如何处理好,自己试了几次发现运行一会就蓝屏,而且出错是在mpreturnpacket函数中的释放函数,由于时间的原因就把该函数的注册取消掉了。 不知道这样做恰当吗?希望谁能够给俺提供一个更好的完整的例子让俺参考一下! |
|
10楼#
发布于:2008-05-11 20:05
是啊,我也是在修改数据包的时候老是出现蓝屏问题,内存释放有问题,哪位高手方便提供一个修改数据包的程序给我研究研究啊。childman@163.com。谢谢
|
|
11楼#
发布于:2013-07-19 08:51
我目前也遇到和楼主一样的问题,楼主这个问题怎么解决的,能否讲一下思路,谢谢了!
|
|