1.介紹
HTTP(HyperText Transfer Protocol)是超文本傳輸協(xié)議。最新版本是HTTP 1.1。它的作用是從服務(wù)器傳輸超文本到本地瀏覽器。它是一個應(yīng)用層協(xié)議,是一個標(biāo)準的客戶端服務(wù)器(CS)模型。
2.在TCP/IP分層模型中的位置
HTTP協(xié)議位于第四層即應(yīng)用層。TCPIP的四層由低到高分別是網(wǎng)絡(luò)接口層,網(wǎng)際互聯(lián)層,運輸層,應(yīng)用層。http的消息分為由客戶端發(fā)往服務(wù)器的請求消息和服務(wù)器發(fā)往客戶端的響應(yīng)消息。請求消息和響應(yīng)消息都是由開始行、消息報頭、空行、消息正文組成,對于請求消息,開始行是請求行,對于響應(yīng)消息,開始行是狀態(tài)行,消息報頭和消息正文都是可選的。消息報頭分為通用報頭、請求報頭、響應(yīng)報頭、實體報頭。
3.請求消息格式
請求行
消息報頭,消息報頭對于請求消息而言包括通用信息頭、請求頭、實體頭
回車換行
請求正文
對于GET請求消息,沒有請求正文
GET /tech/jsp/userlogin HTTP/1.1 這里是請求行
Host: share.zte.com.cn 消息報頭開始
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8 消息報頭結(jié)束
對于POST請求消息,經(jīng)常會有請求正文:
POST /tech/jsp/loginsubmit? HTTP/1.1 這里是請求行
Host: share.zte.com.cn 消息頭開始
Connection: keep-alive
Content-Length: 64
Cache-Control: max-age=0
Origin: http://share.zte.com.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Referer: http://share.zte.com.cn/tech/jsp/userlogin
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Cookie: TECH_LOGIN_NAME_COOKIE_KEY=10202340; TECH_LOGIN_REMEBER_COOKIE_KEY=false; JSESSIONID=D12572E7A7805CC7646E6D0E917646A2; language=zh; TECH_LOGIN_INDEX_ID_COOKIE_KEY=201605706446; TECH_LOGIN_ID_COOKIE_KEY=10202340; TECH_LOGIN_EMPIDUI_COOKIE_KEY=10202340; TECH_LOGIN_CHNAME_COOKIE_KEY=5ZGo5ZCv5omN; TECH_LOGIN_ENNAME_COOKIE_KEY="" 消息頭結(jié)束
這里是空行(原本沒有文字,只是空行)
username=xiaoming&password=1234&language_flag=zh&language=zh 請求正文
4.響應(yīng)消息格式
狀態(tài)行
消息報頭,消息報頭對于請求消息而言包括通用信息頭,響應(yīng)頭,實體頭
回車換行
響應(yīng)正文
個人認為,對于消息報頭沒有必要記住所有的分類,只需記住http消息由開始行、消息報頭、空行、消息正文組成即可。
響應(yīng)消息,不帶響應(yīng)正文:
HTTP/1.1 200 OK 這里是狀態(tài)行
Server: nginx/1.2.3 消息頭開始
Date: Sat, 09 Jul 2016 02:35:31 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
P3P: CP=CAO PSA OUR IDC DSP COR ADM DEVi TAIi PSD IVAi IVDi CONi HIS IND CNT
Pragma: no-cache
Cache-Control: no-cache
Expires: Wed, 31 Dec 1969 23:59:59 GMT
Content-Language: zh
Content-Encoding: gzip 消息頭結(jié)束
響應(yīng)消息,帶響應(yīng)正文:
HTTP/1.1 200 OK 狀態(tài)行
Server: nginx/1.2.3 消息頭開始
Date: Sat, 09 Jul 2016 02:35:38 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Accept-Encoding
Pragma: no-cache
Cache-Control: no-cache
Expires: Wed, 31 Dec 1969 23:59:59 GMT
Content-Language: zh
Content-Encoding: gzip 消息頭結(jié)束
這里是空行(原本沒有任何文字)
45a2...............}kw....g.+&.vd.lif.........`.;...F....F.F...Y...W0;.....!8..d...這里是響應(yīng)正文,有一大堆看不懂的字母數(shù)字和符號。