http:Hyper Text Transfer Protocol,超文本傳輸協議。是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,并稱之為超文本(hypertext),這成為了HTTP超文本傳輸協議標準架構的發展根基。Ted Nelson組織協調萬維網協會(World Wide Web Consortium)和互聯網工程工作小組(Internet Engineering Task Force )共同合作研究,最終發布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。
html:Hyper Text Mark Language,超文本標記語言。標準通用標記語言下的一個應用?!俺谋尽本褪侵疙撁鎯瓤梢园瑘D片、鏈接,甚至音樂、程序等非文字元素。超文本標記語言的結構包括“頭”部分(英語:Head)、和“主體”部分(英語:Body),其中“頭”部提供關于網頁的信息,“主體”部分提供網頁的具體內容。
html文本框架:
<html> <head> <title>TITLE</title> </head> <body> <h1>H1</h1> <p></p> <h2>H1</h2> <p> <a href="admin.html">ToGoogle</a> </p> </body> </html>
html文檔的生成方式:
靜態:直接編寫
動態:編程語言編寫的程序可輸出html格式的結果,如,php,jsp,asp,.net
CGI:通用網關接口(Common Gateway Interface/CGI)是一種重要的互聯網技術,可以讓一個客戶端,從網頁瀏覽器向執行在網絡服務器上的程序請求數據。CGI描述了客戶端和服務器程序之間傳輸數據的一種標準。
http首部分為三類:通用首部,請求首部,響應首部
通用首部:
Connection:定義C/S之間關于請求、響應的有關選項
Cache-Control:緩存控制
請求首部:
Client-IP:客戶端IP地址 Host:請求的主機 Referer:指明了請求當前資源原始資源的URL,可做防盜鏈控制 User-Agent:用戶代理 Accept:服務端能夠發送的媒體的類型 Accept-Charset:可發送的字符集 Accept-Encoding:可發送的編碼方式 Accept-Language:可發送的語言 條件式請求;安全相關請求
響應首部:
Age:從最初創建開始,響應持續時間 Server:向客戶端說明自己的程序名稱和版本 協商首部: Vary:首部列表,服務器會根據列表中的內容挑一個最適用的版本發送給客戶端 跟安全相關: WWW-Authentication Set-Cookie
實體首部:
Location:資源的新位置 Allow:允許對此資源使用的請求方法 內容相關的首部: Content-Encoding:編碼方式 Content-Language:主體最適宜使用的自然語言 Content-Length:主體的長度或尺寸 Content-Location:資源實際所處的位置 Content-Type:主體的對象類型 緩存相關: Etag:與實體相關的實體標記 Expires:實體不再有效,需要再次獲取日期和時間 Last-Modified:實體最后一次被修改的時間
擴展首部:非標準首部,可由程序猿自行創建,如:X-Forward-for,X-Via
http協議請求報文
<method><request-URL><version> <HEADERS> <entity-body>
http協議響應報文格式
<version><status><reason-phrase> <HEADERS> <entity-body>
解釋:sp(Space)空格符;cr ( carriage return )回車符;lf(line feed)換行符。
<method>:請求方法
<request-URL>:請求的資源,可以是相對路徑,如/image/log.jpg,也可以是絕對路徑
<version>:http協議版本,格式HTTP/<major>.<minor>,例如HTTP/1.0,HTTP/1.1
<headers>:各種可以使用的首部
<status>:狀態碼
<reason-phrase>:原因短語,指狀態碼的易讀信息
注意:http協議是無狀態,stateless;無連接
http方法:
GET:從服務器端獲取數據,請求獲取一個資源 HEAD:跟GET近似,但其不需要服務響應請求的資源,而返回響應首部 POST:基于HTML表單向服務器提交數據,服務通常需要存儲此數據;(位置:通常為關系型數據庫) PUT:與GET相反,向服務器發送資源,服務器通常需要存儲此資源;(位置:通常為文件系統) DELETE:刪除URL指向的資源 OPTIONS:探測服務器端對請求的URL所支持使用的請求方法 TRACE:跟一次請求中間所經過的代理服務器、防火墻或網關等
http狀態碼:
1XX:信息性狀態碼 2XX:成功狀態碼,如200,ok;201,created 3XX:重定向類狀態碼; 301,Moved Permanently,永久重定向; 302,臨時重定向,會在響應報文中使用“Location:新位置”, 304,Not Modified 4XX:客戶端類錯誤 403:請求被拒絕,Forbidden 404:Not Found 405:Method Not Allowed 5XX:服務器類的錯誤 500:Internal Server Error,服務器內部錯誤,語法錯誤等 502:Bad Gateway,代理服務器從上游服務器收到一條偽響應 503:Service Unavailable,服務暫時不可用
web服務器:
理解用戶請求的資源格式不僅僅是純html格式的文檔
靜態資源
動態資源:
application/php
web資源:
資源類型:MIME(Multipurpose Internet Mail Extensions)多用途互聯網郵件擴展,是設定某種擴展名的文件用一種應用程序來打開的方式類型,HTTP協議中也使用了MIME的框架,標準被擴展為互聯網媒體類型。
major/minor
text/html
text/plain
image/jpeg
image/gif
vedio/mpeg4
application/vnd.ms-powerpoint
資源名稱:URI (Uniform Resource Idnentifier)
URL:描述一個特定服務器上某資源的特定位置
http://www.magedu.com:80/download/bash-4.3.1-1.rpm
分為三部分:
scheme(方案):http://
服務器:www.magedu.com:80
特定服務器上的資源:/download/bash-4.3.1-1.rpm
http事務:打開到關閉一個連接的過程
http協議版本:
http 0.9:僅用于傳輸HTML文檔
http 1.0:引入MIME機制,從而支持多媒體數據;首部引入keep-alive(持久連接),請求到資源后不會四次揮手斷開,支持緩存
http 1.1:更多請求方法,更精細緩存控制,持久連接(persistent);
web服務器的I/O結構:
單進程模型:串行
多進程模型:每個進程響應一個用戶請求實現并發的效果
復用的I/O機制:一個進程生成多個線程,單個線程響應一個用戶請求
復用的I/O機制:多個線程,每個線程響應多個用戶請求
原創文章,作者:秦,如若轉載,請注明出處:http://www.www58058.com/9245
這些年關注底層協議的人不多了,贊,加油!