目? 錄
1、實驗目的
2、實驗環境
3、實驗內容
3.1 利用wget下載新疆大學主頁
3.2 使用wireshark分析TCP報文結構
3.3 使用wireshark分析建立連接的三次握手
3.4 使用wireshark分析釋放連接的四次揮手
4、實驗結果與分析
4.1 利用wget下載新疆大學主頁
4.2 使用wireshark分析TCP報文結構
4.3 使用wireshark分析建立連接的三次握手
1. 第一次握手
2. 第二次握手
3. 第三次握手
4.4 使用wireshark分析釋放連接的四次揮手
1. 第一次揮手
2. 第二次揮手
3. 第三次揮手
4. 第四次揮手
5、實驗小結
5.1 問題與解決辦法:
5.2 心得體會:
1、實驗目的
? ? ? ? 1、了解運輸層TCP協議基本概念、報文結構
????????2、分析TCP報文頭部
? ? ? ? 3、分析TCP連接建立過程、TCP連接釋放
? ? ? ? 4、掌握利用tcpdump和wireshark進行tcp協議分析技術
2、實驗環境
? ? ? ? 1、硬件要求:阿里云云主機ECS 一臺、筆記本電腦一臺
? ? ? ? 2、軟件要求:Linux/ Windows 操作系統
3、實驗內容
????????TCP是面向連接的、在不可靠的互聯網絡上提供可靠的端到端通信,是TCP/IP協議集的核心協議。
????????TCP為了保證報文傳輸的可靠,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據(假設丟失了)將會被重傳。
3.1 利用wget下載新疆大學主頁
????????利用wget下載新疆大學主頁www.xju.edu.cn,與此同時使用tcpdump抓包。
3.2 使用wireshark分析TCP報文結構
????????根據捕獲的數據包,分析TCP報文結構由哪幾部分組成,其功能是什么?
3.3 使用wireshark分析建立連接的三次握手
????????根據捕獲的數據包,分析建立連接的三次握手,將TCP協議中各字段名,字段長度,字段值,字段含義填入到對應表格中。
3.4 使用wireshark分析釋放連接的四次揮手
????????根據捕獲的數據包,分析釋放連接的四次揮手,將TCP協議中各字段名,字段長度,字段值,字段含義填入到對應表格中。
4、實驗結果與分析
4.1 利用wget下載新疆大學主頁
????????1. 使用wget命令下載新疆大學主頁www.xju.edu.cn。
wget www.xju.edu.cn
????????2. 使用tcpdump命令抓取www.xju.edu.cn網站的數據包,并將所抓取的數據包保存在xju.cap文件中。
tcpdump host www.xju.edu.cn -w xju.cap
????????3. 使用wireshark打開爬取的數據包文件xju.cap,查看所爬取的數據包的信息。
4.2 使用wireshark分析TCP報文結構
????????1. 使用Ping命令查看網站www.xju.edu.cn的IP地址,查詢后的IP地址為111.115.76.75。
Ping www.xju.edu.cn
????????2. 通過在過濾欄中輸入以下語句將使用TCP協議并且IP地址為111.115.76.75的數據包進行過濾。
tcp and ip.addr==111.115.76.75
????????3. 根據捕獲的數據包,分析TCP報文結構由哪幾部分組成,其功能是什么。
????????源端口(16位):通信發送方使用的端口號。
????????目標端口(16位):通信接收方使用的端口號。
????????序號(32位):用來確保數據可靠傳輸的唯一值。
????????確認號(32位):接收方在響應時發送的數值。
????????數據偏移(4位):標志數據包開始的位置,TCP 頭部的長度。
????????保留(6位):保留為今后使用,但目前應該置為0。
????????緊急URG:數據包中承載的內容應該立即由 TCP 協議棧立即進行處理:當 URG=1 時,表明
????????緊急指針字段有效。它告訴系統此報文段中有緊急數據,應盡快傳送(相當于高優先級的數據)。
????????確認ACK:確認收到的數據包:只有當 ACK=1 時,確認號字段才有效;當 ACK=0 時,確認號無效。
????????推送PSH:數據包直接發送給應用,而不是緩存起來:接收 TCP 收到 PSH=1 的報文段,就盡快地交付接收應用進程,而不再等到整個緩存都填滿了后再向上交付。
????????復位RST:之前嘗試的連接被關閉,(信號差,信號擁擠):當 RST=1 時,表明 TCP 連接中出現嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。
????????同步SYN:發起連接的數據包:同步 SYN=1 表示這是一個連接請求或連接接受報文。
????????終止FIN:連接成功,傳輸完畢之后,連接正在斷開:用來釋放一個連接,FIN=1 表明此報文段的發送端的數據已發送完畢,并要求釋放運輸連接。
????????窗口(16位):匹配緩存區的大小。
????????校驗和(16位):確認 TCP 數據段中的內容是否發送了變化。
????????緊急指針(16位):明確顯示數據之前的 16 進制序列號。
????????選項:長度可變,最長可達40字節,當沒有使用選項時,TCP的首部長度是20字節。
4.3 使用wireshark分析建立連接的三次握手
1. 第一次握手
????????客戶端將標志位 SYN 置為 1 ,隨機產生一個值seq = X,并將該數據包發送給服務器,等待服務器確認。
????????分析建立連接的第一次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
2. 第二次握手
????????服務器收到數據包后由標志位SYN = 1,知道客戶端請求建立連接,服務器將標志位 SYN 和 ACK 都置為 1 ,ack= X + 1,隨機產生一個值seq= Y,并將該數據包發送給客戶端以確認連接請求。
????????分析建立連接的第二次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
3. 第三次握手
????????客戶端收到確認后,檢查 ack是否為X + 1,ACK 是否為 1 ,如果正確則將標志位 ACK 置為 1 ,ack= Y + 1,并將該數據包發送給服務器,服務器檢查 ACK 是否為1 ,如果正確則連接建立成功。
????????分析建立連接的第三次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
4.4 使用wireshark分析釋放連接的四次揮手
1. 第一次揮手
????????主動關閉方發送一個 FIN ,用來關閉主動方到被動關閉方的數據傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發送數據了(當然,在 FIN 包之前發送出去的數據,如果沒有收到對應的 ACK 確認報文,主動關閉方依然會重發這些數據),但此時主動關閉方還可以接受數據。
????????分析釋放連接的第一次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
2. 第二次揮手
????????被動關閉方收到 FIN 包后,發送一個 ACK 給對方,確認序號為:收到報文序號seq+收到報文所攜帶數據長度len+ 1 。上一個報文可能“捎帶”了主動關閉方發送的最后一塊數據,其長度用字段len來表示。
????????分析釋放連接的第二次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
3. 第三次揮手
????????被動關閉方發送一個 FIN ,用來關閉被動關閉方到主動關閉方的數據傳送,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發送數據了。
????????分析釋放連接的第三次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
4. 第四次揮手
????????主動關閉方收到 FIN 后,發送一個 ACK 給被動關閉方,確認序號為:收到報文的序號seq + 收到報文所攜帶數據長度len+ 1 ,至此,完成四次揮手。
????????分析釋放連接的第四次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。
5、實驗小結
5.1 問題與解決辦法:
????????1. 問題一:使用tcpdump進行數據包的抓取時出現如下提示此命令未找到:
解決方法:由于命令輸入錯誤導致,數據包的抓取命令為tcpdump,而不是tcpdnmp,將對應命令進行更改后錯誤消失。
????????2. 問題二:對指定網絡接口的數據包進行抓取時出現如下提示語法錯誤:
解決方法:由于命令鍵入不完整所導致,指定網絡接口所需要的參數是-i,在eth0前方添加-i后錯誤消失。
????????3. 問題三:使用tcpdump抓取所有的數據包時一直在抓取,不能夠自動停止抓包:
解決方法:使用Ctrl+c就可以終止運行的命令,進而就可以停止抓包。
????????4. 問題四:使用Wireshark對抓取的數據包進行過濾時出現如下提示輸入框出現紅色:
解決方法:由于過濾命令輸入錯誤,在過濾地址時使用ip.addr,將輸入內容中的id.addr改為ip.addr后紅色報錯消失。
????????5. 問題五:使用Wireshark對抓取的數據包進行多個條件同時成立過濾時出現如下提示輸入框出現紅色:
解決方法:由于多個條件同時成立時需要使用and進行連接,但是輸入命令時并沒有使用and進行連接所導致,在輸入內容中加入and后紅色報錯消失。
5.2 心得體會:
????????1、TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。
????????2、要控制 TCP 發送速率,不能發送得太快,以免數據來不及處理,也不能發送得太慢,以免浪費資源。
????????3、在 TCP 中,發送端和接收端其實都維護著對應的窗口:分別為發送端窗口和接收端窗口。
????????4、發送端窗口是由接收窗口剩余大小決定的。接收方會把當前接收窗口的剩余大小寫入應答報文,發送端收到應答后根據該值和當前網絡擁塞情況設置發送窗口的大小,所以發送窗口的大小是不斷變化的,這個不斷變化的窗口就叫做滑動窗口。
????????5、擁塞控制作用于網絡,目的是防止過多的數據擁塞網絡,避免出現網絡負載過大,帶寬被大量占用的情況。
????????6、建立連接需要三次握手,斷開連接需要四次揮手。
????????7、超時重傳機制保證每一次傳輸的數據都是可靠的。
????????8、滑動窗口動態調整發送端窗口大小,保證接收方來得及接收數據。
????????9、擁塞窗口動態調整發送端窗口大小,防止過多的數據擁塞網絡,出現網絡帶寬不夠用的情況。