0
点赞
收藏
分享

微信扫一扫

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

米小格儿 2023-03-07 阅读 43


文章目录

  • ​​1.http request​​
  • ​​2.http response​​
  • ​​3.一个典型的http请求​​
  • ​​4.一个典型的http应答​​
  • ​​5.muduo_http库涉及到的类​​

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
  • (P40)muduo_http库源码分析:http request,http response_HTTP


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

  • 服务器端
  • (P40)muduo_http库源码分析:http request,http response_HTTP_03

  • 使用SmartSniff抓包
  • (P40)muduo_http库源码分析:http request,http response_HTTP_04

  • 抓的是虚拟机的网卡VMnet8上的包
  • (P40)muduo_http库源码分析:http request,http response_html_05

  • 可以抓到http的请求GET和应答
  • (P40)muduo_http库源码分析:http request,http response_HTTP_06

31:11


举报

相关推荐

0 条评论