tcp/ip協議中各層的資料報結構是乙個比較抽象的內容,大家在日常學習過程中往往難以理解和掌握,常常是死記硬背把它記住了事。本文首先利用sniffer工具捕獲了ftp命令操作過程中的所有資料報,然後對sniffer工具中捕獲的每一部分資料報的含義進行了詳細的闡述,最後總結歸納出tcp/ip協議中網路介面層、網路層、傳輸層的資料報文結構,從而使大家加深對tcp/ip協議各層資料報結構的理解和掌握。
[隱藏]
[編輯]
1、搭建網路環境。建立一台ftp伺服器,設定ip位址為:76.88.16.16。建立一台ftp客戶端,ip位址設為76.88.16.104,在其上安裝sniffer軟體。將這兩台裝置通過集線器連線起來。
2、定義過濾器。在ftp客戶端上執行sniffer軟體,進入系統,點「monitor」-「matrixa」,選中本機,點滑鼠右健,選擇「define filter…」,在「define filter…」視窗,點「advanced」,選擇ip->tcp->ftp,點「確定」,即已定義好過濾器,如圖1所示。
圖1 下面對sniffer捕獲的底層資料報進行詳細的介紹。
[ 編輯]
圖2 如圖2所示,在sniffer捕獲的dlc資料幀中依次包括以下資訊:
目的mac位址destination=gigtecaad4a3,源mac位址source=000c295264c2,乙太網型別ethertype=0800(ip),8表示為乙太網。
通過上述分析,可以得出dlc幀結構為:
[ 編輯]
圖3 如圖3所示,ip資料報中依次包括以下資訊:
1、version=4,表示ip協議的版本號為4。該部分佔4個bit位。
2、header length=20 bytes,表示ip包頭的總長度為20個位元組。該部分佔4個bit位,單位為4個位元組,因此,乙個ip包頭的長度最長為「1111」,即15*4=60個位元組。
3、type of service=00,表示服務型別為0。該部分用二個十六進製制值來表示,共佔8個bit。
8個bit的含義是:
000 前三位不用
0 表示最小時延,如telnet服務使用該位
0 表示吞吐量,如ftp服務使用該位
0 表示可靠性,如snmp服務使用該位
0 表示最小代價
0 不用
4、total length=48bytes,表示該ip包的總長度為48個位元組。該部分佔16個bit,單位為byte。由此可見,乙個ip資料報的最大長度為2的16次方減1,即:65535個位元組。因此,在乙太網中能夠傳輸的最大ip資料報為65535個位元組。
5、identification=363,表示ip包識別號為363。該部分佔16個bit,以十進位制數表示。
6、flags,表示片標誌,佔3個bit。各位含義分別為:第乙個「0」不用,第二個「0」為分片標誌位,「1」表示分片,「0」表示不分版本。第三個0為是否最後一片標誌位,0表示最後一片,1表示還有更多的片。
7、fragment offset=0,表示片偏移為0個bytes。該部分佔13個bit。
8、time to live=128secongs/hops,表示生存時間ttl值為128。該部分佔8個bit。
9、proctol=6(tcp),表示協議型別為tcp,協議**是6。如果是udp協議,則此處的協議**應為17。如果是icmp協議,則此處的協議**應為1。該部分佔8個bit。
10、header checksun=4035(correct),表示ip包頭校驗和為4035,括號內的correct表示此ip資料報是正確的,沒有被非法修改過。該部分佔16個bit,用十六進製制表示。
13、no options,表示ip資料報中未使用選項部分。當需要記錄路由時才使用該選項。
通過上述分析,可以得出ip資料報結構為:
[ 編輯]
圖4 如圖4所示,tcp資料報中依次包括以下資訊:
1、source port=1038,表示發起連線的源埠為1038。該部分佔16個bit。通過此值,可以看出發起連線的計算機源埠號。
2、destination port=21(ftp-ctrl),表示要連線的目的埠為21。該部分佔16個bit。通過此值,可以看出要登入的目的埠號。21埠表示是ftp服務埠。
3、initial sequence number=1791872318,表示初始連線的請求號,即seq值。該部分佔32個bit,值從1到2的32次方減1。
4、next expected seq number=1791872319,表示對方的應答號應為1791872319,即對方返回的ack值。該部分佔32個bit,值從1到2的32次方減1。
5、data offset=28 bytes,表示資料偏移的大小。該部分佔4個bit。
6、reserved bites:保留位,此處不用。該部分佔6個bit。
7、flags=02。該值用兩個十六進製制數來表示。該部分長度為6個bit,6個標誌位的含義分別是:
0 urg,緊急資料標誌,為1表示有緊急資料,應立即進行傳遞。
0 ack,確認標誌位,為1表示此資料報為應答資料報
0 psh,push標誌位,為1表示此資料報應立即進行傳遞。
0 rst:復位標誌位。如果收到不屬於本機的資料報,則返回乙個rst
0 syn:連線請求標誌位。為1表示為發起連線的請求資料報。
0 fin:結束連線請求標誌位。為1表示是結束連線的請求資料報。
8、window=64240,表示視窗是64240。該部分佔16個bit。
9、checksum=92d7(correct),表示校驗和是92d7。該部分佔16個bit,用十六進製制表示。
10、urgent pointer=0,表示緊急指標為0。該部分佔16個bit。
11、maximum segment size=1460,表示最大段大小為1460個位元組。
通過上述分析,可以得出tcp資料報結構為:
[ 編輯]
通過上述分析,可以發現:在乙太網中,最大傳輸單元mtu為1500個位元組,在乙個ip包中,去除ip包頭的20個位元組,可以傳輸的最大資料長度為1480個位元組。在tcp包中,去除20個tcp包頭,可以傳輸的最大資料段為1460個位元組。因此,當資料超過最大資料長度時,將對該資料進行分片處理,在ip包頭中會看到有多個片在傳輸,但標識號是相同的,表示是同乙個資料報.
TCP IP資料報結構詳解
tcp ip 資料報 結構 詳解 網路 協議 一般來說,網路程式設計我們只需要呼叫一些封裝好的函式或者元件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,但是它是網際網路的基礎,在各方面都有廣泛的應用。由ip協...
TCP IP資料報結構詳解
tcp ip 資料報 結構 詳解 網路 協議 一般來說,網路程式設計我們只需要呼叫一些封裝好的函式或者元件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,但是它是網際網路的基礎,在各方面都有廣泛的應用。由ip協...
TCP IP資料報結構詳解
這篇文章很好,tcp ip 資料報 結構 詳解 網路 協議 一般來說,網路程式設計我們只需要呼叫一些封裝好的函式或者元件就能完成大部分的工作,但是一些特殊的情況下,就需要深入的理解 網路資料報的結構,以及協議分析。如 網路監控,故障排查等 ip包是不安全的,但是它是網際網路的基礎,在各方面都有廣泛的...