第三次作業:使用Packet Tracer分析TCP連接的建立與釋放過程


0 個人信息

  • 張櫻姿
  • 201821121038
  • 計算1812

1 實驗目的

  • 使用路由器連接不同的網絡
  • 使用命令行操作路由器
  • 通過抓取HTTP報文,分析TCP連接建立的過程

2 實驗內容

使用Packet Tracer,正確配置網絡參數,通過抓取HTTP數據包,分析TCP連接建立過程。

  • 建立網絡拓撲結構
  • 配置參數
  • 抓包
  • 分析數據包

3 實驗報告

本實驗使用Cisco Packet Tracer這個平台來對網絡環境進行模擬。

3.1 建立網絡拓撲結構

網絡拓撲圖如下圖所示:

分析:由於客戶端和服務器不在同一網段,因此需要配置路由器將這兩者聯系起來才能互相通信。

3.2 配置參數

3.2.1 配置客戶端

客戶端的IP地址為192.168.1.38 , 子網掩碼為255.255.255.0 , 默認網關為192.168.1.100

3.2.2 配置客戶端

服務端的IP地址為192.168.2.38 , 子網掩碼為255.255.255.0 , 默認網關為192.168.2.100

3.2.3 配置路由器

  • 路由器激活配置:

配置命令解釋:

Router>                          (處於用戶模式下)

Router>enable                 (進入特權模式)

Router#                                  (特權模式)

Router#configure terminal        (進入全局配置模式)

Router(config) #               (全局配置模式) 

Router(config)# no ip domain-lookup(禁用DNS查找)

Router(config)#hostname R                (設置路由器主機名)

  • G0/0/0及G0/0/1端口配置:

 

 

配置命令解釋:

R(config)#interface G0/0/0                        (進入端口配置模式)

R(config-if)#ip address 192.168.1.100 255.255.255.0 (配置端口)

     R(config-if)#no shutdown             (激活端口)

  • 路由協議配置:

  

配置命令解釋:

R(config)#router rip                       (進入rip路由協議配置模式)

R(config-router)#                           (rip路由協議配置模式

R(config-router)#version 2              (使用rip2版本)

R(config-router)#no auto-summary  (關閉自動路由匯總)

R(config-router)#network 192.168.1.0 (設置參與RIP協議的網絡地址)

  • 查看已配置參數:

  

   

配置命令解釋:

R#show ip interface brief       (查看ip地址和端口狀態)

R#show ip route      (查看路由表)

  • 測試客戶端與服務器間能否正常通信:

  在客戶端上ping服務器:

  

   在服務器上ping客戶端:

  

3.3 抓包並分析TCP連接建立過程

3.3.1 開啟仿真模式,用客戶端的瀏覽器訪問服務器:

   3.3.2 抓到的包:

  

   

  3.3.3 畫TCP連接建立示意圖(三次握手):

  

  3.3.4 分析序號和確認號的變化:

       (1)第一次握手:客戶端發送一個TCP的SYN標志位為1的包表明客戶打算連接服務器的端口,以及初始序號X,保存在包頭的序列號           (Sequence Number)字段里,此處seq=0即X=0。

  (2)第二次握手:服務器發回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的ISN加1,即X+1,此處ack為1。

  (3)第三次握手:客戶端再次發送確認包(ACK) ,SYN標志位為0,ACK標志位為1。並且把服務器發來ACK的序號字段+1,即seq=1,放在確定字段中發送給對方。

  3.3.5 TCP連接建立需要第三次握手的原因:

這主要是防止已經失效的連接請求報文突然又傳送到了服務器,從而產生錯誤。

如果使用的是兩次握手建立連接,當客戶端發送了第一個請求連接並且沒有丟失,只是因為在網絡結點中滯留的時間太長了,由於TCP的客戶端遲遲沒有收到確認報文,以為服務器沒有收到,此時重新向服務器發送這條報文,此后客戶端和服務器經過兩次握手完成連接,傳輸數據,然后關閉連接。此時此前滯留的那一次請求連接,網絡通暢了到達了服務器,這個報文本該是失效的,但是,兩次握手的機制將會讓客戶端和服務器再次建立連接,這將導致不必要的錯誤和資源的浪費

如果采用的是三次握手,就算是那一次失效的報文傳送過來了,服務端接受到了那條失效報文並且回復了確認報文,但是客戶端不會再次發出確認。由於服務器收不到確認,就知道客戶端並沒有請求連接。

3.4 分析TCP連接釋放過

 3.4.1 畫TCP連接釋放示意圖(四次揮手):

 

3.4.2 分析示意圖為何與課本不一樣的原因:

示意圖中,最后一次揮手的ack值應該為第三次的seq值加1,但是卻沒有。個人認為是此時FIN=0,即使確認號不加一,此時也能達到釋放連接的效果。另一方面是,此時TCP連接處於半關閉狀態,因為數據仍可以從被動關閉一方向主動關閉方發送。

3.5 Q&A

Q:為什么連接的時候是三次握手,關閉的時候卻是四次揮手?

   A:因為當服務器端收到客戶端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當服務器端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴客戶端,"你發的FIN報文我收到了"。只有等到服務器端所有的報文都發送完了,才能發送FIN報文,因此不能一起發送。故需要四次揮手。

4 Reference

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM