http及https的 抓包分析

**

HTTP及HTTPS實驗

**
1、訪問http://wwww.qq.com和https://www.sangfor.com.cn並抓包,分析從PC訪問到結束訪問網站的全數據流過程
2、分析DNS解析過程及請求迴應報文結構,掌握DNS報文結構特徵和DNS A記錄
3、分析PC和網站建立連接和斷開連接的過程(TCP三次握手、四次揮手、RST包抓包)
4、分析HTTP和HTTPS請求報文和響應報文,分析HTTP報文常見字段
HTTP實驗:
一:首先我們打開一個新的瀏覽器輸入 http://www.qq.com 然後在後臺開啓wireshark的抓包功能,這裏我選擇WLAN(我連接的是 WiFi)。
在這裏插入圖片描述
在這裏插入圖片描述
通過cmd窗口下的ipconfig查看電腦本地IP地址爲192.168.0.14
在這裏插入圖片描述
在這裏插入圖片描述
這時我們知道了自己主機的IP及目標IP,通過瀏覽器訪問,後臺運行的抓包工具抓取流量,通過wireshark軟件目的IP篩選ip.src == 61.151.166.146 or ip.dst == 61.151.166.146到如圖所示的數據包
**

TCP的三次握手:

**
在這裏插入圖片描述
本機向服務器發送的請求,服務器返回的包:
**

http的請求報文

**
在這裏插入圖片描述
**

http的響應報文

**
在這裏插入圖片描述
**

TCP報文

**在這裏插入圖片描述

**

下面三種狀態行在響應報文中常見:

**
HTTP/1.1 202 Accepted {接受}
HTTP/1.1 400 Bad Request {錯誤的請求}
HTTP/1.1 404 Not Found {找不到}

**

http訪問過程

**
1、客戶端與服務端建立連接,TCP/IP 三次握手
2、客戶端發送請求數據
3、服務端接受並解析請求數據,作出響應
4、返回響應數據
5、斷開連接 TCP/IP 四次揮手

**

一、RST介紹

**
RST標示覆位、用來異常的關閉連接。

  1. 發送RST包關閉連接時,不必等緩衝區的包都發出去,直接就丟棄緩衝區中的包,發送RST。
  2. 而接收端收到RST包後,也不必發送ACK包來確認。
    **

二、什麼時候發送RST包

**

  1. 建立連接的SYN到達某端口,但是該端口上沒有正在 監聽的服務。
  2. TCP收到了一個根本不存在的連接上的分節。
  3. 請求超時。 使用setsockopt的SO_RCVTIMEO選項設置recv的超時時間。接收數據超時時,會發送RST包。

HTTPS實驗
1.我們打開一個新的瀏覽器輸入 https://www.sangfor.com.cn 然後在後臺開啓wireshark的抓包功能,首先,瀏覽器和服務器三握手,建立連接。
在這裏插入圖片描述
4. https的發包過程:瀏覽器先發送client hello:
客戶端給服務器發送一個隨機值random1,和加密(暗號)套件。如圖所示
在這裏插入圖片描述
5. 服務器給瀏覽器(客戶端)發送server hello
同時我們從數據包中發現服務器也給客戶端發送了一個隨機值random2和證書。
在這裏插入圖片描述
四次揮手:
在這裏插入圖片描述

RST數據包

在這裏插入圖片描述

**

DNS解析過程:

**
當你在知瀏覽器中輸入一個網址的時候,系統首先檢查本地緩存中有沒有相關的記錄如果有則直接轉道換爲IP地址進行訪回問,如果沒有則連接到你ISP的主DNS服務器進行域名解析,如果還沒有則向更上一級的DNS服務器尋找只到找到答爲止。

我們在瀏覽器訪問www.baidu.com這個域名,dns怎麼查詢到這臺主機那?DNS解析有大致幾個過程,如下:

  1. 瀏覽器先檢查自身緩存中有沒有被解析過的這個域名對應的ip地址,如果有,解析結束。同時域名被緩存的時間也可通過TTL屬性來設置。

  2. 如果瀏覽器緩存中沒有(專業點叫還沒命中),瀏覽器會檢查操作系統緩存中有沒有對應的已解析過的結果。而操作系統也有一個域名解析的過程。操作系統會先檢查自己本地的hosts文件是否有這個網址映射關係,如果有,就先調用這個ip地址映射,完成域名解析,或者在windows中可通過c盤裏一個叫hosts的文件來設置,如果你在這裏指定了一個域名對應的ip地址,那瀏覽器會首先使用這個ip地址。
    但是這種操作系統級別的域名解析規程也被很多黑客利用,通過修改你的hosts文件裏的內容把特定的域名解析到他指定的ip地址上,造成所謂的域名劫持。所以在windows7中將hosts文件設置成了readonly,防止被惡意篡改。

  3. 如果至此還沒有命中域名,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器(LDNS),這臺服務器一般在你的城市的某個角落,距離你不會很遠,並且這臺服務器的性能都很好,一般都會緩存域名解析結果,大約80%的域名解析到這裏就完成了。

  4. 如果LDNS仍然沒有命中,本地DNS就把請求發至13臺根DNS (Root Server )域名服務器請求解析, 根DNS服務器收到請求後會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息後,將會聯繫負責.com域的這臺服務器。這臺負責.com域的服務器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(baidu.com)給本地DNS服務器。當本地DNS服務器收到這個地址後,就會找baidu.com域服務器,重複上面的動作,進行查詢,直至找到www.baidu.com主機。

  5. LDNS緩存這個域名和對應的ip

  6. LDNS把解析的結果返回給用戶,用戶根據TTL值緩存到本地系統緩存中,域名解析過程至此結束

瀏覽器緩存,系統緩存,路由器緩存,IPS服務器緩存,根域名服務器緩存,頂級域名服務器緩存,主域名服務器緩存。

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