博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(P40)muduo_http库源码分析:http request,http response
阅读量:4299 次
发布时间:2019-05-27

本文共 2748 字,大约阅读时间需要 9 分钟。

文章目录

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, applicatiapplicati on/vnd. ms-excel, appli cati on/vnd. ms powerpoint, applicati on/msword, */*Accept -Language: zh-CNUser-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, deflateHost: 192. 168. 159.188:8000Connection: Keep-Alive\r\n请求的实体body上面是典型的GET请求,若是POST请求的话,就有实体==========================================================================================http response状态行HTTP/1.1 200 OK头部Content -Length: 112 ,Connection: Keep- -AliveContent -Type: text/html ,Server: Muduo实体This is title

Hello

Now is 201 30613 08:22:04. 213389

3.一个典型的http请求

GET / HTTP/1.1Accept: 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-CNUser-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, deflateHost: 192.168.159.188:8000Connection: Keep-Alive

4.一个典型的http应答

HTTP/1.1 200 OKContent-Length: 112Connection: Keep-AliveContent-Type: text/htmlServer: MuduoThis is title

Hello

Now is 20130611 02:14:31.518462

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

转载地址:http://kqiws.baihongyu.com/

你可能感兴趣的文章
python
查看>>
python爬图片
查看>>
解决安装gevnet失败
查看>>
关于shell文件中出现syntax error: unexpected end of file
查看>>
git 的cherry-pick应用
查看>>
Linux命令英文全称
查看>>
Django学习之----model(1)
查看>>
Django学习之----model(2)
查看>>
推荐一下django学习的网址!!!
查看>>
git 使用小技巧之撤销提交操作与恢复更改前操作
查看>>
git 基础版
查看>>
git 撤销修改篇
查看>>
果汁带你学linux(01)
查看>>
django 自带页面缓存cache_page的使用及清除
查看>>
django cache的简单使用
查看>>
ping、traceroute、host、curl以及wget
查看>>
git merge 时可能会遇到的问题
查看>>
淘宝 OAuth2.0 的登录验证与授权
查看>>
git stash 使用技巧
查看>>
nginx 中location和root,你确定真的明白他们关系?
查看>>