HTTP笔记_04_网络请求过程中发生了什么

Posted 码农帮派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP笔记_04_网络请求过程中发生了什么相关的知识,希望对你有一定的参考价值。

我们搭建一个本地服务,通过浏览器来访问本地服务,使用Wireshark来抓取本机127.0.0.1的网络请求数据。启动本地服务,并在浏览器中访问127.0.0.1,可以看到Wireshark中抓取到的数据包:


浏览器首先需要依照TCP/IP协议的规范,使用“三次握手”与服务器建立稳定的连接。对应Wirdshark抓取到的前三个数据包,经过SYN、SYN/ACK、ACK这三个包之后,浏览器与服务器之间的TCP连接就建立起来了。


有了TCP连接通道之后,HTTP协议就可以工作了,浏览器按照HTTP规范,返回“GET / HTTP1.1”的请求报文,服务器在收到这个报文之后,在TCP协议层面发送确认信息,表示收到了来自浏览器的请求消息,当然这个确认消息因为是在TCP层面的,所以HTTP协议是看不到的。


服务器收到这个请求之后,在内部处理请求,并将要返回的数据按照HTTP规范打包成报文之后发送会给浏览器,也就是Wireshark收到的地6个包“HTTP 1.1 200 OK”。同样的,浏览器在收到这个数据包之后,也会给服务器发送一个确认收到的数据包,也就是Wireshark抓取到的第7个包,TCP的ACK确认。


浏览器在收到来自服务器的HTTP数据包之后,通过解析将返回的结果展示到网页上。至此我们通过浏览器访问一次服务器的整个流程就结束了。需要注意的是,因为我们使用的HTTP1.1协议,一次HTTP请求之后,默认不会立即关闭TCP连接,因此少了TCP的“四次挥手”。


我们通过浏览器访问服务器的流程:

  1. 浏览器使用TCP的三次握手与服务器建立连接;

  2. 浏览器向服务器发送HTTP报文;

  3. 服务器收到请求报文(并回发TCP-ACK确认),将响应HTTP报文发给浏览器;

  4. 浏览器收到相应报文(并回发TCP-ACK确认),进行解析并展示。

  5. 使用域名进行访问



浏览器进行域名解析的流程:

  1. 在浏览器的缓存中查找,要是找到了则使用IP进行TCP连接;

  2. 在系统的缓存中查找域名对应的IP;

  3. 通过网络进行域名解析:

4-1. 运营商、大公司代理、DNS是否有缓存;

4-2. 访问DNS系统进行域名解析(跟DNS、顶级DNS、权威DNS)


以上是关于HTTP笔记_04_网络请求过程中发生了什么的主要内容,如果未能解决你的问题,请参考以下文章

(2020上半年第9天)小迪网络安全笔记(操作①)HTTP请求方式不同如何破解

架构设计笔记_04_高性能问题

IOS-网络(GET请求和POST请求HTTP通信过程请求超时URL转码)

HTTP笔记_02_HTTP的网络分层模型

计算机网络复习

[转]神经网络-激活函数