新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > tcp數(shù)據(jù)傳輸?shù)恼{(diào)試

tcp數(shù)據(jù)傳輸?shù)恼{(diào)試

作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
這兩天還是再調(diào)tcp,網(wǎng)上的資料也不全,大多是關(guān)于tcp握手連接的東西,而且都說的是,所以只好摸索著來,首先,關(guān)于握手,各大資料都說是3次,握手,握手應(yīng)答,應(yīng)答,然后建立連接。對于握手連接的處理,有兩點,假設(shè)主動連接端為a端,被動連接端為b端,第一點是判斷這一幀的第48位,a端b主機發(fā)送0x02,b主機向a主機發(fā)送0x12,然后a主機在向b主機發(fā)送0x10,對于b端,首先要判斷來端是否為0x02如果是,則向a端的此位發(fā)送0x12,同時第二點就是序列號,將a的序列號加1以后,放在b端回應(yīng)的應(yīng)答號中去?;貞?yīng)的序列號中放入一個生成的序列號。序號的位置在38-41位,應(yīng)答號的位置在42-45位。發(fā)送握手應(yīng)答后,b只要在判斷其返回幀的第48位是否為0x10和應(yīng)答號是否加一即可。若不對,丟包或者發(fā)送重傳即可。

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

本文引用地址:http://butianyuan.cn/article/201611/324073.htm

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ù)據(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 (對于數(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



評論


技術(shù)專區(qū)

關(guān)閉