
1.DNS解析
解析順序
1) 瀏覽器緩存
當用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的緩存中查找是否有該域名對應的IP地址(若曾經(jīng)訪問過該域名且沒有清空緩存便存在);
2) 系統(tǒng)緩存
當瀏覽器緩存中無域名對應IP則會自動檢查用戶計算機系統(tǒng)Hosts文件DNS緩存是否有該域名對應IP;
3) 路由器緩存
當瀏覽器及系統(tǒng)緩存中均無域名對應IP則進入路由器緩存中檢查,以上三步均為客服端的DNS緩存;
4) ISP(互聯(lián)網(wǎng)服務提供商)DNS緩存
當在用戶客服端查找不到域名對應IP地址,則將進入ISP DNS緩存中進行查詢。比如你用的是電信的網(wǎng)絡,則會進入電信的DNS緩存服務器中進行查找;
5) 根域名服務器
當以上均未完成,則進入根服務器進行查詢。全球僅有13臺根域名服務器,1個主根域名服務器,其余12為輔根域名服務器。根域名收到請求后會查看區(qū)域文件記錄,若無則將其管轄范圍內(nèi)頂級域名(如.com)服務器IP告訴本地DNS服務器;
6) 頂級域名服務器
頂級域名服務器收到請求后查看區(qū)域文件記錄,若無則將其管轄范圍內(nèi)主域名服務器的IP地址告訴本地DNS服務器;
7) 主域名服務器
主域名服務器接受到請求后查詢自己的緩存,如果沒有則進入下一級域名服務器進行查找,并重復該步驟直至找到正確紀錄;
8)保存結(jié)果至緩存
本地域名服務器把返回的結(jié)果保存到緩存,以備下一次使用,同時將該結(jié)果反饋給客戶端,客戶端通過這個IP地址與web服務器建立鏈接。
2.TCP/IP請求
三次握手的步驟:(抽象派)
客戶端:hello,你是server么?
服務端:hello,我是server,你是client么
客戶端:yes,我是client
建立連接成功后,接下來就正式傳輸數(shù)據(jù)
然后,待到斷開連接時,需要進行四次揮手(因為是全雙工的,所以需要四次揮手)
四次揮手的步驟:(抽象派)
主動方:我已經(jīng)關(guān)閉了向你那邊的主動通道了,只能被動接收了
被動方:收到通道關(guān)閉的信息
被動方:那我也告訴你,我這邊向你的主動通道也關(guān)閉了
主動方:最后收到數(shù)據(jù),之后雙方無法通信
tcp/ip的并發(fā)限制:瀏覽器對同一域名下并發(fā)的tcp連接是有限制的(2-10個不等)

3.簡括就是:
從應用層的發(fā)送http請求,到傳輸層通過三次握手建立tcp/ip連接,再到網(wǎng)絡層的ip尋址,再到數(shù)據(jù)鏈路層的封裝成幀,最后到物理層的利用物理介質(zhì)傳輸。
五層因特爾協(xié)議棧其實就是:
1.應用層(dns,http) DNS解析成IP并發(fā)送http請求
2.傳輸層(tcp,udp) 建立tcp連接(三次握手)
3.網(wǎng)絡層(IP,ARP) IP尋址
4.數(shù)據(jù)鏈路層(PPP) 封裝成幀
5.物理層(利用物理介質(zhì)傳輸比特流) 物理傳輸(然后傳輸?shù)臅r候通過雙絞線,電磁波等各種介質(zhì))
當然,其實也有一個完整的OSI七層框架,與之相比,多了會話層、表示層。
4.負載均衡
而從服務器接收到請求到對應后臺接收到請求會涉及到“負載均衡”。
簡單的說:
用戶發(fā)起的請求都指向調(diào)度服務器(反向代理服務器,譬如安裝了nginx控制負載均衡),然后調(diào)度服務器根據(jù)實際的調(diào)度算法,分配不同的請求給對應集群中的服務器執(zhí)行,然后調(diào)度器等待實際服務器的HTTP響應,并將它反饋給用戶
5.后臺的處理
&一般有的后端是有統(tǒng)一的驗證的,如安全攔截,跨域驗證
&如果這一步不符合規(guī)則,就直接返回了相應的http報文(如拒絕請求等)
&然后當驗證通過后,才會進入實際的后臺代碼,此時是程序接收到請求,然后執(zhí)行(譬如查詢數(shù)據(jù)庫,大量計算等等)
&等程序執(zhí)行完畢后,就會返回一個http響應包(一般這一步也會經(jīng)過多層封裝)
&然后就是將這個包從后端發(fā)送到前端,完成交互
附一張請求的http報文結(jié)構(gòu)的圖

。。。以后再補充