平常我們在瀏覽器中輸入乙個**,隨即看到乙個頁面,這個過程是怎樣實現的呢?下面用一幅圖來說明:
整個流程如下:
1、網域名稱解析
瀏覽器會解析網域名稱對應的ip位址
ps:dns伺服器的知識
2、建立tcp連線
拿到網域名稱對應的ip位址之後,瀏覽器會向伺服器的web程式發起tcp的連線請求。這個連線請求到達伺服器端後,進入到網絡卡,然後是進入到核心的tcp/ip協議棧,最終到達web程式,最終建立了tcp/ip的連線。
ps:在http工作開始之前,web瀏覽器首先要通過網路與web伺服器建立連線,該連線是通過tcp來完成的,該協議與ip協議共同構建internet,即著名的tcp/ip協議族,因此internet又被稱作是tcp/ip網路。http是比tcp更高層次的應用層協議,根據規則,只有低層協議建立之後才能,才能進行更層協議的連線,因此,首先要建立tcp連線,一般tcp連線的埠號是80。
3、建立tcp連線後發起http請求
一旦建立了tcp連線,web瀏覽器就會向web伺服器傳送請求命令。請求是瀏覽器以格式化文字的形式傳送給伺服器的,傳送請求的文字叫做請求報文,如果說http是網際網路的信使,那麼http報文就是它用來搬東西的包裹了,所有的http報文都可以分為兩類:請求報文和響應報文。請求報文會向web伺服器請求乙個動作。響應報文會將請求的結果返回給客戶端。
http報文的流動方向:一次http請求,http報文會從「客戶端」流到「**」再流到「伺服器」,在伺服器工作完成之後,報文又會從「伺服器」流到「**」再流到「客戶端」。
ps:http協議--請求報文和響應報文
4、伺服器響應http請求,瀏覽器得到html**
伺服器會客戶機回送應答, http/1.1 200 ok ,應答的第一部分是協議的版本號和應答狀態碼。伺服器也會隨同應答向使用者傳送關於它自己的資料及被請求的文件。 傳送結束後,關閉tcp連線。
5、瀏覽器解析html**,並請求html**中的資源(如js、css、等)
瀏覽器在請求靜態資源時(在未過期的情況下),向伺服器端發起乙個http請求(詢問自從上一次修改時間到現在有沒有對資源進行修改),如果伺服器端返回304狀態碼(告訴瀏覽器伺服器端沒有修改),那麼瀏覽器會直接讀取本地的該資源的快取檔案。
6、瀏覽器對頁面進行渲染呈現給使用者
瀏覽器利用自己內部的工作機制,把請求到的靜態資源和html**進行渲染,渲染之後呈現給使用者。
Web是如何工作的
網路是如何工作的提供在計算機或 上的web瀏覽器中檢視網頁時發生的情況的簡化檢視。這一理論對於在短期內編寫web 並不重要,但不久之後,您將真正開始從了解在後台發生的事情中獲益。客戶端和伺服器 連線到web的計算機稱為客戶和伺服器。它們的互動方式的簡化圖可能如下所示 現在,讓我們想象一下,網路是一條...
go如何使web工作
以下均是伺服器端的幾個概念 request 使用者請求的資訊,用來解析使用者的請求資訊,包括post get cookie url等資訊 response 伺服器需要反饋給客戶端的資訊 handler 處理請求和生成返回資訊的處理邏輯 建立listen socket,監聽指定的埠,等待客戶端請求到來...
3 3 Go如何使得Web工作
前面小節介紹了如何通過go搭建乙個web服務,我們可以看到簡單應用乙個net http包就方便的搭建起來了。那麼go在底層到底是怎麼做的呢?萬變不離其宗,go的web服務工作也離不開我們第一小節介紹的web工作方式。以下均是伺服器端的幾個概念 request 使用者請求的資訊,用來解析使用者的請求資...