本博文是博主心血,严禁复制和转发,转发必举报,举报必封号!!
一次Http请求中都做了什么
在验证这个之前,我们需要一个工具,一个名为Wireshark
的抓包工具。
下载地址: https://www.wireshark.org/download.html
安装: 按照默认提示,一路next, 安装完毕需要重启电脑。
Http介绍
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
以上是百度百科对Http的定义,可能不准确,但是足够说明问题了。
首先超文本传输协议
里面的超文本,我们先不解释,下面我们会介绍到。但是我们应该能明显的看出它是一种在网络中负责数据传递的一种格式协议。
请求-响应协议
是指客户端发起一个获取数据的请求,服务端针对这个请求给出一定的反馈信息。这里有层隐含的意思,你客户端没有主动发起,我服务器不会主动给你的。
TCP
是Http协议的底层支持协议,也就是在Http的发送和响应的过程中会用到TCP
。TCP
也是一种协议,这种协议我们以后会介绍到,今天我们先看一次Http请求干了哪些事情。
实验
第一步: windows 环境下,打开CMD命令窗口,输入:
ping www.baidu.com
并记下其中的IP地址:110.242.68.4
第二步: 打开Wireshark
,选择自己的网卡信息,如果电脑连接的是WIFI,请选择无限网卡。如果自己是插网线,请选择本地连接。
并在输入框中输入:
ip.addr == 110.242.68.4
第三步: CMD窗口,输入:
curl www.baidu.com
然后你就会在抓包软件中看到如下结果:
分析
抓个包结果主要分为三部分:建立连接;发送请求和接受响应;断开连接。
建立连接:
这个阶段,你会发现总共三次数据包的交换,分别是:
客户端56103端口 -> 服务器80端口
服务器80端口 -> 客户端56103端口
客户端56103端口 -> 服务器80端口
发送和响应阶段:
这个阶段,你明显发现,有一个是GET请求和一个结果为200 OK的响应。
客户端56103端口 -> 服务器80端口
服务器80端口 -> 客户端56103端口
断开连接阶段:
在这个阶段总共有四次数据包的交互,分别是:
客户端56103端口 -> 服务器80端口
服务器80端口 -> 客户端56103端口
服务器80端口 -> 客户端56103端口
客户端56103端口 -> 服务器80端口
总结
-
在http一次交互中,主要经历三个阶段,分别是:建立连接、发送请求和接受响应、断开连接。
-
建立连接需要客户端和服务器交互三次,发送和响应交互两次,断开连接需要四次交互。
拓展
- 我们使用的是www.baidu.com,那
110.242.68.4
是哪里来的? - 在这三个阶段中,分别都做了什么?为啥连接交换三次,断开需要四次呢?
- 咱们上面提到的端口56103和端口80是什么东西?
- Http定义里面提到的TCP和我们截图结果中显示的Protocol列中的TCP有什么关系呢?