HTTP:通俗的講就是一個協(xié)議寡具,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議战秋。
一. 什么是協(xié)議?: 約定成俗,沒有理由
例如:文件傳輸使用TCP協(xié)議百侧,域名系統(tǒng)使用DNS協(xié)議。
有了這些協(xié)議的存在携悯,各種數(shù)據(jù)流按照約束傳送祭芦,這就構(gòu)成了計算機(jī)的通信。TCP/IP協(xié)議憔鬼,便是這眾多協(xié)議中的一個集合.
TCP/IP協(xié)議的體系結(jié)構(gòu)只有四層龟劲。
網(wǎng)絡(luò)接口層---用來處理連接網(wǎng)絡(luò)的物理設(shè)備(網(wǎng)卡等)
網(wǎng)際層---------處理在網(wǎng)絡(luò)上流動的數(shù)據(jù)包。
運輸層---------負(fù)責(zé)向兩個主機(jī)進(jìn)程之間的通信提供通用的數(shù)據(jù)傳輸服務(wù) (TCP協(xié)議轴或、UDP協(xié)議)
應(yīng)用層---------通過應(yīng)用進(jìn)程簡的交互來完成特定的網(wǎng)絡(luò)應(yīng)用昌跌。(HTTP協(xié)議、DNS協(xié)議)
常用的網(wǎng)絡(luò)協(xié)議如上圖
TCP/IP通信傳輸流
發(fā)送端在層與層之間傳輸數(shù)據(jù)時,每經(jīng)過一層必定會被打上一個該層所屬的首部信息,反之,接收端在層與層傳輸數(shù)據(jù)時,每經(jīng)過一層時會把對應(yīng)的首部消去.這種把數(shù)據(jù)信息包裝起來的做法稱為封裝.
TCP
提供可靠的字節(jié)流服務(wù)
著名的三次握手
二.HTTP協(xié)議的特點
1.非持久性連接
2.持久性連接
3.無狀態(tài)性
三.HTTP工作原理
客戶端發(fā)送一個HTTP請求到服務(wù)器的請求消息包括以下格式:
請求行(request line)
請求頭部(header)
空行
請求數(shù)據(jù)
在用戶點擊URL后,瀏覽器和Web服務(wù)器執(zhí)行以下動作:
1.瀏覽器分析超鏈接中的URL
2.瀏覽器向DNS請求解析www.sxtyu.com的IP地址
3.DNS將解析出的IP地址202.2.16.21返回瀏覽器
4.瀏覽器與服務(wù)器建立TCP連接(80端口)
5.瀏覽器請求文檔:GET /index.html(發(fā)送HTTP請求)
6.服務(wù)器給出響應(yīng)照雁,將文檔 index.html發(fā)送給瀏覽器
7.釋放TCP連接
8.瀏覽器顯示index.html中的內(nèi)容
一般情況下蚕愤,服務(wù)器接收并處理客戶端發(fā)過來的請求后會返回一個HTTP的響應(yīng)信息。一個響應(yīng)也由四個部分組成饺蚊。
image.png
狀態(tài)行
(由HTTP協(xié)議版本號萍诱, 狀態(tài)碼, 狀態(tài)消息 三部分組成污呼。
HTTP/1.1 200 OK裕坊,表示使用HTTP1.1協(xié)議,響應(yīng)狀態(tài)嗎為200燕酷,表示響應(yīng)成功)
消息頭部(用來說明客戶端要使用的一些附加信息
1.Date 時間
2.Server 服務(wù)器類型
3.Keep-Alive 是否保持連接
5.Content-Type 制動MIME類型的HTML)
空行
響應(yīng)正文
(服務(wù)器返回給客戶端的文本信息籍凝。就是HTML信息)
image.png
HTTP狀態(tài)碼分類
HTTP狀態(tài)碼由三個十進(jìn)制數(shù)字組成周瞎,第一個十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩個數(shù)字沒有分類的作用饵蒂。HTTP狀態(tài)碼共分為5種類型:
HTTP狀態(tài)碼分類
分類 | 分類描述 |
---|---|
1** | 信息声诸,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作 |
2** | 成功退盯,操作被成功接收并處理 |
3** | 重定向彼乌,需要進(jìn)一步的操作以完成請求 |
4** | 客戶端錯誤,請求包含語法錯誤或無法完成請求 |
5** | 服務(wù)器錯誤渊迁,服務(wù)器在處理請求的過程中發(fā)生了錯誤 |
HTTP狀態(tài)碼列表
狀態(tài)碼 | 狀態(tài)碼英文名稱 | 中文描述 |
---|---|---|
100 | Continue | 繼續(xù)囤攀。客戶端應(yīng)繼續(xù)其請求 |
101 | Switching Protocols | 切換協(xié)議宫纬。服務(wù)器根據(jù)客戶端的請求切換協(xié)議。只能切換到更高級的協(xié)議膏萧,例如漓骚,切換到HTTP的新版本協(xié)議 |
200 | OK | 請求成功。一般用于GET與POST請求 |
201 | Created | 已創(chuàng)建榛泛。成功請求并創(chuàng)建了新的資源 |
202 | Accepted | 已接受蝌蹂。已經(jīng)接受請求,但未處理完成 |
203 | Non-Authoritative Information | 非授權(quán)信息曹锨。請求成功孤个。但返回的meta信息不在原始的服務(wù)器,而是一個副本 |
204 | No Content | 無內(nèi)容沛简。服務(wù)器成功處理齐鲤,但未返回內(nèi)容。在未更新網(wǎng)頁的情況下椒楣,可確保瀏覽器繼續(xù)顯示當(dāng)前文檔 |
205 | Reset Content | 重置內(nèi)容给郊。服務(wù)器處理成功,用戶終端(例如:瀏覽器)應(yīng)重置文檔視圖捧灰∠牛可通過此返回碼清除瀏覽器的表單域 |
206 | Partial Content | 部分內(nèi)容。服務(wù)器成功處理了部分GET請求 |
300 | Multiple Choices | 多種選擇毛俏。請求的資源可包括多個位置炭庙,相應(yīng)可返回一個資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇 |
301 | Moved Permanently | 永久移動。請求的資源已被永久的移動到新URI煌寇,返回信息會包括新的URI焕蹄,瀏覽器會自動定向到新URI。今后任何新的請求都應(yīng)使用新的URI代替 |
302 | Found | 臨時移動唧席。與301類似擦盾。但資源只是臨時被移動嘲驾。客戶端應(yīng)繼續(xù)使用原有URI |
303 | See Other | 查看其它地址迹卢。與301類似辽故。使用GET和POST請求查看 |
304 | Not Modified | 未修改。所請求的資源未修改腐碱,服務(wù)器返回此狀態(tài)碼時誊垢,不會返回任何資源≈⒓客戶端通常會緩存訪問過的資源喂走,通過提供一個頭信息指出客戶端希望只返回在指定日期之后修改的資源 |
305 | Use Proxy | 使用代理。所請求的資源必須通過代理訪問 |
306 | Unused | 已經(jīng)被廢棄的HTTP狀態(tài)碼 |
307 | Temporary Redirect | 臨時重定向谋作。與302類似督暂。使用GET請求重定向 |
400 | Bad Request | 客戶端請求的語法錯誤,服務(wù)器無法理解 |
401 | Unauthorized | 請求要求用戶的身份認(rèn)證 |
402 | Payment Required | 保留宛逗,將來使用 |
403 | Forbidden | 服務(wù)器理解請求客戶端的請求寞钥,但是拒絕執(zhí)行此請求 |
404 | Not Found | 服務(wù)器無法根據(jù)客戶端的請求找到資源(網(wǎng)頁)。通過此代碼吭净,網(wǎng)站設(shè)計人員可設(shè)置"您所請求的資源無法找到"的個性頁面 |
405 | Method Not Allowed | 客戶端請求中的方法被禁止 |
406 | Not Acceptable | 服務(wù)器無法根據(jù)客戶端請求的內(nèi)容特性完成請求 |
407 | Proxy Authentication Required | 請求要求代理的身份認(rèn)證睡汹,與401類似,但請求者應(yīng)當(dāng)使用代理進(jìn)行授權(quán) |
408 | Request Time-out | 服務(wù)器等待客戶端發(fā)送的請求時間過長寂殉,超時 |
409 | Conflict | 服務(wù)器完成客戶端的PUT請求是可能返回此代碼囚巴,服務(wù)器處理請求時發(fā)生了沖突 |
410 | Gone | 客戶端請求的資源已經(jīng)不存在。410不同于404友扰,如果資源以前有現(xiàn)在被永久刪除了可使用410代碼彤叉,網(wǎng)站設(shè)計人員可通過301代碼指定資源的新位置 |
411 | Length Required | 服務(wù)器無法處理客戶端發(fā)送的不帶Content-Length的請求信息 |
412 | Precondition Failed | 客戶端請求信息的先決條件錯誤 |
413 | Request Entity Too Large | 由于請求的實體過大,服務(wù)器無法處理焕檬,因此拒絕請求姆坚。為防止客戶端的連續(xù)請求,服務(wù)器可能會關(guān)閉連接实愚。如果只是服務(wù)器暫時無法處理兼呵,則會包含一個Retry-After的響應(yīng)信息 |
414 | Request-URI Too Large | 請求的URI過長(URI通常為網(wǎng)址),服務(wù)器無法處理 |
415 | Unsupported Media Type | 服務(wù)器無法處理請求附帶的媒體格式 |
416 | Requested range not satisfiable | 客戶端請求的范圍無效 |
417 | Expectation Failed | 服務(wù)器無法滿足Expect的請求頭信息 |
500 | Internal Server Error | 服務(wù)器內(nèi)部錯誤腊敲,無法完成請求 |
501 | Not Implemented | 服務(wù)器不支持請求的功能击喂,無法完成請求 |
502 | Bad Gateway | 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,從遠(yuǎn)端服務(wù)器接收到了一個無效的請求 |
503 | Service Unavailable | 由于超載或系統(tǒng)維護(hù)碰辅,服務(wù)器暫時的無法處理客戶端的請求懂昂。延時的長度可包含在服務(wù)器的Retry-After頭信息中 |
504 | Gateway Time-out | 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時從遠(yuǎn)端服務(wù)器獲取請求 |
505 | HTTP Version not supported | 服務(wù)器不 |