課
程
設
計
課程設計題目
網絡協議分析實驗報告
學 生 姓 名 :
學
號:
專
業:
2014 年 6 月 29 日 驗 實驗 1
基于 ICMP 的 的 MTU 測量方法 實驗目的 1)
掌握 ICMP 協議 2)
掌握 PING 程序基本原理 3)
掌握 socket 編程技術 4)
掌握 MTU 測量算法 實驗任務 編寫一個基于 ICMP 協議測量網絡 MTU 的程序,程序需要完成的功能: 1)使用目標 IP 地址或域名作為參數,測量本機到目標主機經過網絡的 MTU; 2)輸出到目標主機經過網絡的 MTU。
實驗環境 1)Linux 系統; 2)gcc 編譯工具,gdb 調試工具。
實驗步驟 1. 首先仔細研讀 ping、c 例程,熟悉 linux 下 socket 原始套接字編程模式,為實驗做好準備; 2. 生成最大數據量的 IP 數據報(64K),數據部分為 ICMP 格式,ICMP 報文為回送請求報文,IP首部 DF 位置為 1;由發送線程發送;
3. 如果收到報文為目標不可達報文,減少數據長度,再次發送,直到收到回送應答報文。至此,MTU 測量完畢。
ICMP 協議就是一種面向無連接的協議,用于傳輸出錯報告控制信息。它就是一個非常重要的協議,它對于網絡安全具有極其重要的意義。[1]
它就是 TCP/IP 協議族的一個子協議,屬于網絡層協議,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制與狀態信息等。當遇到 IP 數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送 ICMP 消息。ICMP 報文在IP 幀結構的首部協議類型字段(Protocol 8bit)的值=1、
ICMP 原理 ICMP 提供一致易懂的出錯報告信息。發送的出錯報文返回到發送原數據的設備,因為只有發送設備才就是出錯報文的邏輯接受者。發送設備隨后可根據 ICMP 報文確定發生錯誤的類型,并確定如何才能更好地重發失敗的數據包。但就是 ICMP 唯一的功能就是報告問題而不就是糾正錯誤,糾正錯誤的任務由發送方完成。
我們在網絡中經常會使用到 ICMP 協議,比如我們經常使用的用于檢查網絡通不通的Ping 命令(Linux 與 Windows 中均有),這個“Ping”的過程實際上就就是 ICMP 協議工作的過程。還有其她的網絡命令如跟蹤路由的 Tracert 命令也就是基于 ICMP 協議的。
ICMP(Internet Control Message,網際控制報文協議)就是為網關與目標主機而提供的一種差錯控制機制,使它們在遇到差錯時能把錯誤報告給報文源發方、就是 IP 層的一個協議。但就是由于差錯報告在發送給報文源發方時可能也要經過若干子網,因此牽涉到路由選擇等問題,所以 ICMP 報文需通過 IP 協議來發送。ICMP 數據報的數據發送前需要兩級封裝:首先添加ICMP 報頭形成 ICMP 報文,再添加 IP 報頭形成 IP 數據報 通信術語 最大傳輸單元(Maximum Transmission Unit,MTU)就是指一種通信協議的某一層上面所能通過的最大數據包大小(以字節為單位)。最大傳輸單元這個參數通常與通信接口有關(網絡接口卡、串口等)。
驗 實驗 2
基于 UDP 的 的 traceroute 程序 實驗目的 1)
掌握 UDP 協議 2)
掌握 UDP 客戶機/服務器編程模式 3)
掌握 socket 編程技術 4)
掌握 traceroute 算法 實驗任務 1、 熟悉程序 udp-client、c 與 udp-server、c,使用網絡嗅探器(如 wireshark)分析 UDP 通訊數據報格式;
2、 編寫一個基于 UDP 協議的網絡路徑記錄程序程序,程序需要完成的功能: 1)使用目標 IP 地址或域名作為參數,測量本機到目標主機經過的路由器 IP 地址; 2)輸出到目標主機經過網絡路由器 IP 地址。
實驗環境 1)Linux 系統; 2)gcc 編譯工具,gdb 調試工具。
實驗步驟 1. 首先分別編譯程序 udp-client、c 與 udp-server、c,編譯命令如下: gcc udp-client、c –o udp-client gcc udp-server、c –o udp-server 啟動網絡嗅探程序:wireshark。
打開兩個終端窗口,進入程序所在目錄,分別運行、/udp-client 與、/udp-server,查瞧wireshark 采集到的 UDP 通訊數據,截圖并結合圖對 UDP 協議格式進行說明; 2. 通過socket編程,發送udp數據報,設置目的端口號為不常用的值,TTL值初始為1,逐步增加,接收超時 ICMP 報文與 ICMP 不可達報文;如果接收到 ICMP 超時報文,則記錄發送ICMP 超時報文的路由器 IP 地址,如果收到 ICMP 不可達報文,則為目的主機到達; 3. 輸出記錄的所有路由器 IP 地址。
實驗結果 1
UDP 協議的主要作用就是將網絡數據流量壓縮成數據報的形式。一個典型的數據報就就是一個二進制數據的傳
輸單位。每一個數據報的前 8 個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。
UDP 報頭
UDP 報頭由 4 個域組成,其中每個域各占用 2 個字節,具體如下:
源端口號 目標端口號 數據報長度 校驗值
UDP 協議使用端口號為不同的應用保留其各自的數據傳輸通道。UDP 與 TCP 協議正就是采用這一機制實現對同一時刻內多項應用同時發送與接收數據的支持。數據發送一方(可以就是客戶端或服務器端)將 UDP 數據報通過源端口發送出去,而數據接收一方則通過目標端口接收數據。有的網絡應用只能使用預先為其預留或注冊的靜態端口;而另外一些網絡應用則可以使用未被注冊的動態端口。因為 UDP 報頭使用兩個字節存放端口號,所以端口號的有效范圍就是從 0 到 65535。一般來說,大于 49151 的端口號都代表動態端口。
數據報的長度就是指包括報頭與數據部分在內的總的字節數。因為報頭的長度就是固定的,所以該域主要被用來計算可變長度的數據部分(又稱為數據負載)。數據報的最大長度根據操作環境的不同而各異。從理論上說,包含報頭在內的數據報的最大長度為 65535 字節。不過,一些實際應用往往會限制數據報的大小, 有時會降低到 8192 字節。
UDP 協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發送與接收方的校驗計算值將不會相符,由此UDP 協議可以檢測就是否出錯。這與 TCP 協 議就是不同的,后者要求必須具有校驗值。
2
驗 實驗 3
TCP 協議分析 實驗目的 1)
掌握 TCP 協議 2)
掌握 TCP 客戶機/服務器編程模式 實驗任務 熟悉程序 tcp-process、c,tcp-client、c 與 tcp-server、c,使用網絡嗅探器(如 wireshark)分析 TCP協議三次握手過程; 實驗環境 1)Linux 系統; 2)gcc 編譯工具,gdb 調試工具。
實驗步驟 首先分別編譯程序 tcp-client、與 tcp-server、,編譯命令如下: gcc tcp-client、c tcp-process、c –o tcp-client gcc tcp-server、c tcp-process、c
–o tcp-server 啟動網絡嗅探程序:wireshark。
打開兩個終端窗口,進入程序所在目錄,分別運行、/tcp-client 與、/tcp-server,查瞧wireshark 采集到的 TCP 通訊數據,截圖并結合圖對 TCP 三次握手協議格式進行說明;
實驗結果
在 TCP/IP 協議中,TCP 協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送 syn 包(syn=j)到服務器,并進入 SYN_SEND 狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即 SYN+ACK 包,此時服務器進入 SYN_RECV 狀態;
第三次握手:客戶端收到服務器的 SYN+ACK 包,向服務器發送確認包 ACK(ack=k+1),此包發送完畢,客戶端與服務器進入 ESTABLISHED 狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據,在上述過程中,還有一些重要的概念:
未連接隊列:在三次握手協議中,服務器維護一個未連接隊列,該隊列為每個客戶端的 SYN 包(syn=j)開設一個條目,該條目表明服務器已收到 SYN 包,并向客戶發出確認,正在等待客戶的確認包。這些條目所標識的連接在服務器處于 Syn_RECV 狀態,當服務器收到客戶的確認包時,刪除該條目,服務器進入 ESTABLISHED 狀態。
Backlog 參數:表示未連接隊列的最大容納數目。
SYN-ACK 重傳次數 服務器發送完 SYN-ACK 包,如果未收到客戶確認包,服務器進行首次重傳,等待一段時間仍未收到客戶確認包,進行第二次重傳,如果重傳次數超過系統規定的最大重傳次數,系統將該連接信息從半連接隊列中刪除。注意,每次重傳等待的時間不一定相同。
半連接存活時間:就是指半連接隊列的條目存活的最長時間,也即服務從收到 SYN 包到確認這個報文無效的最長時間,該時間值就是所有重傳請求包的最長等待時間總與。有時我們也稱半連接存活時間為 Timeout 時間、SYN_RECV 存活時間。
推薦訪問: 協議 實驗 報告上一篇:數據庫實驗報告,(一)
下一篇:嵌入式綜合實驗報告
同志們:今天這個大會,是市委全面落實黨要管黨、從嚴治黨要求的一項重大舉措,也是對縣市區委書記履行基層黨建工作第一責任人情況的一次集中檢閱,同時是對全市基層黨建工作的一次再部署、再落實的會議。前面,**
***年,我認真履行領班子、帶隊伍、抓黨員、保穩定的基層黨建工作思路,以學習貫徹習近平新時代中國特色社會主義思想和黨的十九大歷次全會精神為主線,以市局基層黨建工作考核細則為落腳點,落實全面從嚴治黨主體
根據會議安排,現將2022年履行抓基層黨建工作職責情況報告如下:一、履職工作特色和亮點1 突出政治建設,著力在思想認識上提高。牢固樹立抓黨建就是抓政績的理念,以“黨建工作抓引領、社區治理求突破,為民服
2022年以來,在**黨委的正確領導下,堅持以習近平新時代中國特色社會主義思想為指導,深入學習宣傳貫徹黨的二十大精神,以黨建工作為統領,扎實開展夯實“三個基本”活動,以“四化四力”行動為抓手,聚力創建
各位領導,同志們:根據會議安排,現就2022年度抓基層黨建工作情況匯報如下:一、主要做法及成效(一)強化政治引領。一是不斷強化理論武裝。堅持通過黨組會、中心組學習會和“三會一課”,第一時間、第一議題學
2022年度抓基層黨建工作述職報告按照黨委工作部署,現將本人2022年度抓基層黨建工作情況報告如下:一、2022年度抓基層黨建工作情況(一)旗幟鮮明講政治將旗幟鮮明講政治放在全局發展首要位置,積極開展
2022年,是我在數計系黨總支書記這個新崗位上度過的第一個完整的工作年度。回首一年來在校黨委的正確領導下,與數計系領導班子和全體師生共同走過的日子,艱辛歷歷在目,收獲溫潤心田。作為黨總支書記,我始終牢
按照考核要求,現將本人一年來,作為統戰部長履行職責、廉潔自律等方面情況報告如下:一、著眼增強政治素質,不斷深化理論學習堅持把旗幟鮮明講政治作為履職從政的第一位要求,帶領統戰系統干部堅決擁護“兩個確立”
**年,緊緊圍繞黨工委、管委會的決策部署,全體人員團結協作、凝心聚力,緊扣黨工委“**”基本工作思路,全力開拓進取,認真履職盡責,圓滿完成各項工作任務。一、個人思想政治狀況檸檬文苑www bgzjy
按照縣委關于開展抓基層黨建述職評議會議的有關要求,經請示縣委組織部同意,今天,我們在此召開2022年度基層黨組織書記抓基層黨建述職評議會議。1 首先,請**黨委書記,**同志述職。**黨委能夠主動研究