1.http request
-
request line请求行 + header头部 + body (header分为普通报头,请求报头与实体报头)
-
header与body之间有一空行(CRLF)
-
请求方法有:
Get, Post, Head, Put, Delete等
协议版本1.0、1.1 -
常用请求头
(1)Accept:浏览器可接受的媒体(MIME)类型;
(2)Accept-Language:浏览器所希望的语言种类
(3)Accept-Encoding:浏览器能够解码的编码方法,如gzip,deflate等,即:请求响应回来的数据包可以压缩
(4)User-Agent:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本
(5)Connection:表示是否需要持久连接,Keep-Alive表示长连接,close表示短连接
http既可以长连接也可以是短连接
2.http response
-
status line状态行 + header头部 + body实体 (header分为普通报头,响应报头与实体报头)
header与body之间有一空行(CRLF) -
状态响应码
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器执行一个有效请求失败 -
eg:
实际上每一行末尾都有\r\n,这里看不到而已
http request
请求行,/表示请求的路径,HTTP/1.1表示协议版本
GET / HTTP/1.1
头部
Accept: image/jpeg, application/x ms- -application, image/gif, application/ xaml+xml,image/pjpeg, applicati
applicati on/vnd. ms-excel, appli cati on/vnd. ms powerpoint, applicati on/msword, */*
Accept -Language: zh-CN
User-Agent: Mozilla/4. 0 (compatible; MSIE 8.0; Windows, NT 6.1; Trident/4. 0; SLCC2; . NET CLR 2. 0.50727; .N, NET CLR 3.0. 30729; Media Center PC 6.0; Tablet PC 2.0)
Accept -Encoding: gzip, deflate
Host: 192. 168. 159.188:8000
Connection: Keep-Alive
\r\n
请求的实体body
上面是典型的GET请求,若是POST请求的话,就有实体
==========================================================================================
http response
状态行
HTTP/1.1 200 OK
头部
Content -Length: 112 ,
Connection: Keep- -Alive
Content -Type: text/html ,
Server: Muduo
实体
<html><head><title>This is title</title></head><body><h1 >Hello</h1>Now is 201 30613 08:22:04. 213389</body>
3.一个典型的http请求
GET / HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)
Accept-Encoding: gzip, deflate
Host: 192.168.159.188:8000
Connection: Keep-Alive
4.一个典型的http应答
HTTP/1.1 200 OK
Content-Length: 112
Connection: Keep-Alive
Content-Type: text/html
Server: Muduo
<html><head><title>This is title</title></head><body><h1>Hello</h1>Now is 20130611 02:14:31.518462</body></html>
5.muduo_http库涉及到的类
-
HttpRequest:http请求类封装
HttpResponse:http响应类封装
HttpContext:http协议解析类
HttpServer:http服务器类封装 -
eg:41\jmuduo\muduo\net\http\HttpRequest.h
41\jmuduo\muduo\net\http\HttpResponse.h
41\jmuduo\muduo\net\http\HttpResponse.cc
41\jmuduo\muduo\net\http\CMakeLists.txt
41\jmuduo\muduo\net\CMakeLists.txt -
eg测试:41\jmuduo\muduo\net\http\tests\HttpServer_test.cc
41\jmuduo\muduo\net\http\tests\HttpRequest_unittest.cc -
muduo支持http协议的目的是:将http作为接口,监控服务器的状态,那么http://192.168.159.188:8000/XXXX,输入一些地址XXX,让我去查看一下服务器当前的状态
-
测试:
客户端,IP是虚拟机的IP
服务器端
使用SmartSniff抓包
抓的是虚拟机的网卡VMnet8上的包
可以抓到http的请求GET和应答
31:11