快速掌握http(2)--http报文

599 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动, 接着上一篇,我们通过wireshark抓包看到了http请求报文的基本格式,我们继续用wireshark抓包来看http响应报文,然后详细分析一下这些报文

响应报文

我们通过在wireshark中过滤出自己想要的报文,比如我通过在过滤框输入http.response.code == 200, 来过滤出正常的响应报文,如下图, 从图中可以看出http的端口号是80, http响应报文的状态行, 消息报头和响应正文

图片.png

图片.png

端口号

初次接触这个报文的时候,可能会疑惑http的端口号80怎么显示在tcp协议那一层, 是因为http是用tcp协议来传输数据的, 而tcp协议不仅可以传输http报文,还可以传输其他的,那怎么区分这些不同的报文,就是通过这个端口号,例如端口号是21 表示传输的是ftp报文,端口号22表示传输的是ssh, 端口号25表示smtp等,这个tcp后面有机会就详细写一篇。 我们通过wireshark过滤一些其他应用的报文

图片.png

http状态行

协议版本

在状态行里可以看到当前的协议版本是http/1.1,

状态码

报文的状态码 status code是200, 关于status code这个是很重要的,我觉得应该像背课文一样,把常见的背熟,到时一看到返回来的状态码,大致就知道是哪里出了问题,所有的状态码就不在这里一一列出了。

这个状态码分为5种类型:

1开头的---信息,表示服务器收到请求,需要请求者继续执行操作, 这个不常见

2开头的--表示操作成功,常见的有200表示请求成功

3开头的--重定向,需要进一步操作以完成请求, 301 - 资源(网页等)被永久转移到其它URL

4开头的--客户端错误,常见的404表示资源不存在,403表示没有权限

5开头的--服务器错误,常见的500 error,表示服务器内部错误, 504 网关超时(经常在用户登录发生错误时遇到)

状态码描述

http.response.code.desc : OK 这个就是一个状态码的描述信息

http消息头

在消息头里可以看到这个报文响应的时间日期,返回内容的编码类型content-type, 返回内容的字符长度等信息

响应正文

例子截图中,返回的是一个html源码内容,这个就看你请求的什么和返回的,如果返回的内容和预期的不符,就要详细排查一下

详细了解报文的构造,就方便我们分析和构造,然后使用其他工具例如postman来构造一些http请求来测试。