李琪的技术专栏 System Research

搭建http测试环境

2020-06-03
Clear Li

阅读:


应用到的软件

WireShark

​ 官网https://www.wireshark.org/

Chrome

Telnet

win自带

OpenResty

基于Nginx的强化包,官网http://openresty.org/en/download.html

使用的是http_Release的包,网址为https://github.com/chronolaw/http_study/releases

###

到达此文件夹下

image-20200603103019857

点击运行,再访问localhost (注意关闭svn服务器,会占用80端口)

使用wireshark选中目标网络

image-20200603103356208

填入http 和tcp筛选

image-20200603103659401

三次握手筛选

image-20200603110214401

服务器端口是80,经过SYN,SYN/ACK,ACK的三个包之后,浏览器与服务器的TCP链接就建立了。三次握手的目的是客户端与服务器都确认双方的首发是可以正常使用的。

Get请求筛选

浏览器按照HTTP协议规定的格式,通过TCP发送一个GET/HTTP/1.1请求报文

image-20200603112040968

ACK应答标识接收到了

image-20200603114124138

返回相应的资源

image-20200603114159257

TCP报文结构

image-20200603114523581

抓包内容

image-20200603114621301

HTTP协议报文结构

1.起始行:描述请求或相应的基本信息

2.头部字段集合:使用Key-value形式更详细的说明报文

3.消息正文:实际传输的数据,

image-20200603115333628

如图第一部分就是起始行,中间部分为头部字段集合,一个空行之后则是消息正文

1.起始行:分为三部分

①请求方法:是一个动词,如GET/POST,表示对资源的操作

②请求目标:通常是一个URI标记了请求方法要操作的资源,

③版本号:表示报文使用的HTTP协议版本

image-20200603143509225

2.状态行:分为三部分

①版本号:表示报文使用的HTTP协议版本

②状态码:一个三位数,用代码的形式表示处理的结果

③原因:作为数字状态码的补充。

image-20200603144255173

3.常用的头字段

1.host: 127.0.0.1。它属于唯一一个HTTP/1.1规范中必须出现的字段

2.User-Agent.它是请求字段,智能出现在请求头里,它使用一个字符串来描述发起http请求的客户端,服务器可以依据它返回最合适此浏览器显示的页面。

3.Date,属于一个通用字段,通常出现在响应头里,表示http报文创建的时间,客户端可以根据这个时间再搭配其他字段决定缓存策略

4.Server字段是响应字段,只出现在缓存头里,它告诉客户端当前正在提供服务的软件版本名称和版本号

5.Content-length,他是报文里的body长度,如果写入这个可以知道后续有多少数据,就可以直接接受,如果没有只能使用chunked方式分段传输

HTTP请求方法

GET:含义是请求从服务器获取资源,可以将请求参数拼接到请求的地址后面,是幂等的

image-20200603151841952

HEAD:具体用法和GET差不多 ,不过他返回时只有响应头,也就是元数据,没有响应体。从而避免了传输数据的浪费,比如只想知道一个文件是否存在而并不将他获取下来,是幂等的

image-20200603152020214

可以看见HEAD的响应没有响应体

POST:经常用在向服务器发送数据上面,会将数据放在请求体中。不是幂等的

image-20200603152557724

PUT:更新资源,与POST不同的是,他只会替换或更新数据并不会新增或提交数据。因此是幂等的


Similar Posts

上一篇 域名解析