使用wireshark 抓取 http https tcp ip 協議進行學習
前言
本節使用wireshark工具抓包學習tcp ip http 協議
1. tcp
1.1 tcp三次握手在wireshark中的體現
1.1.1 三次握手過程
1.1.1 wireshark中三次握手過程
在wireshark中抓一次三次握手過程
-
客戶端
客戶端發送SYN=1 的請求連接的標記位,以及一個隨機序列號X
-
服務端
服務端發送一個ACK標志位(ack之前的syn),隨之一個ack號碼為X+1 確認接收到
並且也會發送一個和當時客戶端建立連接時相同的動作,發送SYN號碼表示要和客戶端進行連接,並且從新生成一個隨機序列號Y
-
客戶端
接受到后Ack服務端的SYN 返回ACK標志碼並且把Y+1進行ack返回,並且發送序列號為當初的x+1
序列號使用來記錄"對方期待的序列號" 發送方第一次和第二次的序號相差第一次發送的數據長度,
當發送 SYN或 FIN時長度為空時,也占一個長度,下次加一
其中的FLag位
占六位 依次為 URG、ACK、PSH、RST、SYN、FIN。
換算成十六進制此處如果是SYN則為0x02 ACK為 0x10 ,既有SYN也有ACK則為0x12
1.2 tcp協議組成部分
- 頭部20字節
1.3 四次揮手過程
-
發送方 發送FIN標記 需要釋放連接 seq=u (此時代表發送方的數據都發送完成了)
此時發送方進入連接結束的第一個等待狀態 FIN-WAIT-1
-
接收方 ACK標記 seq=v ack =u+1
- 發送方在接受到接受方這個報文時進入第二個等待狀態 FIN-WAIT-2
- 發送方在發送完這個報文后進入關閉等待的狀態 CLOSE-WAIT
- 接受方發送FIN報文 (此時他的全部數據也都發送完成了)
- 發送方發送FIN=1 ACK=1 seq=w ack = u+1 (重復對當時發送方的報文ack)
- 此時接收方進入最后確認狀態 LAST-ACK 等待發送方的確認
- 連接方發送確認斷開
- ACK=1 seq=u+1 ack=w+1
2. ip協議
2.1 ip協議組成部分
- IPv4的頭部結構長度為20字節,若含有可變長的選項部分,最多60字節。
3. http協議
- http://<主機>:<端口>/<路徑>
主機可以是ip或域名,DNS會將域名轉化為ip - HTTP請求的方法
- http的協議
4. https協議
- http明文傳輸不安全 通過SSL對數據進行加密 加密后的數據傳輸更加安全
- 非對稱加密:加密和解密使用的鑰匙不一樣 (公鑰 私鑰)
- 對稱加密則是加密解密使用相同的密鑰
- https 綜合的使用了非對稱加密和對稱加密,並且他們生成的密鑰沒有經過傳輸
4.1 https協議組成部分
https 為http上加了一層SSL SSL 可以是TSL協議,在443端口TCP三次握手后會建立SSL連接
4.2 https協議的流程
-
客戶端發送Clien Hello
生成隨機數 1 。協議版本 支持的加密算法
-
服務器
生成隨機數2,3 確認客戶端加密的算法 數字證書
3.客戶端檢查
- 確認整數是否有效
- 生成隨機數3
- 使用服務器的公鑰(證書中取出)加密隨機數3
- 發送給服務端 此時服務端和客戶端都同時擁有了隨機數1 2 3
此后就根據隨機數1 2 3 和相同的加密算法生成對稱密鑰
后續
5. udp
- 頭部 8 字節
一字節8位
結語
文章簡要的對http https tcp udp ip 協議的內容以及交互流程進行了解讀。如果有問題和疑問請在評論區指出,多謝大神指教。