通常由http客戶端發起請求,創建端口(即手機電腦等使用瀏覽器打開一個頁面)
這時,http服務器就在端口監聽客戶端請求。
監聽到之后,http服務器就向客戶端返回狀態(如200)和內容(請求的文件,錯誤信息等)。
當輸入網址回車,或刷新頁面的時候,計算機和瀏覽器做了哪些事情呢?
首先是域名解析。
第一步,假設我們用的chrom瀏覽器。
1.chrom會搜索自身的dns緩存。
2.搜索操作系統自身的dns緩存
這個緩存時間大概是一分鐘,如果有緩存,那就看緩存有沒有過期,如果過期了,那這個過程就結束了。
如何看chrom有沒有緩存呢?
我們打開chrom瀏覽器,輸入chrome://net-internals/#dns
這里就可以查看你曾經瀏覽過的網站的dns記錄。
如果瀏覽器沒有找到緩存或緩存已經失效,那么chrom會搜索操作系統自身的一個dns緩存,如果找到,也沒有過期,那就會停止搜索,然后解析也到此結束。
3.如果操作系統也沒有找到dns緩存,chrom就會嘗試讀取本地的host文件,
4.如果在host里面也沒有找到對應的配置項,瀏覽器就會發起一個dns的系統調用,就會向本地主控的dns服務器,一般來說是你的寬帶運營商提供的, 發起一個域名解析請求。
運營商的域名解析服務器一般會:(以www.imooc.com為例)
1)查找自身的緩存,找到對應的條目,如果說也沒有過期,那么就解析成功了。
2)如果沒有找到這個條目,運營商的dns服務器會代替我們的瀏覽器發起一個迭代的dns解析的請求。
它首先會去找根域的dns IP地址,詢問imooc.com的域名地址,根域發現這是一個頂級域(com域)的域名,于是就回復運營商的服務器說,我只知道com域的頂級域的IP地址。
然后運營商拿到了com域的頂級域的IP地址,然后就去問它,com域回復說,他只知道imooc.com的dns服務器的地址。
隨后運營商的主控dns服務器就找到imooc.com這個域的dns服務器,這個一般是域名的注冊商提供的,詢問imooc.com的域名地址,imooc.com服務器查找到之后,將此發送給運營商的服務器。
運營商服務器把記過返回給操作系統內核,同時也緩存在了自己的緩存區(這個緩存可能會失效,根據它的時間長短)
操作系統的內核又把這個Ip地址返回給瀏覽器。
最終瀏覽器拿到了www.imooc.com對應的IP 地址。
5.瀏覽器獲得域名對應的IP地址后,就要發起TCP“三次握手”
瀏覽器就會以一個隨機端口,向web服務器(比如nginx 80端口)發起一個tcp的的鏈接請求。
這個TCP連接請求就會經過層層的路由設備到達服務器端以后,進入到網卡,然后進入到內核的TCP/IP協議棧,還有可能要經過防火墻的過濾,最終到了web 服務端,最終建立了tcp/ip的連接。
這三次握手都做了什么呢?
客戶端對服務器說“你能聽到我說話么?咱倆聊會唄”
服務器對客戶端說“我能聽到你說話。咱倆聊會”
然后客戶端再對服務器說“好的,開始聊天吧!”
6.TCP/IP連接建立起來后,瀏覽器就可以向服務器發送HTTP請求了,比如說,用HTTP的get方法請求一個根域里的一個域名,協議可以采用HTTP 1.0的一個協議。
7.服務器端接受到了這個請求,根據路徑參數,經過后端的一些處理之后,把處理后的一個結果的數據返回給瀏覽器,如果是慕課網的頁面,就會把完整的HTML頁面代碼返回給瀏覽器。
8.瀏覽器拿到了完整的HTML頁面代碼。在解析和渲染這個頁面的時候,里面的JS,CSS ,圖片等靜態資源,他們同樣也是一個個HTTP請求,都需要經過上面主要的七個步驟。
9.瀏覽器根據拿到的資源對頁面進行渲染,最終把頁面呈現給用戶。
HTTP劃分為請求和響應。
無論請求或響應,都具有http頭和正文信息。(這兩者是相同的)
http頭發送的是一些附加的信息:比如內容類型,服務器發送響應的日期,HTTP狀態碼
正文就是用戶提交的表單數據,或者說是一個返回的數據。
相信看了本文案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!
推薦閱讀:
HTTP的基礎知識
javaScript的對象詳解
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com