久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

HTTP 協(xié)議簡介

 百眼通 2014-08-08

一、TCP/IP 協(xié)議介紹

  在介紹 HTTP 協(xié)議之前,,先簡單說一下TCP/IP協(xié)議的相關內(nèi)容,。TCP/IP協(xié)議是分層的,從底層至應用層分別為:物理層,、鏈路層,、網(wǎng)絡層,、傳輸層和應用層,如下圖所示:

 

 

TCP/IP基礎--層次圖

 

  從應用層至物理層,,數(shù)據(jù)是一層層封裝,,封裝的方式一般都是在原有數(shù)據(jù)的前面加一個數(shù)據(jù)控制頭,數(shù)據(jù)封裝格式如下:

 

TCP/IP基礎--數(shù)據(jù)封裝

 

  其中,,對于TCP傳輸協(xié)議,,客戶端在于服務器建立連接前需要經(jīng)過TCP三層握手,過程如下:

 

TCP/IP基礎--TCP三次握手

 

二,、HTTP協(xié)議

2.1 簡介

  超文本傳輸協(xié)議(Hypertext Transfer Protocol,,簡稱HTTP)是應用層協(xié)議,自 1990 年起,,HTTP 就已經(jīng)被應用于 WWW 全球信息服務系統(tǒng),。
  HTTP 是一種請求/響應式的協(xié)議。一個客戶機與服務器建立連接后,,發(fā)送一個請求給服務器,;服務器接到請求后,給予相應的響應信息,。
  HTTP 的第一版本 HTTP/0.9是一種簡單的用于網(wǎng)絡間原始數(shù)據(jù)傳輸?shù)膮f(xié)議,;
  HTTP/1.0由 RFC 1945 定義 ,在原 HTTP/0.9 的基礎上,,有了進一步的改進,,允許消息以類 MIME 信息格式存 在,包括請求/響應范式中的已傳輸數(shù)據(jù)和修飾符等方面的信息,;
  HTTP/1.1(RFC2616) 的要求更加嚴格以確保服務的可靠性,,增強了在HTTP/1.0 沒有充分考慮到分層代理服務器、高速緩沖存儲器,、持久連接需求或虛擬主機等方面的效能,;
  安全增強版的 HTTP (即S-HTTP或HTTPS),則是HTTP協(xié)議與安全套接口層(SSL)的結合,,使HTTP的協(xié)議數(shù)據(jù)在傳輸過程中更加安全,。

 

2.2 協(xié)議結構

  HTTP協(xié)議格式也比較簡單,格式如下:

 

 

HTTP協(xié)議--協(xié)議結構

 

2.3 HTTP 協(xié)議舉例

  下面是一個HTTP請求及響應的例子:

 

2.4 請求頭格式

a) 通用頭(general-header):
Cache-Control:客戶端希望服務端如何緩存自己的請求數(shù)據(jù),,如"Cache-Control: no-cache",,"Cache-Control: max-age=0";
Connection:客戶端是否希望與服務端之間保持長連接,,如"Connection: close", "Connection: keep-alive",;
Date:只有當請求方法為POST或PUT方法時客戶端才可能會有些字段;
Pragma:包含了客戶端一些特殊請求信息,如 "Pragma: no-cache" 客戶端希望代理或應用服務器不應緩存與該請求相關的結果數(shù)據(jù),;
Via:一般用在代理網(wǎng)關向應用服務器發(fā)送的請求頭中,,表明該來自客戶端的請求經(jīng)過了網(wǎng)關代理,
     格式為:"Via: 請求協(xié)議版本  網(wǎng)關標識   [其它信息] ",,
     如 :" Via: 1.1  webcache_250_199.hexun.com:80 (squid)"

 

b) 請求頭(request-header):
Accept: 表明客戶同端可接受的請求回應的媒體類型范圍列表,。星號“*”用于按范圍將類型分組,用“*/*”指示可接受全部類型,;用“type/*”指示可接受 type類型的所有子類型,,如“ Accept: image/gif, image/jpeg, */*”;
Accept-Charset:客戶端所能識別的字符集編碼格式,,格式:“Accept-Charset: 字符集1[:權重],,字符集2[:權重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”,;
Accept-Language:客戶端所能識別的語言,,格式:“Accept-Language: 語言1[:權重],語言2[:權重]”,,如:” Accept-Language: zh, en;q=0.7”,;
Host:客戶請求的主機域名或主機IP,格式:“Host: 域名或IP[:端口號]”,,如:“Host: www.hexun.com:80“,,請求行中若有HTTP/1.1則必須有該請求頭;
User-Agent:表明用戶所使用的瀏覽器標識,,主要用于統(tǒng)計的目的,;
Referer:指明該請求是從哪個關聯(lián)連接而來;

Accept-Encoding:客戶端所能識別的編碼壓縮格式,,如:“Accept-Encoding: gzip, deflate”,;
If- Modified-Since:該字段與客戶端緩存相關,,客戶端所訪問的URL自該指定日期以來在服務端是否被修改過,如果修改過則服務端返回新的修改后 的信息,,如果未修改過則服務器返回304表明此請求所指URL未曾修改過,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”,;
If-None-Match:該字段與客戶端緩存相關,客戶端發(fā)送URL請求的同時發(fā)送該字段及標識,,如 果服務端的標識與客戶端的標識一致,,則返回304表明此URL未修改過,如果不一致則服務端返回完整的數(shù)據(jù)信息,,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”,;
Cookie:為擴展字段,存儲于客戶端,,向同一域名的服務端發(fā)送屬于該域的cookie,如:“Cookie: MailUserName=whouse”,;

 

c) 實體頭(entity-header): (此類頭存在時要求有數(shù)據(jù)體)
Content-Encoding:客戶端所能識別的編碼壓縮格式,如:“Content-Encoding: gzip, deflate”,;
Content-Length:客戶端以POST方法上傳數(shù)據(jù)時數(shù)據(jù)體部分的內(nèi)容長度,,如:“ Content-Length: 24”;
Content- Type:客戶端發(fā)送的數(shù)據(jù)體的內(nèi)容類型,,如:“Content-Type: application/x-www-form-urlencoded”為以普通的POST方法發(fā)送的數(shù)據(jù),;“Content-Type: multipart/form-data; boundary=---------------------------5169208281820”,則表明數(shù)據(jù)體由多部分組成,,分隔符為 “-----------------------------5169208281820”;

 

2.5)響應格式

a) 通用頭(general-header):
Cache- Control:服務端要求中間代理及客戶端如何緩存自己響應的數(shù)據(jù),,如“Cache-Control: no-cache”,,如:“Cache-Control: private” 不希望被緩存,“Cache-Control: public” 可以被緩存,;
Connection:服務端是否希望與客戶端之間保持長連接,,如“Connection: close”, “Connection: keep-alive”,;
Date:只有當請求方法為POST或PUT方法時客戶端才可能會有些字段;
Pragma:包含了服務端一些特殊響應信息,,如 “Pragma: no-cache” 服務端希望代理或客戶端不應緩存結果數(shù)據(jù),;
Transfer-Encoding:服務端向客戶端傳輸數(shù)據(jù)所采用的傳輸模式(僅在HTTP1.1中出現(xiàn)),如:“Transfer-Encoding: chunked”,,注:該字段的優(yōu)先級要高于“Content-Length” 字段的優(yōu)先級,;

 

b)響應頭(response-header):
Accept-Ranges:表明服務端接收的數(shù)據(jù)單位,如:“Accept-Ranges: bytes”, ,;
Location:服務端向客戶端返回此信息以使客戶端進行重定向,如:“Location: http://www.hexun.com”,;
Server:服務端返回的用于標識自己的一些信息,,如:“ Server: Microsoft-IIS/6.0”;
ETag:服務端返回的響應數(shù)據(jù)的標識字段,,客戶端可根據(jù)此字段的值向服務器發(fā)送某URL是否更新的信息,;

 

c)實體頭(entity-header): (此類頭存在時要求有數(shù)據(jù)體)
Content-Encoding:服務端所響應數(shù)據(jù)的編碼格式,如:“Content-Encoding: gzip”,;
Content-Length:服務端所返回數(shù)據(jù)的數(shù)據(jù)體部分的內(nèi)容長度,,如:“ Content-Length: 24”;
Content-Type:服務端所返回的數(shù)據(jù)體的內(nèi)容類型,,如:“Content-Type: text/html; charset=gb2312” ,;
Set-Cookie:服務端返回給客戶端的cookie數(shù)據(jù),,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”

 

2.6)服務器返回狀態(tài)碼

1xx:表明服務端接收了客戶端請求,,客戶端繼續(xù)發(fā)送請求,;
2xx:客戶端發(fā)送的請求被服務端成功接收并成功進行了處理,;
3xx:服務端給客戶端返回用于重定向的信息,;
4xx:客戶端的請求有非法內(nèi)容,;
5xx:服務端未能正常處理客戶端的請求而出現(xiàn)意外錯誤,。

 

舉例:

“100”  ; 服務端希望客戶端繼續(xù);
“200”  ; 服務端成功接收并處理了客戶端的請求,;
“301”  ; 客戶端所請求的URL已經(jīng)移走,需要客戶端重定向到其它的URL,;
“304”  ; 客戶端所請求的URL未發(fā)生變化;
“400”  ; 客戶端請求錯誤;
“403”  ; 客戶端請求被服務端所禁止,;
“404”  ; 客戶端所請求的URL在服務端不存在;
“500”  ; 服務端在處理客戶端請求時出現(xiàn)異常,;
“501”  ; 服務端未實現(xiàn)客戶端請求的方法或內(nèi)容,;
“502”  ; 此為中間代理返回給客戶端的出錯信息,,表明服務端返回給代理時出錯,;
“503”  ; 服務端由于負載過高或其它錯誤而無法正常響應客戶端請求,;
“504”  ; 此為中間代理返回給客戶端的出錯信息,表明代理連接服務端出現(xiàn)超時,。

 

2.7)chunked 傳輸

   編碼使用若干個Chunk組成,由一個標明長度為0的chunk結束,,每個Chunk有兩部分組成,第一部分是該Chunk的長度(以十六進制表示)和 長度單位(一般不寫),,第二部分就是指定長度的內(nèi)容,,每個部分用CRLF隔開,。在最后一個長度為0的Chunk中的內(nèi)容是稱為footer的內(nèi)容,,是一些 沒有寫的頭部內(nèi)容。另外,,在HTTP頭里必須含有:” Transfer-Encoding: chunked” 通用頭字段。格式如下:

chunked 傳輸

 

2.8)HTTP 請求方法

GET,、POST、HEAD,、CONNECT、PUT,、DELETE、TRACE

 

2.9)舉例

a)GET請求

Html代碼 復制代碼 收藏代碼
  1. GET http://photo./inc/global.js HTTP/1.1   
  2. Host: photo.   
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0   
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5   
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3   
  6. Accept-Encoding: gzip,deflate   
  7. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7   
  8. Keep-Alive: 300   
  9. Proxy-Connection: keep-alive   
  10. Cookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45  
  11. Cache-Control: max-age=0  

 

b)POST請求

Html代碼 復制代碼 收藏代碼
  1. POST / HTTP/1.1   
  2. Accept: image/gif, image/x-xbitmap, image/jpeg, application/vnd.ms-powerpoint, application/msword, */*   
  3. Accept-Language: zh-cn   
  4. Content-Type: application/x-www-form-urlencoded   
  5. Accept-Encoding: gzip, deflate   
  6. User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)   
  7. Host: www.   
  8. Content-Length: 24   
  9. Connection: Keep-Alive   
  10. Cache-Control: no-cache   
  11.   
  12. name=value&submitsubmit=submit  

 

c)通過HTTP代理發(fā)送GET請求

Html代碼 復制代碼 收藏代碼
  1. GET http://mail./ HTTP/1.1   
  2. Host: mail.   
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0   
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5   
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3   
  6. Accept-Encoding: gzip,deflate   
  7. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7   
  8. Keep-Alive: 300   
  9. Proxy-Connection: keep-alive  

 

d)POST方式上傳文件

Html代碼 復制代碼 收藏代碼
  1. POST http://www.t/upload_attach?uidl=%3C HTTP/1.1   
  2. Host: www.   
  3. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0   
  4. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5   
  5. Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3   
  6. Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7   
  7. Content-Type: multipart/form-data; boundary=---------------------------5169208281820   
  8. Content-Length: 449   
  9.   
  10. -----------------------------5169208281820   
  11. Content-Disposition: form-data; name="file_1"filename=""  
  12. Content-Type: application/octet-stream   
  13.   
  14.   
  15. -----------------------------5169208281820   
  16. Content-Disposition: form-data; name="file_0"filename="test.txt"  
  17. Content-Type: text/plain   
  18.   
  19. hello world!   
  20.   
  21. -----------------------------5169208281820   
  22. Content-Disposition: form-data; name="oper"  
  23.   
  24. upload   
  25. -----------------------------5169208281820--  

 

e)CONNECT舉例

Html代碼 復制代碼 收藏代碼
  1. CONNECT mail.:80 HTTP/1.1   
  2. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0   
  3. Proxy-Connection: keep-alive   
  4. Host: mail.:80  

 

3.0)在終端以 telnet 方式測試

a)打開回顯功能(針對windows)
  Windows 2000:進入DOS模式->輸入 telnet->set LOCAL_ECHO->退出:quit->telnet ip 80
  Windows xp:進入DOS模式->輸入telnet->set local echo->open ip 80
b) 按HTTP協(xié)議格式輸入GET請求,、HEAD請求,、POST請求。

 

個人微博:http://weibo.com/zsxxsz

 

參考:

        文章 《用C++實現(xiàn)類似于JAVA HttpServlet 的編程接口》 給出了 acl_cpp 庫中提供的 WEB 編程示例,。

        文章 《使用 acl_cpp 的 HttpServlet 類及 google 的 ctemplate 庫編寫 WEB 應用》 給出了使用 acl _cpp 的 WEB 庫及 google 的頁面模板庫的例子。

        文章 《web 編程中實現(xiàn)文件上傳的服務端實例》 給出了使用 acl_cpp 的 WEB 庫實現(xiàn)處理 HTTP 文件上傳的例子,。

        文章 《使用 acl_cpp 的 HttpServlet 類及服務器框架編寫WEB服務器程序》  給出了使用 acl 服務器框架的 WEB 應用實例 。

        文章 《使用 acl 庫開發(fā)一個 HTTP 下載客戶端》 給出了利用 acl 庫寫的 HTTP 下載客戶端,。

        文章 《使用 acl 較為底層的 HTTP 協(xié)議庫寫 HTTP 下載客戶端舉例》 給出另一種 HTTP 客戶端下載的例子。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多