前言:在Java面試中,計算機網絡的知識也是一項重點,所以筆者在此對計算機網絡的相關知識進行總結。html
自下而上:物理層(物理介質,比特流)、數據鏈路層(網卡、交換機)、網絡層(IP協議)、傳輸層(TCP/UDP協議)、會話層(建立/創建/斷開鏈接)、表示層(翻譯,編碼,壓縮,加密)、應用層(HTTP協議)。面試
簡化爲TCP/IP模型:網絡層(物理層、數據鏈路層、網絡層)、傳輸層,會話層,應用層(表示層,應用層)。數據庫
參考:緩存
http://www.javashuo.com/article/p-hbpgmbql-dd.html服務器
做用:傳輸層爲它上面的應用層提供通訊服務。網絡
在OSI七層參考模型中,傳輸層是面向通訊的最高層,也是用戶功能的最底層。tcp
傳輸層兩大重要的功能:複用和分用。 ui
1)複用:在發送端,多個應用進程公用一個傳輸層。編碼
2)分用:在接收端,傳輸層會根據端口號將數據分派給不一樣的應用進程。加密
和網絡層的區別:
1)網絡層爲不一樣主機提供通訊服務,而傳輸層爲不一樣主機的不一樣應用提供通訊服務。
2)網絡層只對報文頭部進行差錯檢測,而傳輸層對整個報文進行差錯檢測。
參考:
http://www.javashuo.com/article/p-pgzcdzfp-mo.html
注:該博文中給出了較爲詳細的傳輸層知識點。
在tcp創建鏈接時,須要進行「三次握手」。關於「三次握手」的通俗理解:「你有空嗎」,「我有空」,「OK,我來了」。
在tcp斷開鏈接時,須要進行「四次揮手」。關於「四次揮手」的通俗理解:「我要走了」,「沒問題」,「不忙,他也要走」,「好,那我和他一塊兒走」。
參考:
http://www.javashuo.com/article/p-diizpmsc-bm.html
http://www.javashuo.com/article/p-pgzcdzfp-mo.html
長鏈接:指在一個TCP鏈接上能夠連續發送多個數據包,在TCP鏈接保持期間,若是沒有數據包發送,須要雙方發檢測包以維持此鏈接。
在數據庫鏈接池中,通常使用的是長鏈接,這樣比較節約資源。
短鏈接:短鏈接是指通訊雙方有數據交互時,就創建一個TCP鏈接,數據發送完成後,則斷開此TCP鏈接。
參考:
http://www.javashuo.com/article/p-vobwkkvc-dq.html
要點:
1)HTTP是一個無狀態協議,爲應用層協議,基於TCP/IP之上。
2)HTTP的一個工做過程分爲:地址解析、封裝HTTP請求數據包、經過TCP創建鏈接、客戶端發送請求指令、服務器響應、服務器關閉鏈接。
參考:
https://blog.csdn.net/hguisu/article/details/8680808
要點:
1)請求由請求行、請求頭和請求正文組成。
2)響應由狀態行、消息報頭和響應正文組成。
3)緩存能夠提升了訪問的流暢性。
參考:
https://blog.csdn.net/hguisu/article/details/8683290
要點:
HTTP1.0每對Request/Response都使用一個新的鏈接。
HTTP1.1則支持持久鏈接Persistent Connection, 而且默認使用Persistent connection.
參考:
https://blog.csdn.net/hguisu/article/details/8608888
主要在加解密的過程。
參考:
http://www.liqwei.com/network/protocol/2012/906.shtml
by Shawn Chen,2018.4.6日,晚。