tcp数据传输的调试

来源:本站
导读:目前正在解读《tcp数据传输的调试》的相关信息,《tcp数据传输的调试》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《tcp数据传输的调试》的详细说明。
简介:这两天还是再调tcp,网上的资料也不全,大多是关于tcp握手连接的东西,而且都说的是,所以只好摸索着来,首先,关于握手,各大资料都说是3次,握手,握手应答,应答,然后建立连接。

对于握手连接的处理,有两点,假设主动连接端为a端,被动连接端为b端,第一点是判断这一帧的第48位,a端b主机发送0x02,b主机向a主机发送0x12,然后a主机在向b主机发送0x10,对于b端,首先要判断来端是否为0x02如果是,则向a端的此位发送0x12,同时第二点就是序列号,将a的序列号加1以后,放在b端回应的应答号中去。回应的序列号中放入一个生成的序列号。序号的位置在38-41位,应答号的位置在42-45位。发送握手应答后,b只要在判断其返回帧的第48位是否为0x10和应答号是否加一即可。若不对,丢包或者发送重传即可。

当建立连接以后,就可以传输数据了,传输数据时,a向b传输应用数据的同时,在第48位发送的应该为0x12。然后加上序列号,在b端处理时需要注意两个问题,1,每次发送数据都应该接收一个应答,2,收方的应答号,是发方的序列号加上数据个数。

我在调试的时候,就出现了问题,开始的时候,没有做应答,结果上位机会连续发送多次数据。后来我添加了应答处理,序列号我是按照握手协议那么写的,序列号只加1,结果发现上位机会一个一个的重传。后来通过抓包软件才发现,原来是b返回的应答号,应该是a的序列号,加上a所传输的数据。

解决了应答,剩下的就是数据提取了,提取应用数据首先要计算两个相关数据,1,偏移,2,数据个数。偏移就是真实的应用数据在一帧的具体位置。只要知道了数据位置和个数,就可以获取数据了。

应用数据偏移计算为 tcp源端口号的位置 + tcp头长度

应用数据的长度计算为 ip总长度 - ip头长度 - tcp头长度

最后就是四次挥手,对此网上解释也是乱七八糟的,也许是我的智力低下造成的不理解,但还是通过抓包软件才看明白的。

首先是a端向b端发送0x11,然后b端发送应答返回0x10,发送应答后,继续发送0x11。然后等待a端发送0x10这样,即完成了挥手操作。

以下是抓包数据,可以给大家做个参考。

syn

a->b

0000 f0 7d 68 70 04 3c f0 7d 68 60 3b 42 08 00 45 00 .}hp.<.} h`;B..E.

0010 00 34 49 42 40 00 40 06 6d 64 c0 a8 01 69 c0 a8 .4IB@.@. md...i..

0020 01 64 08 89 ea 60 55 ff c5 b6 00 00 00 00 80 02 .d...`U. ........

0030 ff ff dc 5a 00 00 02 04 05 b4 01 03 03 00 01 01 ...Z.... ........

0040 04 02

syn ack

b->a

0000 f0 7d 68 60 3b 42 f0 7d 68 70 04 3c 08 00 45 00 .}h`;B.} hp.<..E.

0010 00 34 81 f7 40 00 40 06 34 af c0 a8 01 64 c0 a8 .4..@.@. 4....d..

0020 01 69 ea 60 08 89 a5 19 17 70 55 ff c5 b7 80 12 .i.`.... .pU.....

0030 44 70 db 4f 00 00 02 04 05 b4 01 03 03 00 01 01 Dp.O.... ........

0040 04 02

ack

a->b

0000 f0 7d 68 70 04 3c f0 7d 68 60 3b 42 08 00 45 00 .}hp.<.} h`;B..E.

0010 00 28 49 43 40 00 40 06 6d 6f c0 a8 01 69 c0 a8 .(IC@.@. mo...i..

0020 01 64 08 89 ea 60 55 ff c5 b7 a5 19 17 71 50 10 .d...`U. .....qP.

0030 ff ff 60 8b 00 00 ..`...

push ack(真实数据为 acsii的aa 55,可以注意一下第三行的 55 ff c5 b7)

a->b

0000 f0 7d 68 70 04 3c f0 7d 68 60 3b 42 08 00 45 00 .}hp.<.} h`;B..E.

0010 00 2c 49 45 40 00 40 06 6d 69 c0 a8 01 69 c0 a8 .,IE@.@. mi...i..

0020 01 64 08 89 ea 60 55 ff c5 b7 a5 19 17 71 50 18 .d...`U. .....qP.

0030 ff ff c9 e8 00 00 61 61 35 35 ......aa 55

ack (对于数据的应答,可以注意一下第三行的 55 ff c5 bb)

b->a

0000 f0 7d 68 60 3b 42 f0 7d 68 70 04 3c 08 00 45 00 .}h`;B.} hp.<..E.

0010 00 28 81 fa 40 00 40 06 34 b8 c0 a8 01 64 c0 a8 .(..@.@. 4....d..

0020 01 69 ea 60 08 89 a5 19 17 71 55 ff c5 bb 50 10 .i.`.... .qU...P.

0030 44 6c 1c 1b 00 00 Dl....

fin ack

a->b

0000 f0 7d 68 70 04 3c f0 7d 68 60 3b 42 08 00 45 00 .}hp.<.} h`;B..E.

0010 00 28 49 3f 40 00 40 06 6d 73 c0 a8 01 69 c0 a8 .(I?@.@. ms...i..

0020 01 64 08 88 ea 60 1d b0 ba ac 0f a9 ae ee 50 11 .d...`.. ......P.

0030 ff ff a1 d8 00 00 ......

ack

b->a

0000 f0 7d 68 60 3b 42 f0 7d 68 70 04 3c 08 00 45 00 .}h`;B.} hp.<..E.

0010 00 28 81 f4 40 00 40 06 34 be c0 a8 01 64 c0 a8 .(..@.@. 4....d..

0020 01 69 ea 60 08 88 0f a9 ae ee 1d b0 ba ad 50 10 .i.`.... ......P.

0030 44 70 5d 68 00 00 Dp]h..

fin ack

b->a

0000 f0 7d 68 60 3b 42 f0 7d 68 70 04 3c 08 00 45 00 .}h`;B.} hp.<..E.

0010 00 28 81 f5 40 00 40 06 34 bd c0 a8 01 64 c0 a8 .(..@.@. 4....d..

0020 01 69 ea 60 08 88 0f a9 ae ee 1d b0 ba ad 50 11 .i.`.... ......P.

0030 44 70 5d 67 00 00 Dp]g..

ack

a->b

0000 f0 7d 68 70 04 3c f0 7d 68 60 3b 42 08 00 45 00 .}hp.<.} h`;B..E.

0010 00 28 49 40 40 00 40 06 6d 72 c0 a8 01 69 c0 a8 .(I@@.@. mr...i..

0020 01 64 08 88 ea 60 1d b0 ba ad 0f a9 ae ef 50 10 .d...`.. ......P.

0030 ff ff a1 d7 00 00 ......

提醒:《tcp数据传输的调试》最后刷新时间 2024-03-14 01:02:00,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《tcp数据传输的调试》该内容的真实性请自行鉴别。