目? 錄
1、實驗目的
2、實驗環境
3、實驗內容
3.1 DNS查詢UDP數據分析
3.2 QQ通信UDP數據分析
4、實驗結果與分析
4.1 DNS查詢UDP數據分析
4.2 QQ通信UDP數據分析
4.3 根據捕獲的數據包,分析UDP的報文結構,將UDP協議中個字段名,字段值,字段信息填入下表
4.4 通過分析實驗結果,UDP報文結構由哪幾部分組成,其功能是什么
5、實驗小結
5.1 問題與解決辦法:
5.2 心得體會:
1、實驗目的
? ? ? ? 1、了解和掌握運輸層UDP協議內容
? ? ? ? 2、理解UDP協議的工作原理
? ? ? ? 3、了解應用層和運輸層協議的關系
2、實驗環境
? ? ? ? 1、硬件要求:阿里云云主機ECS 一臺、筆記本電腦一臺
? ? ? ? 2、軟件要求:Linux/ Windows 操作系統
3、實驗內容
????????UDP(User Datagram Protocol)用戶數據報協議是一種無連接的運輸層協議,提供面向事物的簡單不可靠信息傳送服務,服務于很多應用層協議包括網絡文件系統(NFS),簡單的網絡管理協議(SNMP),域名系統(DNS)以及簡單的文件傳輸系統(TFTP)。與TCP不同UDP并不提供對IP協議的可靠機制,控制以及錯誤恢復等。由于UDP比較簡單,UDP頭包含很少的字節,比TCP負載消耗少。
3.1 DNS查詢UDP數據分析
????????使用tcpdump抓取DNS查詢網絡通信數據包,利用wireshark分析UDP數據。
????????例如:
dig www.xju.edu.cn
3.2 QQ通信UDP數據分析
????????1. 利用wireshark抓取QQ網絡通信數據包,分析UDP數據。
????????2. QQ客戶端之間消息傳送采用了UDP。國內網絡環境非常復雜而且很多用戶采用的方式是通過代理服務器共享一條線路上網方式,UDP包能夠穿透大部分的代理服務器,因此QQ選擇了UDP作為客戶之間的通信協議。因此我們打開QQ聊天窗口開啟捕獲,與好友進行對話,停止捕獲就得到了UDP數據包。
4、實驗結果與分析
4.1 DNS查詢UDP數據分析
????????1. 由于系統中沒有dig命令,因此需要使用如下語句進行下載。
yum install dnf
dnf install bind-utils
????????2. 如下圖所示則為dig命令下載成功。
????????3. 利用dig解析新疆大學網站的DNS。
dig www.xju.edu.cn
????????4. 利用tcpdump抓取DNS查閱網絡通信數據包,并以dns.cap文件保存下來。
tcpdump -i eth0 -w dns.cap
????????5. 使用Xftp7將dns.cap文件移動到桌面上。
????????6. 在Wireshark中打開桌面上的dns.cap文件進行分析。
????????7. 在過濾器中輸入以下語句過濾出DNS數據包。
dns
4.2 QQ通信UDP數據分析
????????1. 打開Wireshark,由于筆記本電腦連接的是WIFI,所以點擊WLAN進行數據包捕獲。
????????2. 正在進行數據包的抓取。
????????3. 點擊Wireshark左上方的紅色方框按鈕,停止抓包。
????????4. 使用過濾器得到QQ網絡通信數據包時在應用顯示過濾器輸入以下語句。
oicq
????????5. 點擊OICQ后數據段中的QQ為十六進制。
????????6. 使用過濾器得到UDP數據包時在應用顯示過濾器輸入以下語句。
udp
????????7. 點擊Internet Protocol Version后進行UDP相關數據的查看。
4.3 根據捕獲的數據包,分析UDP的報文結構,將UDP協議中個字段名,字段值,字段信息填入下表
????????1. 對抓取的數據包進行網站通信的UDP數據分析,填寫表格內容。
????????2. 對抓取的數據包進行QQ通信的UDP數據分析,填寫表格內容。
4.4 通過分析實驗結果,UDP報文結構由哪幾部分組成,其功能是什么
????????源端口:需要對方回信時選用,不需要時全部置0;客戶端程序請求時,由系統自動指定,端口號范圍是 0~65535,0~1023為知名端口號。
????????目的端口:服務器的端口,由編寫程序的程序員自己指定,這樣客戶端才能根據ip地址和 port 成功訪問服務器,在終點交付報文的時候需要用到。
????????UDP總長度:UDP的數據報的長度(包括首部和數據)其最小值為8(只有首部),整個UDP數據報的長度 ,包括報頭+載荷。
????????UDP校驗和:檢查數據在傳輸中是否出錯,是否出現bit反轉的問題,當進行校驗時,需要在UDP數據報之前增加臨時的偽首部。
5、實驗小結
5.1 問題與解決辦法:
????????1. 問題一:使用dig命令時出現如下提示此命令未找到:
解決方法:由于系統中沒有dig命令所導致,需要在使用此命令前通過 yum install dnf 以及 dnf install bind-utils 命令進行安裝。
????????2. 問題二:使用tcpdump進行數據包的抓取時出現如下提示此命令未找到:
解決方法:由于命令輸入錯誤導致,數據包的抓取命令為tcpdump,而不是tcpdnmp,將對應命令進行更改后錯誤消失。
????????3. 問題三:對指定網絡接口的數據包進行抓取時出現如下提示語法錯誤:
解決方法:由于命令鍵入不完整所導致,指定網絡接口所需要的參數是-i,在eth0前方添加-i后錯誤消失。
????????4. 問題四:使用tcpdump抓取所有的數據包時一直在抓取,不能夠自動停止抓包:
解決方法:使用Ctrl+c就可以終止運行的命令,進而就可以停止抓包。
5.2 心得體會:
????????1、由于UDP無需建立連接,因此UDP不會引入建立連接的時延。
????????2、UDP不維護連接狀態,也不跟蹤參數,因此某些專用應用服務器使用UDP時,一般都能支持更多的活動客戶機。
????????3、分組首部開銷更小,UDP只有8個字節的首部開銷。
????????4、應用層能夠更好地控制要發送的數據和發送時間。UDP沒有擁塞控制,因此網絡中的擁塞也不會影響主機的發送效率。某些實時應用(如直播)要求以穩定的速度發送,能容忍一些數據的丟失,但不允許有較大的時延,而UDP正好可以滿足這些應用的需求。
????????5、UDP提供盡最大努力的交付,即不保證可靠交付,但并不意味著應用對數據的要求是不可靠的,因此需要維護傳輸可靠性的工作需要用戶在應用層來完成。應用實體可以根據應用需求來靈活設計自己的可靠性機制。
????????6、UDP是面向報文的,發送方UDP對應用層交下來的報文,在添加首部后就交付給IP層,既不合并,也不拆分,而是保留這些報文的邊界;接受方UDP對IP層交上來的用戶數據報,在去除首部后就原封不動的交付給上層的應用進程,一次交付一個完整的報文,因此報文不可分割,是UDP數據處理的最小單位。
????????7、UDP常用于一次性傳輸比較小數據的網絡應用,如DNS、SNMP等,因為對于這些應用,若采用TCP,則將為創建連接、維護和拆除而帶來不小的開銷。UDP也常用于多媒體應用(如IP電話、實時視頻會議、流媒體等),顯然,可靠數據傳輸對于這些應用來說并不是最重要的,但TCP的擁塞控制會導致數據出現較大的延遲,這是它們不可容忍的。
????????8、當傳輸層從IP層收到UDP數據報時,就根據首部中的目的端口,把UDP數據報通過相應的端口,上交給應用進程。如果接收方UDP發現收到的報文中的目的端口號不正確(不存在對應端口號的應用進程0),就丟棄該報文,并由ICMP發送“端口不可達”差錯報文給對方。