tcp數(shù)據(jù)傳輸?shù)恼{(diào)試
當(dāng)建立連接以后,就可以傳輸數(shù)據(jù)了,傳輸數(shù)據(jù)時(shí),a向b傳輸應(yīng)用數(shù)據(jù)的同時(shí),在第48位發(fā)送的應(yīng)該為0x12。然后加上序列號(hào),在b端處理時(shí)需要注意兩個(gè)問題,1,每次發(fā)送數(shù)據(jù)都應(yīng)該接收一個(gè)應(yīng)答,2,收方的應(yīng)答號(hào),是發(fā)方的序列號(hào)加上數(shù)據(jù)個(gè)數(shù)。
我在調(diào)試的時(shí)候,就出現(xiàn)了問題,開始的時(shí)候,沒有做應(yīng)答,結(jié)果上位機(jī)會(huì)連續(xù)發(fā)送多次數(shù)據(jù)。后來我添加了應(yīng)答處理,序列號(hào)我是按照握手協(xié)議那么寫的,序列號(hào)只加1,結(jié)果發(fā)現(xiàn)上位機(jī)會(huì)一個(gè)一個(gè)的重傳。后來通過抓包軟件才發(fā)現(xiàn),原來是b返回的應(yīng)答號(hào),應(yīng)該是a的序列號(hào),加上a所傳輸?shù)臄?shù)據(jù)。
解決了應(yīng)答,剩下的就是數(shù)據(jù)提取了,提取應(yīng)用數(shù)據(jù)首先要計(jì)算兩個(gè)相關(guān)數(shù)據(jù),1,偏移,2,數(shù)據(jù)個(gè)數(shù)。偏移就是真實(shí)的應(yīng)用數(shù)據(jù)在一幀的具體位置。只要知道了數(shù)據(jù)位置和個(gè)數(shù),就可以獲取數(shù)據(jù)了。
應(yīng)用數(shù)據(jù)偏移計(jì)算為 tcp源端口號(hào)的位置 + tcp頭長度
應(yīng)用數(shù)據(jù)的長度計(jì)算為 ip總長度 - ip頭長度 -tcp頭長度
最后就是四次揮手,對(duì)此網(wǎng)上解釋也是亂七八糟的,也許是我的智力低下造成的不理解,但還是通過抓包軟件才看明白的。
首先是a端向b端發(fā)送0x11,然后b端發(fā)送應(yīng)答返回0x10,發(fā)送應(yīng)答后,繼續(xù)發(fā)送0x11。然后等待a端發(fā)送0x10這樣,即完成了揮手操作。
以下是抓包數(shù)據(jù),可以給大家做個(gè)參考。
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(真實(shí)數(shù)據(jù)為 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 (對(duì)于數(shù)據(jù)的應(yīng)答,可以注意一下第三行的 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
評(píng)論