前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP笔记_04_网络请求过程中发生了什么

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

作者头像
码农帮派
发布2020-06-05 17:35:42
6560
发布2020-06-05 17:35:42
举报
文章被收录于专栏:码农帮派

我们搭建一个本地服务,通过浏览器来访问本地服务,使用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. 浏览器获取到我们输入的IP地址和端口号;
  2. 浏览器使用TCP的三次握手与服务器建立连接;
  3. 浏览器向服务器发送HTTP报文;
  4. 服务器收到请求报文(并回发TCP-ACK确认),将响应HTTP报文发给浏览器;
  5. 浏览器收到相应报文(并回发TCP-ACK确认),进行解析并展示。
  6. 使用域名进行访问

上面我们直接使用了IP地址进行网络访问,省去了域名解析的流程,当我们使用域名进行网络请求的时候,在建立TCP连接之前,首先需要进行域名解析。

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

  1. 在浏览器的缓存中查找,要是找到了则使用IP进行TCP连接;
  2. 在系统的缓存中查找域名对应的IP;
  3. 在系统的hosts文件中查找域名和IP地址的对应关系;
  4. 通过网络进行域名解析:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农帮派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档