HTTP访问流程分析

http协议,每天都要接触的一个协议。
也叫超文本传输协议,http协议就是万维网的传输机制,允许浏览器通过Web服务器来浏览网页,同时http也是web最核心的内容,它是web服务器和客户端之间进行数据传输的规则。web也就是网站是信息内容发布者,而最常见的客户端就是浏览器,用于接收web服务器发送的信息。
http遵循的是请求与应答的模型,客户端向服务器发送请求,服务器处理请求并且返回适当的应答,所有的http连接都被构造为一套请求和应答。这过程中需要经历四个阶段,也就是:建立建立、发送请求信息、发送响应信息、关闭连接。

这里值得注意的一点是http需要使用tcp的三次握手建立连接,那么在使用wiresharek进行http数据包筛选时就要加上tcp这个筛选条件。

访问web的过程:
在客户端与服务端建立tcp三次握手完成之后,客户端就像服务器发送http请求,服务器收到客户端的http请求之后,将回应的响应数据包,面向客户端发送输出,之后客户端通过tcp的四次握手断开连接。

网站的传输方式有两种,一种是GET一种是POST。打开wiresharek开始抓包,随便访问一个网页,触发流量。
在这里插入图片描述在打开浏览器时的首页信息,其实已经触发了很多流量了。浏览网页会使用GET方法,所以可以在筛选器中添加过滤规则找出GET方法
这里要用到的过滤规则是:http.request.mothed eq GET
在这里插入图片描述
过滤出响应的数据包之后再右键数据包给第一个http请求包着色,颜色可以随意,这列我选择的是color1也就是粉色,再清空筛选栏的过滤规则就可以看到已经将相应的数据包全部着色了,就可以看到完整的http连接了
在这里插入图片描述
从上图的粉色数据包可以看出先是完成了tcp三次握手。
建立三次握手之后,第一个标记为http的数据包就是从客户端通过tcp传输到服务器的80端口,也就是http的标准端口,但要注意一点有时候8080端口也会给http使用,展开http可以看到它请求的方法就是GET,以及绿框中的请求的URI为 / 请求的http版本为1.1等等
在这里插入图片描述
从上图的http数据包可得知,它所请求的是http1.1版本,下载Web服务器的跟目录也就是 /。这里面还包含了客户端向服务端发送的自己的信息,包含了用户代理user-Agent,浏览器所接收的语言Accept -Language,以及访问的网址。

在服务器收到4587号数据包的请求后就会响应一个tcp的ack用于数据包的确认 ,从开始的http请求数据包,并且在中间所请求的数据包传输所请求的数据,最后的传输完成。http只是被用来发布客户端与服务端的应用层命令,这些数据流除了在开始和结尾的传输时,是看不到应用层的执行信息的。
在这里插入图片描述
在上图红框的下方以及篮框的下方的tcp_ack是来自客户端的确认,中间的则是服务器发给数据包的数据,尽管http任然附和其传输但传输数据包在wiresharek中都被显示为tcp分片而不是http的数据包,当数据传输完成后数据的重组装流就已经发送完了,于是就到了最后的一个数据包。
在这里插入图片描述
在上图可以看到http使用了预定义的响应码来表示请求方法的结果,在红框中可以看到一个带有200响应码的数据包,这是一个表示成功的响应码。这个数据包还包含了请求时间戳以及web服务器的编码和配置参数的额外信息,当客户端接收到这个数据包之后,那么这次请求的处理就完成了。

上文研究的是从web服务器下载内容,下文不妨来试一下上传数据,在网站上上传表单活或者提交数据时往往就能捕获含有POST的数据包,这个数据包是在网上提交评论时所捕获的流量,使用的依旧是tcp的三次握手
在这里插入图片描述
在下图可以看到客户端使用POST向服务器发送了一个数据包展开可以看到,这个数据包使用的是POST方法来向Web服务器上传数据,以供处理,同时也指明了相应的URI
在这里插入图片描述

总结:
在触发响应流量的时候,找对应的数据包找不到,过滤规则没有熟练。且触发POST找到对应的数据包时没有进行导出处理,导致后续的POST数据包找不到提交数据的那个包。无法进行后续的展开html,展示更多的信息。

发布了12 篇原创文章 · 获赞 0 · 访问量 579

猜你喜欢

转载自blog.csdn.net/weixin_44344395/article/details/103386625