在瀏覽器中輸入一個地址,會發生什么呢?(DNS、TCP、SSL/TLS、HTTP)


1、在瀏覽器輸入一個地址,並回車。

  • 解析url
  • 檢查緩存,如果緩存有,則直接讀取緩存,緩存沒有則進行DNS解析
  • 進行DNS域名解析
  • 瀏覽器發起TCP三次握手
  • 握手成功后如果有TLS/SSL,則進行SSL握手
  • 握手成功后發送HTTP請求
  • 返回HTTP響應
  • 瀏覽器解碼響應,如果響應可以緩存,則存入緩存
  • 瀏覽器發送請求獲取HTML中的資源(html、css、圖片、音樂等)
  • 瀏覽器發送一異步請求
  • 頁面渲染結束

 DNS解析:

DNS是將域名轉換為IP地址。而我們DNS的服務器IP地址與我們域名對應的IP地址可能不是一個。通過nslookup我們可以查詢對應的DNS服務器的IP地址是多少(每個機器使用的DNS服務器可能不一樣)

 這個時候,也就是我們是通過114.114.114.114這個dns resolver服務器去進行域名解析的。而域名解析的過程又是遞歸查詢的(通過root根域名查詢是generic domains【.com;.edu;.net等】還是country domains【.de;.fr;.ch等】;再根據二級域名再進行查詢)

如圖:通過wireshark抓包顯示DNS數據,我們也可以看到dns是通過114.114.114.114這個地址進行解析的,而110.242.68.3/110.242.68.4才是百度對應的服務器

 

 

 

DNS是基於UDP報文進行傳輸的

 

 

 

 TCP建連

使用TCP前,必須建立連接。三次握手的目的是同步Sequence序列號(ISN)、交換TCP通訊參數

SYN是同步幀、ACK是確認幀

第一次握手:SYN為1,ACK為0

第二次握手:SYN為1,ACK為1

第三次握手:SYN為0,ACK為1

 

 

 三次握手中的狀態包含CLOSED、LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLISHED(狀態可以通過netstat命令查看)

 

最開始TCP的狀態都是CLOSED,由於server要進行監聽所以會有一個LISEN狀態,三次握手完成后會進入ESTABLISHED狀態

 

TLS/SSL握手

tcl和ssl的作用都有認證、數據加密、安全等功能。https就相當於是http協議與tls/ssl協議的組合

一般來說tls/ssl握手主要client hello、server  hello,server發送公鑰證書、server秘鑰交換

SSL是一個介於HTTP協議與TCP之間的一個可選層

 HTTP

 HTTP主要分為請求和響應兩個部分,在wireshark中我們可以查看請求對應的響應信息。

 

 

 

 

TCP拆連(四次揮手)

TCP四次揮手是為了防止數據丟失、與應用層進行交互

FIN:結束、ACK:確認

 

 

 

 

 

 

參考資料:

https://time.geekbang.org/course/intro/100026801

https://zhuanlan.zhihu.com/p/102392474?utm_source=wechat_session&utm_medium=social&s_r=0

https://blog.csdn.net/sarafina527/article/details/89333536

https://segmentfault.com/a/1190000002554673

https://www.cnblogs.com/mq0036/p/11187138.html

https://blog.csdn.net/daaikuaichuan/article/details/83475809?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242.1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM