1. 程式人生 > >在抓包中學習網路(1)

在抓包中學習網路(1)

此次我們分析的一段資料包如下:

序號包5-13是一個連線釋放過程。

序號5包:

我們可以看到,這是ip為17.252.201.246的主機向本地主機發送的TLSv1.2的資料包。

TLS

安全傳輸層協議(TLS)用於在兩個通訊應用程式之間提供保密性和資料完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。其前身為安全套接層(Secure Sockets Layer,縮寫作SSL)。TLSv1.2是由2008使用至今,而TLSv1.3也在今年進行了釋出。

TLS 1.2在RFC 5246中定義,於2008年8月發表。它基於更早的TLS 1.1規範。主要區別包括:

  • 可使用密碼組合選項指定偽隨機函式使用SHA-256替換MD5-SHA-1組合。

  • 可使用密碼組合選項指定在完成訊息的雜湊認證中使用SHA-256替換MD5-SHA-1演算法,但完成訊息中雜湊值的長度仍然被截斷為96位。

  • 在握手期間MD5-SHA-1組合的數字簽名被替換為使用單一Hash方法,預設為SHA-1。

  • 增強伺服器和客戶端指定Hash和簽名演算法的能力。

  • 擴大經過身份驗證的加密密碼,主要用於GCM和CCM模式的AES加密的支援。

  • 新增TLS擴充套件定義和AES密碼組合。所有TLS版本在2011年3月釋出的RFC 6176中刪除了對SSL的相容,這樣TLS會話將永遠無法協商使用的SSL 2.0以避免安全問題。

SSL的握手過程:

 

因為資料包是分層次的,我們必然也遵循這一原則。

資料鏈路層,傳輸的基本單位是幀。

乙太網

可看到路由器和主機的mac地址。Destination報文:f0 18 98 09 4c 65,Source報文:c4 47 3f 47 33 46

接著是兩個位元組的資料型別欄位:0800,上層ARP

網路層IP

結合原始的資料報進行分析:

4(IPv4)5(*4位元組=20位元組長的IP首部)00(服務型別) 0053(53H=83位元組的報文總長度)

1fa6(16位元的標識,必須不加修改的放到各個分片)4(前三位001,為1,即為不可分片)000(片偏移量:0*8位元組)

30(TTL為48)06(協議欄位,06為TCP,01ICMP,04IP,17UDP)16 0c(首部校驗和,此處可以降低路由器負擔)

11 fc c9 f6(源IP地址) 0a 50 2e b1(目的IP地址)

傳輸層

TCP:TCP是面向連線的,提供可靠的服務,只能進行點到點的通訊,是面向位元組流的。

01 bb(源埠為443)c4 47(目的埠50247)

1a 5e 49 88(本報文段所傳送資料的第一個位元組的序號)

24 ca f3 e9(期望收到的下一報文段首部的序號欄位的值)

8(首部長度為8*4位元組=32位元組)018(0000【URG:NO】1【ACK:YES】1【PSH:YES】0【RST:NO】0【SYN:NO】0【FIN:NO】B) 00 3d(接收視窗的大小為61)

8b 80(校驗和)00 00(緊急指標)

……

SSL

事實上,SSL/TLS工作在傳輸層

本次TLS結果為 訊息:服務端通知客戶端Encrypted Alert(沒有發資料),客戶端斷開連線。

正常情況下會商討一個關於加密應用的Data。

序號6包:

從序號6包中可以看到主機10向主機17的443埠作出了基於序號為5的包的回覆,是一個ACK包,並將WIN=4095進行了傳送,這符合TCP中的確認機制,還發送了seq=1欄位,Ack=32欄位。

序號7包:

進行連線釋放階段,主機17傳送資料完畢,向主機10發了連線釋放的訊息,FIN=1,Ack=1,Seq=32。

序號8包:

主機10對主機17進行了連線釋放,ACK=1,Ack=33,Seq=1

序號包10:

主機10對主機17連線釋放的迴應,ACK=1,FIN=1,Ack=33(主機17的Seq加1),Seq=33

包11-12:

這是兩個超時重傳包

包13:

RST包表明TCP連接出現了嚴重差錯,需要重新建立連線。

在上網過程中出現的這次連線釋放應該是不正常的,生活千奇百態,重要的是我們能學到東西。