小知识,大挑战!本文正在参与“程序员必备小知识”创作活动, 接着上一篇,我们通过wireshark抓包看到了http请求报文的基本格式,我们继续用wireshark抓包来看http响应报文,然后详细分析一下这些报文
响应报文
我们通过在wireshark中过滤出自己想要的报文,比如我通过在过滤框输入http.response.code == 200, 来过滤出正常的响应报文,如下图, 从图中可以看出http的端口号是80, http响应报文的状态行, 消息报头和响应正文
端口号
初次接触这个报文的时候,可能会疑惑http的端口号80怎么显示在tcp协议那一层, 是因为http是用tcp协议来传输数据的, 而tcp协议不仅可以传输http报文,还可以传输其他的,那怎么区分这些不同的报文,就是通过这个端口号,例如端口号是21 表示传输的是ftp报文,端口号22表示传输的是ssh, 端口号25表示smtp等,这个tcp后面有机会就详细写一篇。 我们通过wireshark过滤一些其他应用的报文
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请求来测试。