這個也是在前端面試中問得比較多的一個問題了,文章篇幅有限盡量關注一些前端開發中不太會遇到的知識點,若是想擴展的話請點擊引用文章吧,也歡迎評論,後續會繼續補充。
看圖的話更容易記一些,
下面將會基於這幾個過程進行描述。前端
首先須要搞明白的是,域名和ip地址是不一樣的,域名是爲了更方便記憶ip所產生的,ip纔是服務器在網絡上的真實地址。面試
IP地址是用來惟一標識互聯網上計算機的邏輯地址,讓電腦之間能夠相互通訊,每臺連網計算機都依靠IP地址來互相區分,相互聯繫。IP地址一般指的是網絡中的主機,而域名則一般表示一個網站,一個域名能夠綁定到多個ip上,多個域名也能夠綁定到一個ip上。數據庫
爲了讓域名和地址可以相互轉換,就須要對其進行映射,有兩種方式:瀏覽器
DNS(Domain Name System,域名系統),萬維網上做爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。DNS協議運行在UDP協議之上,使用端口號53。DNS可供全部網絡上的節點使用。
DNS服務器會從根域名服務器開始遞歸搜索,從.com頂級域名服務器,到baidu的域名服務器。
TCP/IP協議 / 四層模型 / 三次握手緩存
在 TCP/IP協議組 中包含一系列用於處理數據通訊的協議:服務器
如圖所示網絡
TCP / IP 協議組數據結構
- TCP/IP 意味着 TCP 和 IP 在一塊兒協同工做。
- TCP 負責應用軟件(好比你的瀏覽器)和網絡軟件之間的通訊。
- IP 負責計算機之間的通訊。
- TCP 負責將數據分割並裝入 IP 包,而後在它們到達的時候從新組合它們。
- IP 負責將包發送至接受者。
在這其中須要着重瞭解一下的就是數據是如何進行處理的、TCP、IP以及TCP和UDP的區別。併發
瀏覽器利用IP直接與網站主機通訊。瀏覽器發出TCP(SYN標誌位爲1)鏈接請求,主機返回TCP(SYN,ACK標誌位均爲1)應答報文,瀏覽器收到應答報文發現ACK標誌位爲1,表示鏈接請求確認。瀏覽器返回TCP()確認報文,主機收到確認報文,三次握手,TCP鏈接創建完成。負載均衡
在TCP鏈接創建完成後,瀏覽器向主機發起一個HTTP-GET方法報文請求。請求中包含訪問的URL,也就是http://www.baidu.com/ ,還有User-Agent用戶瀏覽器操做系統信息,編碼等。
重定向是爲了負載均衡或者導入流量,提升SEO排名。利用一個前端服務器接受請求,而後負載到不一樣的主機上,能夠大大提升站點的業務併發處理能力;重定向也可將多個域名的訪問,集中到一個站點;因爲baidu.com,www.baidu.com會被搜索引擎認爲是兩個網站,照成每一個的連接數都會減小從而下降排名,永久重定向會將兩個地址關聯起來,搜索引擎會認爲是同一個網站,從而提升排名。
瀏覽器拿到響應的頁面代碼,將其解析呈如今用戶面前。
中間會涉及到瀏覽器的渲染步驟、JS引擎、渲染引擎、事件響應等知識點。
後續會繼續補充,歡迎收藏和點贊。
參考文章
W3School - TCP/IP 簡介
一篇文章帶你熟悉 TCP/IP 協議(網絡協議篇二)