<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    HTTP 協(xié)議簡(jiǎn)介

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

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

     

     

    TCP/IP基礎(chǔ)--層次圖

     

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

     

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

     

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

     

    TCP/IP基礎(chǔ)--TCP三次握手

     

    二、HTTP協(xié)議

    2.1 簡(jiǎn)介

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

     

    2.2 協(xié)議結(jié)構(gòu)

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

     

     

    HTTP協(xié)議--協(xié)議結(jié)構(gòu)

     

    2.3 HTTP 協(xié)議舉例

      下面是一個(gè)HTTP請(qǐng)求及響應(yīng)的例子:

     

    2.4 請(qǐng)求頭格式

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

     

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

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

     

    c) 實(shí)體頭(entity-header): (此類頭存在時(shí)要求有數(shù)據(jù)體)
    Content-Encoding:客戶端所能識(shí)別的編碼壓縮格式,如:“Content-Encoding: gzip, deflate”;
    Content-Length:客戶端以POST方法上傳數(shù)據(jù)時(shí)數(shù)據(jù)體部分的內(nèi)容長(zhǎng)度,如:“ 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)響應(yīng)格式

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

     

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

     

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

     

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

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

     

    舉例:

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

     

    2.7)chunked 傳輸

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

    chunked 傳輸

     

    2.8)HTTP 請(qǐng)求方法

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

     

    2.9)舉例

    a)GET請(qǐng)求

    Html代碼 復(fù)制代碼 收藏代碼

    1. GET http://photo.test.com/inc/global.js HTTP/1.1   
    2. Host: photo.test.com   
    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  

    GET http://photo.test.com/inc/global.js HTTP/1.1

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3

    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

    Cookie: ASP.NET_SessionId=ey5drq45lsomio55hoydzc45

     

    b)POST請(qǐng)求

    Html代碼 復(fù)制代碼 收藏代碼

    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.test.com   
    8. Content-Length: 24   
    9. Connection: Keep-Alive   
    10. Cache-Control: no-cache   
    11.   
    12. name=value&submitsubmit=submit  

    Accept: image/gif, image/x-xbitmap, image/jpeg, application/vnd.ms-powerpoint, application/msword, */*

    Content-Type: application/x-www-form-urlencoded

    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

     

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

    Html代碼 復(fù)制代碼 收藏代碼

    1. GET http://mail.test.com/ HTTP/1.1   
    2. Host: mail.test.com   
    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  

    GET http://mail.test.com/ HTTP/1.1

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3

    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

     

    d)POST方式上傳文件

    Html代碼 復(fù)制代碼 收藏代碼

    1. POST http://www.test.comt/upload_attach?uidl=%3C HTTP/1.1   
    2. Host: www.test.com   
    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--  

    POST http://www.test.comt/upload_attach?uidl=%3C HTTP/1.1

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0

    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

    Accept-Language: en-us,zh-cn;q=0.7,zh;q=0.3

    Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7

    Content-Type: multipart/form-data; boundary=---------------------------5169208281820

    Content-Disposition: form-data; name="file_1"; filename=""

    Content-Type: application/octet-stream

    Content-Disposition: form-data; name="file_0"; filename="test.txt"

    Content-Disposition: form-data; name="oper"

     

    e)CONNECT舉例

    Html代碼 復(fù)制代碼 收藏代碼

    1. CONNECT mail.test.com: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.test.com:80  

    CONNECT mail.test.com:80 HTTP/1.1

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; zh-CN; rv:1.8.1) Gecko/20061010 Firefox/2.0

     

    3.0)在終端以 telnet 方式測(cè)試

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

     

    posted on 2012-11-08 02:44 奮斗成就男人 閱讀(221) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 毛片a级毛片免费播放100| 亚洲人AV在线无码影院观看| jizz18免费视频| 亚洲AV无码不卡在线观看下载| 国产亚洲sss在线播放| 99久久久国产精品免费无卡顿| 亚洲一级毛片视频| 国产在线国偷精品产拍免费| 亚洲Aⅴ在线无码播放毛片一线天| 免费看大美女大黄大色| 毛片亚洲AV无码精品国产午夜| 亚洲国产一区二区三区| 久久性生大片免费观看性| 日本亚洲成高清一区二区三区| 99精品视频免费观看| 亚洲一区无码中文字幕乱码| 日韩va亚洲va欧洲va国产| 亚洲一区二区高清| 美女网站免费福利视频| 美女18毛片免费视频| 亚洲线精品一区二区三区影音先锋| 久久免费国产视频| 亚洲人成网国产最新在线| 亚洲AV成人精品日韩一区18p| 永久免费A∨片在线观看| 亚洲伊人久久大香线蕉影院| 免费国产不卡午夜福在线 | 精品国产免费人成电影在线观看| 亚洲国产成人精品无码一区二区| 亚洲成A人片777777| 亚洲国产另类久久久精品小说| 国产v精品成人免费视频400条| 免费一级全黄少妇性色生活片| 亚洲精品成人av在线| 成人免费视频小说| 99久久免费精品国产72精品九九| 人妻视频一区二区三区免费| 最新中文字幕电影免费观看| 天天看片天天爽_免费播放| 久久久久国产精品免费看| 男人和女人高潮免费网站|