<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們日常生活中經常會使用瀏覽器存取Web站點這個過程中到底發生了什麼嗎?為什麼我們在瀏覽器位址列上面輸入要存取的URL後就可以存取到Web頁面呢?這幾乎是面試過程中的高頻問題。
簡單來說,當我們在瀏覽器位址列上輸入要存取的URL後,瀏覽器會分析出URL上面的域名,然後通過DNS伺服器查詢出域名對映的IP地址,瀏覽器根據查詢到的IP地址與Web伺服器進行通訊,而通訊的協定就是HTTP協定,以下就給大家詳細介紹HTTP協定。
HTTP超文字傳輸協定(HyperText Transfer Protocol)是一種用於分散式、共同作業式和超媒體資訊系統的應用層協定。HTTP是全球資訊網的資料通訊的基礎。是一個屬於應用層的物件導向的協定,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件,目前在WWW中使用的是HTTP/1.0的第六版。
HTTP協定的主要特點可概括如下:
我們可以把這個HTTP通訊過程類比成一個電話對話。當我們要打電話給某個人,首先要知道對方的電話號碼,然後進行撥號。打通電話後我們會進行對話,當然要對話肯定需要共同的語言,如果一個人說國語,而另一個人說英語,那肯定不能進行溝通。電話號碼相當於上面的IP地址,而共同語言相當於HTTP協定。
(1) 使用者端連線到Web伺服器
一個HTTP使用者端,通常是瀏覽器,與Web伺服器的HTTP埠(預設為80)建立一個TCP通訊端連線。例如,http://www.oakcms.cn。
(2) 傳送HTTP請求
通過TCP通訊端,使用者端向Web伺服器傳送一個文字的請求報文,一個請求報文由請求行、請求頭部、空行和請求資料4部分組成。
(3) 伺服器接受請求並返回HTTP響應
Web伺服器解析請求,定位請求資源。伺服器將資源複本寫到TCP通訊端,由使用者端讀取。一個響應由狀態行、響應頭部、空行和響應資料4部分組成。
(4) 釋放連線TCP連線
若connection 模式為close,則伺服器主動關閉TCP連線,使用者端被動關閉連線,釋放TCP連線;若connection 模式為keepalive,則該連線會保持一段時間,在該時間內可以繼續接收請求;
(5) 使用者端瀏覽器解析HTML內容
使用者端瀏覽器首先解析狀態行,檢視表明請求是否成功的狀態程式碼。然後解析每一個響應頭,響應頭告知以下為若干位元組的HTML檔案和檔案的字元集。使用者端瀏覽器讀取響應資料HTML,根據HTML的語法對其進行格式化,並在瀏覽器視窗中顯示。
HTTP使用統一資源識別符號
(Uniform Resource Identifiers, URI)來傳輸資料和建立連線。URL是一種特殊型別的URI,包含了用於查詢某個資源的足夠的資訊
URL,全稱是Uniform Resource Locator, 中文叫統一資源定位符
,是網際網路上用來標識某一處資源的地址。以下面這個URL為例,介紹下普通URL的各部分組成:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
從上面的URL可以看出,一個完整的URL包括以下幾部分:
1.協定部分:該URL的協定部分為“http:”,這代表網頁使用的是HTTP協定。在Internet中可以使用多種協定,如HTTP,FTP等等本例中使用的是HTTP協定。在"HTTP"後面的“//”為分隔符
2.域名部分:該URL的域名部分為“www.aspxfans.com”。一個URL中,也可以使用IP地址作為域名使用
3.埠部分:跟在域名後面的是埠,域名和埠之間使用“:”作為分隔符。埠不是一個URL必須的部分,如果省略埠部分,將採用預設埠
4.虛擬目錄部分:從域名後的第一個“/”開始到最後一個“/”為止,是虛擬目錄部分。虛擬目錄也不是一個URL必須的部分。本例中的虛擬目錄是“/news/”
5.檔名部分:從域名後的最後一個“/”開始到“?”為止,是檔名部分,如果沒有“?”,則是從域名後的最後一個“/”開始到“#”為止,是檔案部分,如果沒有“?”和“#”,那麼從域名後的最後一個“/”開始到結束,都是檔名部分。本例中的檔名是“index.asp”。檔名部分也不是一個URL必須的部分,如果省略該部分,則使用預設的檔名
6.錨部分:從“#”開始到最後,都是錨部分。本例中的錨部分是“name”。錨部分也不是一個URL必須的部分
7.引數部分:從“?”開始到“#”為止之間的部分為引數部分,又稱搜尋部分、查詢部分。本例中的引數部分為“boardID=5&ID=24618&page=1”。引數可以允許有多個引數,引數與引數之間用“&”作為分隔符。
組成:
1.請求行
2.若干“頭部行”
3.實體主體(通常不用)
第一部分:請求行
GET /js/an.js HTTP/1.1
GET說明請求型別為GET,[js/an.js]為要存取的資源,該行的最後一部分說明使用的是HTTP1.1版本。
第二部分:請求頭部
Accept: */* #可接受的媒體型別 Accept-Encoding: gzip, deflate #可接受的編碼 Accept-Language: zh-cn #接受的語言 Connection: Keep-Alive #持久連線 Host: cache.soso.com #Host Referer: http://help.soso.com/ #參照頁面 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; InfoPath.2) #使用者代理
注意:實體主體沒有,也必須要有空行。
(1)響應報文結構
在接收和解釋請求訊息後,伺服器返回一個HTTP響應訊息。
響應報文的開始行是狀態行:狀態行包括三項內容,即 HTTP 的版本,狀態碼,以及解釋狀態碼的簡單短語。
HTTP響應也是由三個部分組成,分別是:狀態行、頭部行、響應正文。
(2)狀態碼
狀態程式碼有三位數位組成,第一個數位定義了響應的類別,且有五種可能取值:
1xx :表示通知資訊的,如請求收到了或正在進行處理。
2xx:表示成功,如接受或知道了。
3xx :表示重定向,表示要完成請求還必須採取進一步的行動。
4xx :表示使用者端的差錯,如請求中有錯誤的語法或不能完成。
5xx :表示伺服器的差錯,如伺服器失效無法完成請求。
(3)常見狀態碼
200 OK //使用者端請求成功 400 Bad Request //使用者端請求有語法錯誤,不能被伺服器所理解 401 Unauthorized //請求未經授權,這個狀態程式碼必須和WWW-Authenticate報頭域一起使用 403 Forbidden //伺服器收到請求,但是拒絕提供服務 404 Not Found //請求資源不存在,eg:輸入了錯誤的URL 500 Internal Server Error //伺服器發生不可預期的錯誤 503 Server Unavailable //伺服器當前不能處理使用者端的請求,一段時間後可能恢復正常
HTTP既可以使用非持久連線(nonpersistent connection),也可以使用持久連線(persistent connection)。HTTP/1.0使用非持久連線,HTTP/1.1預設使用持久連線。
持久連線情況下,伺服器在發出響應後讓TCP連線繼續開啟著。同一對客戶/伺服器之間的後續請求和響應可以通過這個連線傳送。
持久連線分為不帶流水線(without pipelining)和帶流水線(with pipelining)兩個版本。如果是不帶流水線的版本,那麼客戶只在收到前一個請求的響應後才發出新的請求。
流水線方式和非流水線方式的區別:
流水線方式指沒有收到上一個請求的物件就傳送新的物件的請求
非流水線方式指必須要等到上一個請求的物件到達之後再傳送新的物件的請求
到此這篇關於HTTP協定的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45