(P40)muduo_http库源码分析:http request,http response

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值