IP协议分析
網絡之間互連的協議(Internet Protocol,IP)就是為計算機網絡相互連接進行通信而設計的協議。在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守IP協議就可以與因特網互連互通。
IP報文由報頭和數據兩部分組成,如圖1所示:
?
圖1 IP報文格式
其中主要字段的意義和功能如下:
版本:指IP協議的版本;
頭長:是指IP數據報的報頭長度,它以4字節為單位。IP報頭長度至少為20字節,如果選項部分不是4字節的整數倍時,由填充補齊;
總長度:為整個IP數據報的長度;
服務類型:規定對數據報的處理方式;
標識:是IP協議賦予數據報的標志,用于目的主機確定數據分片屬于哪個報文;
標志:為三個比特,其中只有低兩位有效,這兩位分別表示該數據報文能否分段和是否該分段是否為源報文的最后一個分段;
生存周期:為數據報在網絡中的生存時間,報文每經過一個路由器時,其值減1,當生存周期變為0時,丟棄該報文;從而防止網絡中出現循環路由;
協議:指IP數據部分是由哪一種協議發送的;
校驗和:只對IP報頭的頭部進行校驗,保證頭部的完整性;
源IP地址和目的IP地址:分別指發送和接收數據報的主機的IP地址。
點擊開始抓包,為了抓取使用ICMP的包,我們要設置過濾條件,點擊“選項”。
這是可以看到抓包過濾按鈕后面的文本框出現了ICMP字樣,說明過濾條件設置成功:點擊開始,發現現在抓取不到任何包:
打開命令窗口,執行命令:ping www.baidu.com
?
這時可以看到數據包抓取頁面抓取到了8包,與命令行顯示的已發送和已接受的包的數量是一致的:
?
?
ICMP報文格式為:
?
2.IP數據包分析
?(1) Version 版本號,標識IP協議的版本,目前V4版本地址已經枯竭,V6慢慢成為主流
(2) Header length 頭部長度,默認為20字節,最大為60字節
(3) Differentiated Services Field 服務區分符,用于為不同的IP數據包定義不同的服務質量,一般應用在QoS技術中
(4) Total Length 總長度,標識IP頭部加上上層數據的數據包大小,IP包總長度最大為65535個字節
(5) Identification 標識符,用來實現IP分片的重組,標識分片屬于哪個進程,不同進程通過不同ID區分
(6) Flags 標志符,用來確認是否還有IP分片或是否能執行分片
(7) Fragment offset 分片偏移量,用于標識IP分片的位置,實現IP分片的重組
(8) Time to live 生存時間,標識IP數據包還能生存多久,根據操作系統不同,TTL默認值不同,每經過一個三層設備如路由器的處理,則TTL減去1,當TTL=0時,則此數據包被丟棄
(9) Protocol 協議號,標識IP協議上層應用。當上層協議為ICMP時,協議號為1,TCP協議號為6,UDP的協議號為17
(10) Header checksum 頭部校驗,用于檢驗IP數據包是否完整或被修改
(11) Source 源IP地址,標識發送者IP地址,占用32bit
(12) Destination 目的IP地址,標識接收者IP地址,占用32bit
Internet Protocol Version 4, Src: 192.168.1.104 (192.168.1.104), Dst: 119.75.217.109 (119.75.217.109)
#IPv4,源IP地址:192.168.1.104,目標IP地址:119.75.217.109#
Version: 4 #IP協議版本:4#
Header Length: 20 bytes #頭部長度:20字節#
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT) #服務類型:0x00#
Total Length: 60 #總長度:60字節#
Identification: 0x6ae0 (27360) #標識符:0x6ae0#
Flags: 0x00 #標志:0x00#
Reserved bit: Not set #是否保留[0為是,1為否]#
Don't fragment: Not set #是否分片[0為是,1為否]#
More fragments: Not set #是否最后一個[0為是,1為否]#
Fragment offset: 0 #分段偏移:0#
Time to live: 64 #存活時間:64跳#
Protocol: ICMP (1) #協議類型:ICMP#
Header checksum: 0xfd17 [validation disabled] #首部校驗和:0xfd17#
Source: 192.168.1.104 (192.168.1.104) #源IP地址#
Destination: 119.75.217.109 (119.75.217.109) #目標IP地址#
[Source GeoIP: Unknown] #源IP地理位置#
[Destination GeoIP: Beijing Baidu Netcom Science and Technology Co.] #目標IP地理位置#
[Destination GeoIP ISP: Beijing Baidu Netcom Science and Technology Co.] #目標IP運營商地理位置#
實驗截圖:
版本(4bit)。ip報文中,版本占了4位,用來表示該協議采用的是那一個版本的ip,相同版本的ip才能進行通信。
首部長度(4bit)。該字段表示整個ip包頭的長度,其中數的單位是4字節。即二進制數0000-1111(十進制數0-15),其中一個最小長度為0字節,最大長度為60字節。一般來說此處的值為0101,表示頭長度為20字節。
?
?區分服務(8bit)。該字段用來獲得更好的服務,在舊標準中叫做服務類型,但實際上一直未被使用過。1998 年這個字段改名為區分服務。只有在使用區分服(DiffServ)時,這個字段才起作用。在一般的情況下都不使用這個字段。
?總長度(16bit)。該字段指首部和數據之和的長度,單位為字節,因此數據報的最大長度為 65535 字節。總長度必須不超過最大傳送單元 MTU。
標識(16bit)。標識(identification)占 16 位,它是一個計數器,用來產生數據報的標識。
標志(3bit)。標志(flag)占 3 位,目前只有前兩位有意義。標志字段的最低位是 MF (More Fragment)。MF=1 表示后面“還有分片”。MF=0 表示最后一個分片。標志字段中間的一位是 DF (Don't Fragment) 。只有當 DF=0 時才允許分片。
?
片偏移(13 bit)。該字段指出較長的分組在分片后某片在原分組中的相對位置。片偏移以 8 個字節為偏移單位。
生存時間(8 bit)。記為 TTL (Time To Live)數據報在網絡中可通過的路由器數的最大值。
?
?
協議(8 bit)。該字段指出此數據報攜帶的數據使用何種協議以便目的主機的 IP 層將數據部分上交給哪個處理過程。
?
首部檢驗和(16 bit)。該字段只檢驗數據報的首部不檢驗數據部分。
?
?源地址/目的地址(32bit)。
?
?
可選字段,一般一些特殊的要求會加在這個部分。
數據。
?
3.抓取FTP數據包
FTP協議簡介
FTP是僅基于TCP的服務,不支持UDP,相比其他協議(如 HTTP協議),FTP協議要復雜一些。與一般的C/S應用不同點在于一般的C/S應用程序一般只會建立一個Socket連接,這個連接同時處理服務器端和客戶端的連接命令和數據傳輸。而FTP協議中將命令與數據分開傳送的方法提高了效率。FTP使用2個端口,一個數據端口和一個命令端口(也叫做控制端口)。控制Socket用來傳送命令,數據Socket是用于傳送數據。每一個 FTP命令發送之后,FTP服務器都會返回一個字符串,其中包括一個響應代碼和一些說明信息。其中的返回碼主要是用于判斷命令是否被成功執行了。
Frame: 物理層的數據幀概況
Ethernet II: 數據鏈路層以太網幀頭部信息
Internet Protocol Version 4: 互聯網層IP包頭部信息
Transmission Control Protocol: 傳輸層T的數據段頭部信息,此處是TCP
File Transfer Protocol: 應用層的信息,此處是FTP協議
首先找到網上一個公用的ftp地址進行抓包測試,這里采用地址(瑞典Ume? universitet于默奧大學公共FTP服務器):ftp://ftp.acc.umu.se/
打開wireshark,條件過濾:ip.addr==194.71.11.173
包28,35,36 tcp三次握手建立連接,說明ftp是建立在tcp協議之上的。
首先客戶端主機192.168.1.106 發送SYN包申請建立連接,其中初始序號seq為0(wireshark處理過的相對序列號,實際是個隨機值),win=64240 客戶端接受窗口大小,MSS=1460 tcp包中最多能攜帶的字節數量??MSS=MTU-IP首部-TCP首部-選項長度WS=256???SACK_PERM=1 說明客戶端開啟延遲確認。
包55:
包55通過ftp 命令USER 使用用戶名 anonymous嘗試登陸,服務器返回包56確認收到,服務器返回包57詢問客戶端密碼,客戶發送回包58,把密碼發送給服務器。59服務器確認收到密碼。60服務器返回登陸成功。
?
?
總結
- 上一篇: 基于token与基于服务器的身份认证
- 下一篇: No.7 nginx、nfs、集群