基於winpcap獲取設備列表

1.實驗目的:

理解TCP報文首部格式和字段的作用,TCP連接的建立和釋放過程,TCP數據傳輸過程中編號與確認的過程。

2. 原理

CPTransmission ControlProtocol 傳輸控制協議)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETFRFC 793定義。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能,用戶數據報協議(UDP)是同一層內 另一個重要的傳輸協議。在因特網協議族(Internetprotocol suite)中,TCP層是位於IP層之上,應用層之下的中間層。不同主機的應用層之間經常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機制,而是提供不可靠的包交換。

TCP頭格式

wKioL1hQ_bOiBP9YAAN8ABWVeEw729.png-wh_50

---Source Port是源端口,16位。

---Destination Port是目的端口,16位。

---Sequence Number是發送數據包中的第一個字節的序列號,32位。

---Acknowledgment Number是確認序列號,32位。

---Data Offset是數據偏移,4位,該字段的值是TCP首部(包括選項)長度除以4

---標誌位: 6位,URG表示UrgentPointer字段有意義:

ACK表示AcknowledgmentNumber字段有意義

PSH表示Push功能,RST表示復位TCP連接

SYN表示SYN報文(在建立TCP連接的時候使用)

FIN表示沒有數據需要發送了(在關閉TCP連接的時候使用)

Window表示接收緩衝區的空閒空間,16位,用來告訴TCP連接對端自己能夠接收的最大數據長度。

---Checksum是校驗和,16位。

---Urgent Pointers是緊急指針,16位,只有URG標誌位被設置時該字段纔有意義,表示緊急數據相對序列號(Sequence Number字段的值)的偏移。

連接建立

TCP是因特網中的傳輸層協議,使三次握手協議建立連接。當主動方發出SYN連接請求後,等待對方回答。

wKioL1hQ_f7BUBDHAAAal6jh3j4743.gif-wh_50


SYN+ACK ,並最終對對方的 SYN 執行 ACK 確認。這種建立連接的方法可以防止產生錯誤的連接,TCP使用的流量控制協議是可變大小的滑動窗口協議。

TCP三次握手的過程如下:

客戶端發送SYNSEQ=x)報文給服務器端,進入SYN_SEND狀態。

服務器端收到SYN報文,迴應一個SYN SEQ=yACK(ACK=x+1)報文,進入SYN_RECV狀態。

客戶端收到服務器端的SYN報文,迴應一個ACK(ACK=y+1)報文,進入Established狀態。

三次握手完成,TCP客戶端和服務器端成功地建立連接,可以開始傳輸數據了。

wKioL1hQ_ifhe1x9AAFUSQRv1bE977.jpg-wh_50

連接終止

建立一個連接需要三次握手,而終止一個連接要經過四次握手,這是由TCP的半關閉(half-close)造成的。具體過程如下圖所示。

wKiom1hQ_kThnpEAAAAjgBIcEMw238.gif-wh_50


(1) 某個應用進程首先調用close,稱該端執行主動關閉active close)。該端的TCP於是發送一個FIN分節,表示數據發送完畢。

(2) 接收到這個FIN的對端執行 “被動關閉passiveclose),這個FINTCP確認。

注意:FIN的接收也作爲一個文件結束符(end-of-file)傳遞給接收端應用進程,放在已排隊等候該應用進程接收的任何其他數據之後,因爲,FIN的接收意味着接收端應用進程在相應連接上再無額外數據可接收。

(3) 一段時間後,接收到這個文件結束符的應用進程將調用close關閉它的套接字。這導致它的TCP也發送一個FIN

(4) 接收這個最終FIN的原發送端TCP(即執行主動關閉的那一端)確認這個FIN

既然每個方向都需要一個FIN和一個ACK,因此通常需要4個分節。

窗口確認

TCP的一項功能就是確保每個數據段都能到達目的地。位於目的主機的TCP服務對接受到的數據進行確認,並向源應用程序發送確認信息。

wKiom1hQ_najs3-7AABIycWke9M165.png-wh_50

配置TCP

修改建立TCP連接的超時時間

建立TCP連接需要經過三次握手:主動端先發送SYN報文,被動放回應SYN+ACK報文,然後主動端再回應ACK 

l在主動端發送SYN後,如果被動端一直不迴應SYN+ACK報文,主動端會不斷的重傳SYN報文直到超過一定的重傳次數或超時時間。

l在主動端發送SYN後,被動端迴應SYN+ACK報文,但主動端不再回復ACK,被動端也會一直重傳直到超過一定的重傳次數或超時時間。(SYN報文***會出現這種情況)

可以通過以下命令配置SYN報文的超時時間(發送SYN報文到三次握手成功的最大時間),也就是建立TCP連接的超時時間。

 

3.實驗步驟:

(1)啓動tcp協議分析軟件,並開始抓包。

(2)啓動某個基於TCP的應用程序,例如連接某個FTP站點,或通過瀏覽器訪問某個網頁。

(3)等出現瀏覽的網頁後停止數據包的捕獲。

(4)出現協議分析界面,將filter 一欄填入tcp則只顯示TCP協議信息,通過此信息,可以看到TCP連接的三次握手過程和協商的初始的序列號,數據傳輸過程以及拆除連接的相應信息。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章