前言 :開始總結一份屬於本身的面試資料。網上雖有,可是收藏和瀏覽真的不如理解和吸納。加油、、java
OSI體系結構爲7層,這裏咱們按TCP/IP體系結構講五層來說。git
物理層 >>>數據鏈路層>>>網絡層>>>運輸層>>>應用層(表示層,會話層)github
應用層任務:經過應用進程間的通訊交互來完成特定的網絡應用
應用層協議:應用進程間的通訊交互規則
報文:應用層交互的數據單元
支持的協議有:面試
域名系統DNS:將域名和IP地址相互映射的分佈式數據庫,可以方便用戶快捷訪問。好比github,若是你再日本訪問,是訪問日本的服務器,在中國訪問的是中國服務器。因此說他是一個分佈式的。 域名協議的做用:將域名轉換爲IP地址,以找到對應的主機數據庫
HTTP協議:超文本傳輸協議,WWW(萬維網)都遵照這個協議。最初的目的是爲了發佈和接收HTML頁面。瀏覽器
應用層大白話 : 這裏能夠理解爲計算機之間的翻譯過程,將數據進行二進制編碼安全
運輸層任務:提供通用的數據傳輸服務供兩臺主機進程間的通訊
運輸層協議:運輸層數據傳輸服務規則
傳輸層有複用和分用功能;
複用:一臺主機能夠開啓多條線程,多個應用進程可同時使用傳輸服務
分用:傳輸層接收消息,根據消息的頭部信息交給正確的Socket,也就是交給相應的應用進程服務器
支持的協議有:markdown
運輸層大白話 : 傳輸層將上層數據分割成諸多數據段,方便解決出錯,且爲每段數據封裝,頭部帶有端口號cookie
網絡層任務:選擇合適的網間路由和交換節點,實現終端節點之間的通訊。
網絡層協議:網絡層傳輸規則
支持的協議:
網絡層大白話 : 網絡層將上層數據再度封裝爲IP數據報,報頭帶有IP地址,用於標識網絡邏輯地址
數據鏈路層:將數據封裝成數據幀,而後在各個鏈路上傳輸
丟幀:數據鏈路層的控制信息在接收端可以檢測數據幀中有偏差錯,若是有誤那麼丟棄這幀,以避免繼續傳輸浪費資源。若是須要更正數據,那麼就要採用可靠傳輸協議糾錯。(這就說明數據鏈路層不只能夠檢錯還能糾錯)
數據鏈路層大白話 : 數據鏈路層將上傳數據再度封裝成數據幀,其MAC頭部包含一個重要的MAC地址信息。能夠理解爲固化在硬件裏的物理地址
物理層:實現相鄰計算機節點之間比特流的透明傳輸
物理層大白話 : 將上層數據轉成電信號在網絡中傳輸
常見硬件設備與五層模型的對應關係
應用層:計算機(其實計算機是融合OSI七層於一身的)
傳輸層:防火牆
網絡層:路由器(嚴格講和咱們家裏所用的家用路由器不一致,通常在機房能夠見到)
數據鏈路層:交換機(例如家裏的光貓)
物理層:網卡
TCP三次握手簡單示意圖:
客戶端發送SYN(TCP/IP創建的握手信號) --> 服務端接收後發給客戶端SYN/ACK 消息響應表示收到了 --> 客戶端收到後向服務端發送ACK表示收到了。
SYN:表示客戶端到服務端消息無誤
ACK:表示服務端到客戶端消息無誤
TCP四次揮手簡單示意圖:
任何一方在沒有要發送消息時,均可以發送鏈接釋放通知。注意此時不是徹底關閉TCP鏈接,待對方確認後進入半關閉狀態,當另外一方也沒有消息要發送時,也發送鏈接釋放通知,此時才徹底關閉TCP鏈接。
舉例:A 和 B 打電話,通話即將結束後,A 說「我沒啥要說的了」,B回答「我知道了」,可是 B 可能還會有要說的話,A 不能要求 B 跟着本身的節奏結束通話,因而 B 可能又巴拉巴拉說了一通,最後 B 說「我說完了」,A 回答「知道了」,這樣通話纔算結束。
UDP:面向無鏈接,速率快。不可靠
TCP:在傳遞數據以前先創建鏈接,數據傳輸結束後還要釋放資源。可靠但傳輸速率相對慢。
TCP的可靠性體如今:在傳遞數據以前創建鏈接,在數據傳遞時,經過確認、窗口、重傳、擁塞機制來保證數據傳輸的可靠性。
一、DNS解析,找到對應的ip地址
二、創建TCP鏈接
三、發送HTTP請求
四、服務器處理並返回HTTP報文
五、瀏覽器解析並渲染頁面
六、鏈接結束
短鏈接:每次進行網絡請求都要創建鏈接,和中斷鏈接
長鏈接:網絡請求結束後,不會當即中斷鏈接,也不會永久保持鏈接,而是在設定的時間內,沒有傳輸時會斷開。
//使用長鏈接,會在響應頭加入這行代碼 Connection:keep-alive 複製代碼
cookie和Session都是用來跟蹤瀏覽器用戶身份的會話方式,但二者用戶場景不一樣。
URI(Uniform Resource Identifier) :是同一資源標誌符,能夠惟一標識一個資源
URL(Uniform Resource Location) :是同一資源定位符,能夠提供該資源的路徑。它是一種具體的 URI,他是URI的子類。
HTTP:超文本傳輸協議。URL以「http起始」,端口號默認80。傳輸徹底明文,不作加加密,安全性較低
HTTPS:運行在SSL/TLS上的HTTP,安全性高。URL以「https起始」,端口號默認443
對稱加密:密鑰只有一個,加密解密爲同一個密碼,加密速度快。不安全: 若是中間人從通訊開始就截取這個密鑰,那麼信息就泄漏了。
非對稱加密:密鑰公鑰有2個,加密解密使用不一樣密鑰。好比小明有密鑰A,公鑰B。把公鑰B發給小紅,小紅用公鑰B給本身的公鑰C加密,發給小明。小明用本身的密鑰A解密本身的公鑰B獲得小紅的公鑰C。之後小明給小紅髮消息用小紅的公鑰c加密,小紅給小明發消息用小明的公鑰B加密。這樣就相對安全了。其實也不絕對安全: 若是中間人把公鑰B一開是就截取,替換成本身的公鑰,發給小紅,一樣能截取信息。
SSL/TLS:和非對稱加密還不一樣,是經過瀏覽器或操做系統上的證書機構完成的。大體意思就是利用瀏覽器和證書機構的約定的公鑰加密,並生成簽名。等接收端接收後,用約定的公鑰生成簽名和接收信息簽名比對,無誤後,確認沒有被中間人劫持過,而後解密得到信息,加密傳輸信息