TCP協議棧知識實例

本文會介紹TCP協議知識,並介紹wireshark中相關知識,HTTPS也會提及

這裏寫圖片描述

衆所周知,tcp是面向連接的協議,在開始傳輸信息前需要建立一個虛擬鏈路

何爲虛擬鏈路 物理鏈路就是切實存在的,比如網線,電流(信息)在其中傳輸。 虛擬鏈路是一條虛擬的,但是會對tcp傳輸起到重要作用的。

結合圖片中的第一個tcp請求,是客戶端對服務端發起的SYN包

SYN(synchronous)的請求中Info的一些信息的含義

57820443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1

源端口 57820

Seq=0 sequence num 序號
Win=64240 Window size value: 64240
Len=
MSS=1460 Maximum segment size: 1460 bytes

WS=256 窗口擴大選項(Window scaling) TCP報文的窗口大小字段佔16位,即最大值是65535,但隨着時延和帶寬比較大的通信產生(如衛星通信),需要更大的窗口滿足性能和吞吐率,這就是窗口擴大選項存在的意義

服務端收到請求後,返回一個標誌爲SYN+ACK包。
這裏可以分開看ACK標籤表明服務端收到客戶端的請求,並且做好連接準備,開始分配資源。狀態爲SYN_RECV(這也是可以進行syn flood攻擊的原因)
SYN標籤相當於此時服務端對客戶端的請求連接。

第三次握手的ACK包則是客戶端對服務器說已經準備好了。此時客戶端狀態establishment。

HTTPS使用的TLSv1.2

TLS的歷史
1995: SSL 2.0, 由Netscape提出,這個版本由於設計缺陷,並不安全,很快被發現有嚴重漏洞,已經廢棄。
1996: SSL 3.0. 寫成RFC,開始流行。目前(2015年)已經不安全,必須禁用。
1999: TLS 1.0. 互聯網標準化組織ISOC接替NetScape公司,發佈了SSL的升級版TLS 1.0版.
2006: TLS 1.1. 作爲 RFC 4346 發佈。主要fix了CBC模式相關的如BEAST攻擊等漏洞
2008: TLS 1.2. 作爲RFC 5246 發佈 。增進安全性。目前(2015年)應該主要部署的版本,請確保你使用的是這個版本
2015之後: TLS 1.3,還在制訂中,支持0-rtt,大幅增進安全性,砍掉了aead之外的加密方式
由於SSL的2個版本都已經退出歷史舞臺了,所以本文後面只用TLS這個名字。 讀者應該明白,一般所說的SSL就是TLS。

在三次握手之後,如果是應用層是HTTP協議,此時可能已經進行了數據傳輸,而TLS協議爲了確保HTTP傳輸的安全性,肯定是在HTTP信息開始之前連接的。

這裏看到客戶端對服務端,Client Hello.同時客戶端發送了一組自己支持的加密算法給服務端,包含在字段 signature_algorithms中。

服務端回覆給客戶端server hello

參考資料

https通信幹了些什麼https://www.guokr.com/post/114121/

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