HTTP協議的原理及常見的網頁狀態碼
一:DNS DNS:域名解析 正向解析:將域名解析為IP 反響解析:將IP解析為域名
DNS的特點:分布式、層次性
域名空間結構:根域、頂級域(國家/地區域名)、二級域
完整域名格式:FQDN=主機名.DNS後綴,例:www.souhu.com
DNS解析流程 以客戶端訪問 www.baidu.com.為例: 1. 查找本地 DNS 緩存及 hosts 文件 2. 查找 LDNS(local dns)服務器(緩存) 3. 查找根域服務器 4. 查找.com 頂級域服務器 5. LDNS 請求.com 服務器找到 baidu.com 服務器 6. LDNS 請求 baidu.com 服務器 7. Baidu.com 服務器返回 www.baidu.com 域名的 IP 解析記錄給 LDNS 8. LDNS 返回給給客戶機解析記錄及緩存到本地
二、網頁基本概述 網頁:分為動態網頁和靜態網頁
靜態網頁:由html語言編寫,擴展名是.htm 、.html,可包含文本、圖像、聲音、FLASH動畫、客戶端腳本和ActiveX控件及JAVA小程序等。 沒有後臺數據庫、是不含程序和可交互的網頁。更新起來比較麻煩,適用於一般更新較少的展示型網站(公司首頁)。每一個靜態網頁都有一個固定的 URL,且 URL 以.htm、 .html、 .shtml 等常見形式為後綴,而不含有“?”。
動態網頁:由ASP(Active Server Pages), JSP(Java Server Pages), PHP (Hypertext Preprocessor)等開發語言編寫的頁面。以.aspx、 .asp、 .jsp、 .php、 .perl、 .cgi 等形式為後綴,並且在動態 網頁網址中有一個標誌性的符號——“?” 動態網頁顯示的內容可以隨著時間、環境或者數據庫操作的結果而發生改變。動態網頁 與網頁上的各種動畫、滾動字幕等視覺上的動態效果沒有直接關系,只要是采用了動態網站 技術生產的網頁都可以稱為“動態網頁”。
xhtml:偽靜態 便於用戶更快的訪問
HTTP協議的版本: 註:http 0.9已淘汰 HTTP 1.0 這是第一個在通訊中指定版本號的 HTTP 協議版本,至今仍被廣泛采用,特別是在代理 服務器中。 ·HTTP 1.1 當前版本。持久連接被默認采用,並能很好地配合代理服務器工作。還支持以管道方式 同時發送多個請求,以便降低線路負載,提高傳輸速度。
get和POST提交方法的區別
GET 方法:從指定的服務器上獲取數據 POST 方法:提交數據給指定服務器處理 GET 請求能被緩存 POST 請求不能被緩存 GET 請求會保存在瀏覽器的瀏覽記錄裏 POST 請求不會保存在瀏覽器的瀏覽記錄裏 GET 請求要有長度的限制 POST 請求沒有長度的限制 主要用於獲取數據 查詢的字符串不會顯示在 URL 中,比較安全 查詢的字符串會顯示在 URL 中,不安全
HTTP狀態碼
200 系列 與 300 系列都代表成功 400 系列 與 500 系列 代表失敗
200 OK
請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
201 Created
請求已經被實現,而且有一個新的資源已經依據請求的需要而建立,且其 URI 已經隨 Location 頭信息返回。假如需要的資源無法及時建立的話,應當返回 ‘202 Accepted‘。
202 Accepted
服務器已接受請求,但尚未處理。正如它可能被拒絕一樣,最終該請求可能會也可能不 會被執行。在異步操作的場合下,沒有比發送這個狀態碼更方便的做法了。 返回 202 狀態碼的響應的目的是允許服務器接受其他過程的請求
302 Move temporarily
請求的資源臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼 續向原有地址發送以後的請求。只有在 Cache-Control 或 Expires 中進行了指定的情況下,這個響應才是可緩存的。
304 Not Modified
如果客戶端發送了一個帶條件的 GET 請求且該請求已被允許,而文檔的內容(自上次 訪問以來或者根據請求的條件)並沒有改變,則服務器應當返回這個狀態碼。 304 響應禁止 包含消息體,因此始終以消息頭後的第一個空行結尾。
400 Bad Request
1、語義有誤,當前請求無法被服務器理解。除非進行修改,否則客戶端不應該重復提 交這個請求。 2、請求參數有誤
401 Unauthorized
當前請求需要用戶驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息。客戶端可以重復提交一個包含恰當的 Authorization 頭信息的請 求。如果當前請求已經包含了 Authorization 證書,那麽 401 響應代表著服務器驗證已經拒 絕了那些證書。
403 Forbidden
服務器已經理解請求,但是拒絕執行它。與 401 響應不同的是,身份驗證並不能提供任 何幫助,而且這個請求也不應該被重復提交。
404 Not Found
請求失敗,請求所希望得到的資源未被在服務器上發現。沒有信息能夠告訴用戶這個狀 況到底是暫時的還是永久的。出現這個錯誤的最有可能的原因是服務器端沒有這個頁面。
408 Request Timeout
請求超時。客戶端沒有在服務器預備等待的時間內完成一個請求的發送。客戶端可以隨 時再次提交這一請求而無需進行任何更改。
500 Internal Server Error
服務器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個 問題都會在服務器端的源代碼出現錯誤時出現。
501 Not Implemented
服務器不支持當前請求所需要的某個功能。當服務器無法識別請求的方法,並且無法支 持其對任何資源的請求。
502 Bad Gateway
作為網關或者代理工作的服務器嘗試執行請求時,從上遊服務器接收到無效的響應。
503 Service Unavailable
由於臨時的服務器維護或者過載,服務器當前無法處理請求。這個狀況是臨時的,並且 將在一段時間以後恢復。
504 Gateway Timeout
作為網關或者代理工作的服務器嘗試執行請求時,未能及時從上遊服務器(URI 標識出 的服務器,例如 HTTP、 FTP、 LDAP)或者輔助服務器(例如 DNS)收到響應。
HTTP報文詳解
請求頭:
GET / HTTP/1.1 //提交方法與 HTTP 協議版本20 / 27 Host: www.benet.wang //主機名 Connection: keep-alive //是否保持連接 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 // 媒體類型 Upgrade-Insecure-Requests: 1 //支持升級不安全請求,既是不適用 http 而是 https User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 //客戶端類型 Accept-Encoding: gzip, deflate, sdch //網頁支持壓縮 Accept-Language: zh-CN,zh;q=0.8 //語言類型
響應頭:
HTTP/1.1 200 OK //HTTP 協議版本與狀態碼 Date: Thu, 27 Oct 2016 15:50:23 GMT //日期與時間 Server: Apache/2 //服務器版本信息 X-Powered-By: PHP/5.6.21 //動態服務器版本信息 Content-Encoding: gzip //傳輸壓縮 Vary: Accept-Encoding,User-Agent Keep-Alive: timeout=2, max=99 //長連接時間 Connection: Keep-Alive //支持長連接 Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8 //媒體類型與字符集
HTTP協議的原理及常見的網頁狀態碼