抓包与分析
(一)作業目的
(1)了解網絡通信的分層實現過程,了解不同層次PDU的逐層封裝與解封過程;
(2)了解數據通信的過程,進一步認知協議的構成與通信過程,進而對TCP/IP分層體系結構有更深刻的了解。
(二)作業內容
1.?在局域網范圍內從協議層面分析ping命令的執行過程,包括所使用協議,以及不同層級的數據包封裝與解封的過程。
2.?訪問www.ujs.edu.cn網站,分析其中所使用的協議,以及數據包的逐層封裝與解封過程。
3.?思考在數據鏈路層的數據包與網絡層數據包的異同,包括包長度和數據構成等,并進一步思考為何會存在這些區別?
(三)?作業要求
(1)能夠正確捕捉ping命令執行過程中所產生的數據包,并逐層分析其構成,進而了解數據包的封裝與解封過程;
(2)能夠正確捕捉訪問www.ujs.edu.cn網站過程所產生的相關數據包,分析出其所使用的協議,以及各協議的訪問流程;
(3)能夠正確分析數據鏈路層的數據包與網絡層數據包的異同。
(4)了解并熟悉常見的抓包工具,例如Wireshark、Sniffer等,熟悉以太網數據幀和IP數據包的結構
(5)以PDF文檔提交本次作業報告。
(四)實現過程
- 在windows命令行輸入“ipconfig-all”獲取本機的MAC地址和DNS服務器地址
圖 1
本機的IP地址為:192.168.1.100
本機的MAC地址為:C8-B2-9B-F4-80-1C
DNS域名服務器地址為:8.8.8.8
- 在windows命令行輸入“arp -a”獲取本機的高速緩存。
圖2
- 打開Wireshark進行抓包分析
圖3
NO:代表數據包編號
Time:在Wireshark啟動的多長時間內抓到
Source:來源IP地址
Destination:目的IP地址
Protocol:協議
Length:數據包的長度
Info:數據包的信息
(2)數據包的層次結構
選中一個數據包查看它的詳細信息,可以看到Packet Details上顯示出該數據包的4個層次結構信息,每層含義如下:
Frame:物理層數據幀概況
Etherent II:數據鏈路層幀頭部信息
Internet Protocol Version 4:網絡層IP包頭部信息
Transmission Control Protocol:傳輸層數據幀頭部信息
??
圖4
可見網絡是分層構成的,由低到高,分別為物理層,數據鏈路層,網絡層,傳輸層,應用層。
圖 5
應用層常用的協議有:HTTP,DNS協議
傳輸層常用的協議有:TCP和UDP協議
網絡層常用的協議有:IP,ICMP,IGMP協議
數據鏈路層常用的協議有:ARP,以太網協議
(4)數據包的封裝過程
數據封裝一般分五層,第一層是應用層協議的數據,第二層分別是TCP/UDP封裝,第三層IP封裝,第四層以太網封裝,最后轉成二進制的物理報文。?
圖 6
- 傳輸層數據幀頭部信息
Transmission Control Protocol, Src Port: 443, Dst Port: 51282, Seq: 1, Ack: 1, Len: 0
Source Port: 443
#源端口
Destination Port: 51282
#目的端口
????[Stream index: 1]
????[TCP Segment Len: 0]
????Sequence Number: 1 ???(relative sequence number)
Sequence Number (raw): 413129997
#序列號:確保數據可靠傳輸的一個唯一值。TCP使用序列號追蹤每個數據段的傳輸情況
????[Next Sequence Number: 1 ???(relative sequence number)]
????Acknowledgment Number: 1 ???(relative ack number)
Acknowledgment number (raw): 3874393895
#確認號:接收端發送,提示發送端下一次該發的數據在整個文件中的序號。接收端收到后,會把這個序號之前的數據從緩存中刪掉。
0101 .... = Header Length: 20 bytes (5)
#頭部長度
Flags: 0x010 (ACK)
#標志字段:發起連接的數據包,連接即握手進程
????Window: 2053
????[Calculated window size: 2053]
????[Window size scaling factor: -1 (unknown)]
Checksum: 0x9add [unverified]
#效驗和:判斷接受數據的完整性。可以讓通信方確認TCP數據段中的內容是否發生變化了。
????[Checksum Status: Unverified]
Urgent Pointer: 0
#緊急指針:只有當?URG?標志置1時緊急指針才有效。TCP的緊急方式是發送端向另一端發送緊急數據的一種方式。
[Timestamps]
圖 7
- 網絡層幀數據包頭部信息:
Internet Protocol Version 4, Src: 52.176.224.96, Dst: 192.168.1.100
0100 .... = Version: 4
#網際協議為IPV4
版本:4位,值為0100。目前存在兩種版本IP協議:
?IPv4和IPv6,版本號分別為4和6, 這是IPv4首部格式。
.... 0101 = Header Length: 20 bytes (5)
#IP包頭部長度20
首部長度:4位,首部長度字段以32位字為單位,即4個字節。
字段最小值為5,用于沒有可選項的情況,20個字節。
Differentiated Services Field: 0x04 (DSCP: LE, ECN: Not-ECT)
#差分服務字段
服務類型:8位,用于指定IP分組的優先級、延遲、
?吞吐率和可靠性要求及各種要求的組合。
Total Length: 40
#IP包總長度40
總長度:16位,以字節為單位給出包括首部和數據的IP分組的長度,首部
?長度是可變的,數據長度也是可變的,最大長度值為65535字節。
Identification: 0xf232 (62002)
#標識字段
標識:16位,標識字段用于標識屬于同一IP分組的數據片,屬于同一IP分
?組的數據片具有相同的標識字段值。
Flags: 0x40, Don't fragment
#標志字段
標志:3位,其中一位DF,一位MF,一位保留DF=1,不允許分片,MF=0,最后一片。
Fragment Offset: 0
#偏移量
偏移量:13位,以8個字節為單位給出當前數據片在原始IP分組中的位置
Time to Live: 106
#生存期TTL
生存時間:8位,用于限制IP分組在網絡中存在時間的一個計數器
?目前,該字段只是作為最大跳數使用,初始值由發送終端設定
Protocol: TCP (6)
#此包封裝的上層協議為TCP
協議:8位,用于表示數據所屬的高層協議類型,告訴網絡層把該IP分組
?送給哪一個進程處理。
Header Checksum: 0x4778 [validation disabled]
#頭部數據的校驗和
首部檢驗和:16位,對首部用檢驗和算法計算出的檢錯碼,用于檢測首部
?傳輸過程中發生的錯誤,每經過一個路由器計算機一次。
????[Header checksum status: Unverified]
Source Address: 52.176.224.96
#源IP 地址
Destination Address: 192.168.1.100
#目標IP地址
圖8
- 數據鏈路層幀數據包頭部信息:
Ethernet II, Src: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b), Dst: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
Destination: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#目標MAC地址
Source: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#源MAC地址
Type: IPv4 (0x0800)
#網際協議為IPV4
- 小結
通過頭部信息可以看出,該數據幀在傳輸層被封裝為TCP數據包,到網絡層被封裝為IP數據包,數據鏈路層使用的是Ethernet?II協議進行封裝,最終在物理層轉化為二進制信號發送出去,并且此過程中沒有應用層協議。
(5)訪問 www.ujs.edu.cn?分析數據包
1.打開命令行ping www.ujs.edu.cn
圖 9
2.在WireShark中進行捕獲,并在過濾器中輸入“dns”獲取協議為DNS的數據列表,可以看到ping過程中終端向DNS服務器發送了1次域名請求響應,DNS服務器回復了1次IP回復報文。
圖10
- 終端向DNS服務器發送問題請求:
Domain Name System (query)
Transaction ID: 0xa418
#DNS ID號
Flags: 0x0100 Standard query
#標志
Questions: 1
#問題計數
Answer RRs: 0
#回答計數
Authority RRs: 0
#域名服務器計數
Additional RRs: 0
#額外計數
????Queries
????????ujs.edu.cn: type A, class IN
????????????Name: ujs.edu.cn
#請求的域名
????????????[Name Length: 10]
????????????[Label Count: 3]
????????????Type: A (Host Address) (1)
#域名類型
????????????Class: IN (0x0001)
#地址類型
[Response In: 9362]
- DNS服務器向終端返回IP地址
Domain Name System (response)
????Transaction ID: 0xa418
????Flags: 0x8180 Standard query response, No error
????Questions: 1
????Answer RRs: 1
????Authority RRs: 0
????Additional RRs: 0
????Queries
????Answers
?ujs.edu.cn: type A, class IN, addr 202.195.160.7
#返回www.ujs.edu.cn的IP地址
????[Request In: 9361]
[Time: 0.006913000 seconds]
圖11
觀察DNS數據包在網絡層的報頭信息:
圖 12
DNS數據包在傳輸層采用的UDP協議。
- 小結
通過頭部信息可以看出,該數據幀在應用層被封裝為DNS數據包,在傳輸層被封裝為UDP數據包,在網絡層被封裝為IP數據包,數據鏈路層使用的是Ethernet?II協議進行封裝,最終在物理層轉化為二進制信號發送出去。
3.在WireShark中進行捕獲,并在過濾器中輸入ip.addr == 202.195.160.7獲取待分析數據列表,可見終端獲取域名www.ujs.edu.cn 的IP地址后,向其發送了4條請求響應,并收到其4次回復。
圖 13
點擊其中一個數據報文,觀察其詳細信息。
- 傳輸層數據報頭信息:
Internet Control Message Protocol
????Type: 8 (Echo (ping) request)
????Code: 0
????Checksum: 0x4d4c [correct]
????[Checksum Status: Good]
????Identifier (BE): 1 (0x0001)
????Identifier (LE): 256 (0x0100)
????Sequence Number (BE): 15 (0x000f)
????Sequence Number (LE): 3840 (0x0f00)
????[Response frame: 199]
????Data (32 bytes)
- 網絡層數據報頭信息:
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.7
????0100 .... = Version: 4
????.... 0101 = Header Length: 20 bytes (5)
????Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
????Total Length: 60
????Identification: 0xdc8b (56459)
????Flags: 0x00
????Fragment Offset: 0
????Time to Live: 128
Protocol: ICMP (1)
#傳輸層/網絡層協議為ICMP
????Header Checksum: 0x0000 [validation disabled]
????[Header checksum status: Unverified]
Source Address: 192.168.1.100
#源IP地址
Destination Address: 202.195.160.7
#目標IP地址
- 數據鏈路層數據報頭信息:
Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#目標MAC地址
Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#源MAC地址
Type: IPv4 (0x0800)
#網際協議為IPV4
?圖 14
從圖中可以看出,ICMP報文首部是被封裝在IP數據報的數據部分,而在ICMP首部前面仍需增加IP首部,即
| IP首部 | ICMP首部 | 上層數據部分 |
- 小結
通過頭部信息可以看出,ping命令終端所發送的數據幀在傳輸層被封裝為ICMP數據包,到網絡層被封裝為IP數據包,數據鏈路層使用的是Ethernet?II協議進行封裝,最終在物理層轉化為二進制信號發送出去,并且此過程中沒有應用層協議。
執行Ping www.ujs.edu.en命令首先終端會訪問DNS服務器詢問域名的IP地址,DNS服務器收到詢問請求后發送包含域名IP信息的DNS數據包,此過程中應用層協議為DNS,傳輸層協議為UDP,網絡層協議為IP。終端獲得www.ujs.edu.cn的IP地址后,再向其尋求訪問,www.ujs.edu.cn收到訪問請求后發送回復數據幀,此過程中傳輸層/網絡層協議為ICMP,在網絡層封裝為IP數據包。
(6)數據鏈路層的數據包與網絡層數據包的異同
數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務。數據鏈路層的作用:
1、IP數據模塊發送和接收IP數據報;
2、為ARP模塊發送ARP請求和接收ARP協議;
3、為RARP發送RARP請求和接受RARP應答。
以太網協議數據報頭:
Ethernet II, Src: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c), Dst: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#以太網協議版本,源地址:網卡地址,目的地址:網卡地址
????Destination: Tp-LinkT_b2:b2:2b (64:6e:97:b2:b2:2b)
#目的地址:網卡地址————占6個字節
????Source: IntelCor_f4:80:1c (c8:b2:9b:f4:80:1c)
#源地址:網卡地址————占6個字節
????Type: IPv4 (0x0800)
#幀內封裝的上層協議類型為IPV4(十六進制碼0800)————占2個字節
在數據鏈路層提供的兩個相鄰端點之間的數據幀的傳送功能上,進一步管理網絡中的數據通信,將數據設法從源端經過若干個中間節點傳送到目的端,從而向運輸層提供最基本的端到端的數據傳送服務。
主要內容有:
1、虛電路分組交換和數據報分組交換
2、路由選擇算法
3、阻塞控制方法
5、綜合業務數據網(ISDN)
6、異步傳輸模式(ATM)及網際互連原理與實現。
ICMP數據報頭:
Internet Protocol Version 4, Src: 192.168.1.100, Dst: 202.195.160.182
????0100 .... = Version: 4
????.... 0101 = Header Length: 20 bytes (5)
#IPV4協議————占1個字節
????Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
????Total Length: 60
#IP首部長度————占2個字節
????Identification: 0xdc8b (56459)
#差分服務字段————占2個字節
????Flags: 0x00
#標記字段————占1個字節
????Fragment Offset: 0
#偏移量————占1個字節
????Time to Live: 128
#生存期————占1個字節
????Protocol: ICMP (1)
#封裝的上層協議為ICMP————占1個字節
????Header Checksum: 0x0000 [validation disabled]
#效驗碼————占2個字節
????[Header checksum status: Unverified]
????Source Address: 192.168.1.100
#源IP地址————占4個字節
????Destination Address: 202.195.160.182
#目標IP地址————占4個字節
可見,數據鏈路層數據包報頭和網絡層數據包報頭有很大不同,就比如數據鏈路層的源地址和目的地址存放的是6個字節的MAC地址;而網絡層存放的是4個字節的IP地址,而這些區別取決于網絡層與數據鏈路層面臨問題不同,作用功能不同,采用的協議不同。
總結
- 上一篇: [spring boot] 01 环境搭
- 下一篇: FastDFS java api调用