在Web應用中,服務器把網頁傳給瀏覽器,實際上就是把網頁的HTML代碼發送給瀏覽器,讓瀏覽器顯示出來。而瀏覽器和服務器之間的傳輸協議是HTTP,因此:html
當咱們在地址欄輸入www.segmentfault.com時,瀏覽器將顯示思否的首頁。在這個過程當中,瀏覽器都幹了哪些事情呢?經過Network
的記錄,咱們就能夠知道。在Network中,定位到第二條記錄,點擊,右側將顯示Request Headers
,點擊右側的view source
(view parsed
),咱們就能夠看到瀏覽器發給思否服務器的請求:apache
GET
(請求的方式) /socket.io/?...
(請求的目標資源) HTTP/1.1
(請求採用的協議和版本號)Accept
: /(客戶端能接收的資源類型)Accept-Language
: zh-CN,zh;q=0.9,en;q=0.8(客戶端接收的語言類型)Connection
: keep-alive(維護客戶端和服務端的鏈接關係)Host
: segmentfault.com:9443(鏈接的目標主機和端口號)Referer
: https://segmentfault.com/ (告訴服務器我來自於哪裏)User-Agent
: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36(客戶端版本號的名字)Accept-Encoding
: gzip, deflate, br (客戶端能接收的壓縮數據的類型)If-Modified-Since
: Tue, 11 Jul 2000 18:23:51 GMT(緩存時間)Cookie
(客戶端暫存服務端的信息)Date
: Tue, 11 Jul 2000 18:23:51 GMT(客戶端請求服務端的時間)HTTP/1.1
(響應採用的協議和版本號) 200
(狀態碼) OK
(描述信息)Location
: http://www.baidu.com (服務端須要客戶端訪問的頁面路徑) Server
:apache tomcat(服務端的Web服務端名)Content-Encoding
: gzip(服務端可以發送壓縮編碼類型) Content-Length
: 80(服務端發送的壓縮數據的長度) Content-Language
: zh-cn(服務端發送的語言類型) Content-Type
: text/html; charset=GB2312(服務端發送的類型及採用的編碼方式,瀏覽器就是依靠Content-Type來判斷響應的內容)Last-Modified
: Tue, 11 Jul 2000 18:23:51 GMT(服務端對該資源最後修改的時間)Refresh
: 1;url=http://www.it315.org(服務端要...,刷新,而後訪問指定的頁面路徑)Content-Disposition
: attachment; filename=aaa.zip(服務端要求客戶端如下載文件的方式打開該文件)Transfer-Encoding
: chunked(分塊傳遞數據到客戶端)Set-Cookie
:SS=Q0=5Lb_nQ; path=/search(服務端發送到客戶端的暫存數據)Expires
: -1//3種(服務端禁止客戶端緩存頁面數據)Cache-Control
: no-cache(服務端禁止客戶端緩存頁面數據) Pragma
: no-cache(服務端禁止客戶端緩存頁面數據) Connection
: close(1.0)/(1.1)Keep-Alive(維護客戶端和服務端的鏈接關係) Date
: Tue, 11 Jul 2000 18:23:51 GMT(服務端響應客戶端的時間)當瀏覽器讀取到segmentfault首頁的HTML源碼後,它會解析HTML,顯示頁面,而後,根據HTML裏面的各類連接,再發送HTTP請求給思否服務器,拿到相應的圖片、視頻、Flash、JavaScript腳本、CSS等各類資源,最終顯示出一個完整的頁面。因此咱們在Network下面能看到不少額外的HTTP請求。segmentfault
步驟1:瀏覽器首先向服務器發送HTTP請求,請求包括:瀏覽器
GET
仍是POST
,GET
僅請求資源,POST
會附帶用戶數據;/full/url/path
;Host: segmentfault.com:9443
步驟2:服務器向瀏覽器返回HTTP響應,響應包括:緩存
200
表示成功,3xx
表示重定向,4xx
表示客戶端發送的請求有錯誤,5xx
表示服務器端處理時發生了錯誤;Content-Type
指定,例如:Content-Type: text/html;charset=utf-8
表示響應類型是HTML文本,而且編碼是UTF-8
,Content-Type: image/jpeg
表示響應類型是JPEG格式的圖片;一般服務器的HTTP響應會攜帶內容,也就是有一個Body,包含響應的內容,網頁的HTML源碼就在Body中。tomcat
步驟3:若是瀏覽器還須要繼續向服務器請求其餘資源,好比圖片,就再次發出HTTP請求,重複步驟一、2。服務器
Web採用的HTTP協議採用了很是簡單的請求-響應模式,從而大大簡化了開發。當咱們編寫一個頁面時,咱們只須要在HTTP響應中把HTML發送出去,不須要考慮如何附帶圖片、視頻等,瀏覽器若是須要請求圖片和視頻,它會發送另外一個HTTP請求,所以,一個HTTP請求只處理一個資源。網絡
HTTP協議同時具有極強的擴展性,雖然瀏覽器請求的http://www.segmentfault.com:9443
的首頁,可是在HTML中能夠鏈入其餘服務器的資源,好比<img src="http://i1.s.cn/home/U8455P30DT20131008135420.png">
,從而將請求壓力分散到各個服務器上,而且,一個站點能夠連接到其餘站點,無數個站點互相連接起來,就造成了World Wide Web,簡稱「三達不溜」(WWW)。socket
https://www.liaoxuefeng.com/wiki/1016959663602400/1017804782304672
https://blog.csdn.net/u014466635/article/details/81004127
【簡單比較 http https http2】簡單比較 http https http2
【應用層+傳輸層TCP/UDP】應用層+傳輸層TCP/UDPide