在抓包中學習網路(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規範。主要區別包括:
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連接出現了嚴重差錯,需要重新建立連線。
在上網過程中出現的這次連線釋放應該是不正常的,生活千奇百態,重要的是我們能學到東西。