浏览器输入网址后发生了什么?

本文详细介绍了从用户在浏览器中输入网址到成功加载网页的整个过程,包括DNS解析、TCP连接建立、HTTP请求发送及响应接收等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你在浏览器输入一个网址(比如www.iis.se)并敲回车,这个过程后面发生了什么?

一、Web 浏览器指示本机的OS设置本机与 www.iis.se 之间的通信

在这里插入图片描述

二、

  1. OS检查它的 DNS 缓存,看看它是否缓存 www.iis.se 拥有的IP地址(假设电脑刚启动,没有缓存其IP地址):

在这里插入图片描述

  1. 由于没有缓存,本机需要去请求DNS服务器(上图中DNS服务器的IP地址为192.168.1.1)。当 DNS查询请求到达DNS服务器时,DNS服务器将能够通过查看目标端口 53/UDP (DNS 查询的目标端口是 53且使用UDP作为其传输协议)来判断消息是用于DNS服务器程序的,将消息转发给正在运行的DNS程序。但是计算机发送该查询时必须知道将数据包发送到哪个目标 MAC 地址:

在这里插入图片描述

​ 所以OS将数据包放入内存中的队列中,然后计算要使用的目标 MAC 地址

  1. 本机先检查其ARP表,看看它是否知道与DNS服务器的IP地址192.168.1.1 相关联的 MAC 地址(假设电脑刚启动,APR表为空):

在这里插入图片描述

  1. 本机向同一个局域网络的其他主机和设备发送ARP请求,该请求将被发送到MAC 地址 FF:FF:FF:FF:FF:FF(即广播地址),其他主机和设备都会收到请求并读取内容:

在这里插入图片描述

  1. 家庭路由收到这个APR请求后得知该请求是发送到广播MAC地址,而该路由正好被配置为192.168.1.1,所以它会将构建ARP回复并将其发送回本机来响应此消息:

在这里插入图片描述

  1. DNS查询现在将从计算机发送到DNS服务器,该服务器此时作为在家庭路由器上运行的服务存在。家庭路由器收到查询,需要处理这个DNS查询并发回一个结果

  2. 家用路由器也像主机一样有DNS缓存。 它在处理DNS查询时,也会将DNS回复保存在自己的 DNS缓存中一段时间,进而加快了对相同请求的相应时间(假设路由已经很久没有收到相同查询,不存在该请求的DNS缓存):

在这里插入图片描述

  1. 家庭路由器无法知道Internet上的每个DNS地址,所以需要在Internet上配置的DNS服务器来回答此DNS查询 。当家用路由器首次启动并从ISP获得自己的公共IP地址时,路由器通过DHCP从Internet 服务提供商处了解到可用的DNS服务器

​ 知道可用的DNS服务器IP地址后,家庭路由器将DNS查询放在具有目标端口53/UDP和随机UDP源端口的UDP消息。 然后它将消 息放入IP数据包中。 IP数据包从家庭路由器的公共IP地址发送到 DNS 服务器地址

​ 当家庭路由器准备发送数据包时,它会查看它的路由表进而决定以哪种方式发送数据包。 从路由表中查询到到达内部LAN192.168.1.0的最佳路径是通过LAN 端口,但是这个数据包应该发送到Internet 上的另一个IP网络,所以家用路由器选择使用WAN口。在此阶段,家庭路由器需要发送ARP请求以找出下一跳路由器115.20.97.113 的 MAC 地址(假设家庭路由器已经将该MAC地址进行了ARP缓存):

在这里插入图片描述

  1. 查找到下一跳路由后,数据包便发完该路由,每一个负责传递该数据包的路由会经历以下过程:

​ Ⅰ. 收到数据包

​ Ⅱ. 检查其目的IP地址

​ Ⅲ. 查看自身的路由表中哪一条路径最适合该数据包

​ Ⅳ. 将数据包旧的源MAC地址删除换为自己的MAC地址,并将下一跳路由的MAC作为该数据包的目的MAC地址

​ Ⅴ. 发送数据包给下一条路由

  1. 经过多个路由转发后,DNS请求到达DNS服务器,服务器返回请求结果给家庭路由:

在这里插入图片描述

  1. 家庭路由器收到DNS服务器的DNS回复后,便创建DNS回复并发送给本机,让本机知道www.iis.se得到了哪个IP地址,同时本机也会将其保存在DNS缓存中:

在这里插入图片描述

三、本机建立一个和www.iis.se之间的会话(session),其中主要的部分就是TCP的三次握手,三次握手的目的是为了让服务器为即将到来的会话做好准备,并决定应该使用哪些端口进行通信。之前的通信是本机和家用路由器以及家用路由器和DNS服务器之间的通信,并没有涉及到本机和Internet上任何IP地址之间的通信,而本次TCP的三次握手是在本机和Internet中的Web服务器之间进行的:

  1. 本机发送一个TCP SYN信息。SYN代表同步,它让对方知道我们想要同步设置该TCP, 该消息包含本机选择的随机源TCP端口,除此之外,该TCP消息不包含其他数据。当TCP SYN消息通过路由器时,路由器将对消息执行NAT(将本机的私网IP地址192.168.1.5转换为公网IP115.20.97.114)。路由器还将在其NAT表中保存有关已执行NAT的信息,以便它可以跟踪会话并对任何回复执行反向NAT:

在这里插入图片描述

  1. 第二条消息是服务器的回复,称为SYN-ACK,代表同步确认。服务器确认它收到了消息并且它也准备建立一个会话以进行通信:

在这里插入图片描述

  1. 第三条消息由本机发送TCP ACK结束会话, 标识着现在一切都已准备就绪:

在这里插入图片描述

只要本机和服务器继续相互通信,它们就会继续使用相同的会话以及相同的端口进行通信,这让沿途的所有设备都可以跟踪会话、地址转换等。会话可以持续足够长的时间来下载网页,服务器和本机也可以选择让会话保持更长时间,以防用户想要继续浏览网页

四、Web浏览器开始和Web服务器进行会话。一旦OS和服务器建立了TCP会话,OS就会让 Web浏览器知道它现在可以开始与Web服务器通信。而Web 浏览器将使用HTTP协议(Internet 上传输网页的标准协议)执行此操作,并且本机和服务器可以根据需要选择通过发送所谓的TCP RESET消息来结束会话,这让所有设备都知道会话现在已经结束:

在这里插入图片描述

参考

https://www.homenethowto.com/advanced-topics/traffic-example-the-full-picture/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值