大家平時上網(wǎng)只是知道輸入網(wǎng)址然后回車就顯示網(wǎng)頁出來芯丧,但是有沒有注意這背后到底發(fā)生什么事情呢?來來來世曾,今天給大家介紹一下
上面這張圖是簡單的介紹HTTP協(xié)議的步驟缨恒,具體里面的細節(jié)還是有很多的,下面這張圖就是詳細的介紹了整個流程的細節(jié)
1.Prompt for unload : 在前一個頁面加載之前轮听,初始化頁面骗露,是預先加載一些前一個頁面與下一個頁面的公共數(shù)據(jù),及初始化上下文
2.redirect:頁面重定向
2.1:redirectStart是否做過緩存血巍,做過緩存就做本地跳轉開始
2.2:redirectEnd是否做過緩存萧锉,做過緩存就做本地跳轉結束
3.APP cache:頁面緩存,是緩存就從緩存中拿數(shù)據(jù)述寡,沒有緩存就略過這步驟
3.1:fetchStart 拿緩存數(shù)據(jù)開始
4.DNS:DNS解析
4.1:domainLookupStart DNS域名解析開始
4.2:domainLookupStart DNS域名解析結束
5.TCP:進行TCP三次握手柿隙,創(chuàng)建HTTP通路
5.1:connectStart TCP連接開始
5.2:secureConnectionStart TCP安全連接開始
5.1:connectEnd TCP連接結束
6.Request:請求數(shù)據(jù)
6.1:requestStart:請求開始
7.Response:服務器返回數(shù)據(jù)
7.1:responseStart:返回數(shù)據(jù)開始
7.2:responseEnd:返回數(shù)據(jù)結束
8.Processing:加載dom骨架
8.1:domloading 正在形成dom樹結構
8.2:domInteractive 完成dom樹結構
8.3:domContentLoaded 正在加載dom樹內容
8.4:domComplete dom樹結構和內容加載完成
(記得叶洞,Processing這個過程只是加載dom樹結構,對于加載css和js這些是在onload之后加載進來的)
9.onload:頁面渲染
9.1:loadEventStart load事件加載開始
9.2:loadEventEnd load事件加載結束
10.unload:頁面卸載
10.1 unloadEventStart 卸載頁面開始
10.2 unloadEventEnd 卸載頁面結束
要進行網(wǎng)絡層的性能優(yōu)化禀崖,必須要掌握整個流程的每一個細節(jié)
DNS的數(shù)據(jù)結構
域名的分類:1.頂級域名衩辟,2.二級域名 3.三級域名
類似于baidu.com就是頂級域名 ,news.baidu.com就是二級域名帆焕,ppp.news.baidu.com就是三級域名
上面的圖就是域名樹結構惭婿,全世界只有13臺根域名服務器,13臺根域名服務器是遠遠不夠的叶雹,需要我們從根域名服務器同步數(shù)據(jù)分發(fā)到其他服務器上面去财饥,在根域名服務器里面的內容是最權威的,其他域名服務器做真正的內容解析
tcp分層
tcp數(shù)據(jù)包結構圖
序列號在tcp頭是至關重要的折晦,因為在網(wǎng)絡傳入的時候是分一段一段的數(shù)據(jù)包來傳送的钥星,有可能每一段的數(shù)據(jù)包是通過不同的路由來傳送的,這樣子序列號就起到了拿到每段數(shù)據(jù)包后满着,按照序列號來拼接數(shù)據(jù)
可以登錄linux ssh root@120.78.73.247
使用traceroute www.baidu.com就可以把訪問百度的中間路由顯示出來
在window系統(tǒng) 用tracert www.baidu.com
tcp三次握手講解谦炒,tcp連接是客戶端發(fā)起的,先發(fā)起連接請求SYN seq=x风喇,服務器通過ACK(應答號) = x+1返回給客戶端SYN seq = y 客戶端又發(fā)送ACK = y+1給服務器宁改,服務器接收到應答,雙方連接成功魂莫,三次握手完成还蹲,然后進行數(shù)據(jù)傳輸
為什么第三次握手還要想客戶端發(fā)信息來確認的,因為在tcp下面還有三層耙考,如果下面的層不穩(wěn)定谜喊,tcp連接也需要重新建立
如果第三步失敗了,客戶端認為連接是成功的倦始,但是服務器認為是失敗的斗遏,所以客戶端還是會發(fā)送數(shù)據(jù)給服務器,但是服務器認為是失敗的鞋邑,就沒有搭理客戶端诵次,所以整個tcp連接還是失敗的,需要建立tcp連接
tcp四次揮手:客戶端想服務器發(fā)起斷開請求枚碗,我要斷開了藻懒,然后服務器收到信息,想客戶端發(fā)送確認信息视译,我知道 你要斷開了,然后確認是否還有數(shù)據(jù)要給客戶端發(fā)送的归敬,如果沒有就發(fā)送第三次確認酷含,我已經沒有數(shù)據(jù)要給你了鄙早,最后客戶端給服務器發(fā)送,好的椅亚,收到了
linux下抓包
先安裝yum install tcpdump
下面是對www.baidu.com來進行抓包
先ping www.baidu.com拿到www.baidu.com的服務器的ip
然后另開一個窗口
curl http://www.baidu.com 相當于對百度一個get請求
CDN就是分布式的運用限番,一般對靜態(tài)資源放在CDN做加速,就是在不同的地方訪問呀舔,會給你請求最近的服務器
總結弥虐,上面是前端都需要了解的服務器的知識,這里只是對內容的一些見解媚赖,還需要大神們的指點