本篇呢:主要是對自己最近提升自己知識儲備能力的一個分享登淘,雖然說吧,我們大學學習《計算機網(wǎng)絡(luò)》這門可能流译,自從步入到 JAVA 的開發(fā)過程中逞怨,接觸微服務(wù)、消息中間件福澡、緩存中間件等叠赦。始終沒有 GET 到當初學它有什么卵用?讓我來帶領(lǐng)你進入你未知的時間革砸,打開你未知的大門除秀,收獲未知的技能。
1业岁、一次完整的HTTP網(wǎng)絡(luò)請求過程
同樣這個也是面試幾乎都會問到的技能之一鳞仙,雖然看起來很簡單,但其實都是連鎖反應(yīng)笔时,問完就可以無縫銜接 三次握手棍好、四次揮手 的知識點上。
從我們在瀏覽器的地址欄輸入 http://blog.csdn.net/seu_calvin 后回車允耿,到我們看到該博客的主頁借笙,這中間經(jīng)歷了什么呢?簡單地回答這個問題较锡,大概是經(jīng)歷了 域名解析
(根據(jù)域名獲取 IP 地址)业稼、TCP的三次握手
、建立TCP連接后發(fā)起HTTP請求
蚂蕴、服務(wù)器響應(yīng)HTTP請求
低散、瀏覽器解析html代碼
,同時請求html代碼中的資源(如js骡楼、css熔号、圖片等)
、最后瀏覽器對頁面進行渲染并呈現(xiàn)給用戶
鸟整。下面分別介紹一下每個過程引镊。
- 域名解析
- a、Chrome瀏覽器會首先搜索瀏覽器自身的DNS緩存篮条,大概能存儲1000條, 如果在 a 中未找到弟头,那么會搜索操作系統(tǒng)的 DNS 緩存
- 如果 還未找到,會嘗試讀取 操作系統(tǒng)的 hosts 文件涉茧,找到對應(yīng)的 ip 地址
- 如果 c 中未找到赴恨,瀏覽器首先會找 TCP/IP 參數(shù)中設(shè)置的 本地DNS 服務(wù)器,如果要查詢的域名包含在本地配置的區(qū)域資源中伴栓,則完成域名解析嘱支,否則根據(jù)本地的DNS 服務(wù)器會請求根 DNS 服務(wù)器蚓胸。
- 本地DNS會把請求發(fā)至13臺根DNS,根DNS服務(wù)器收到請求后會返回負責這個域名(.net)的服務(wù)器的一個IP除师,本地DNS服務(wù)器使用該IP信息聯(lián)系負責.net域的這臺服務(wù)器沛膳。這臺負責.net域的服務(wù)器收到請求后,如果自己無法解析汛聚,會返回.net域的下一級DNS服務(wù)器地址(blog.csdn.net)給本地DNS服務(wù)器锹安。以此類推,直至找到倚舀。
2叹哭、TCP/IP 協(xié)議的三次握手 和 四次揮手。
學 三次握手 和 四次揮手之前痕貌,首先你應(yīng)該對 報文 格式有一定的了解风罩,
請求報文:主要有幾部分構(gòu)成,第一個 就是 16位源端口號舵稠、16位目的端口號