从输入URL到展示出页面,这个过程发生了什么?

  1. 浏览器,首先会根据这里的域名,查询对应的 IP 地址;
    1. 先检查一下自身的缓存
    2. 再查 hosts 文件
    3. 再查 DNS 服务器
    在这里插入图片描述

  2. 浏览器构造一个 HTTP 请求,这个 HTTP 数据就包含了这个域名信息(用户输入的域名)。

  3. 浏览器调用操作系统的 socket API,把这个 HTTP 数据交给 TCP 做进一步处理,TCP 协议就会将此数据构造一个 TCP 数据段。
    1. 在发送 TCP数据段之前,首先要进行“三次握手”,建立连接;(此处的“三次握手”所涉及的 SYN/ACK 同样要经过网络层、数据链路层、物理层依次封装到达对端服务器之后再依次进行分用)
    2. 具体进行传输,发送方会把这个 TCP数据段交给IP协议进行再一次封装;

  4. 网络层把TCP数据段进一步封装成一个IP数据报;(也可能是多个IP数据报,IP协议会进行自动分包的过程)然后把数据报交给数据链路层。

  5. 数据链路层会进一步把这个数据封装成以太网数据帧, 在构造帧头的时候就需要根据IP映射MAC地址,这个构造的过程依赖了ARP协议。然后再把这个数据交给物理层传输。

  6. 物理层将这个数据转换为光电信号继续进行传输。

  7. 电信号沿着网线,到达下一个设备(路由器),路由器就会针对收到的数据进行分用,物理层把数据交给了数据链路层,数据链路层把数据交给了网络层,路由器拿到了网络层中的IP数据报,取出其中的 IP地址,查询路由表,找到下一个需要传输的目标,进一步再找到下一个目标的 MAC地址,然后将数据重新封装(把数据交给数据链路层和物理层)。此时的 源MAC 和 目的MAC 已经发生更改

  8. 数据到达接收方,仍然要进行分用。层层解析,物理层将电信号转换成以太网数据帧,交给数据链路层;数据链路层解析出 IP数据报,交给网络层(都涉及到了CRC校验,如果校验和不对,说明数据错误,直接丢弃);IP 协议再进行解析,获得了一个 TCP 数据段(IP报头中有协议类型);这个解析过程可能还涉及组包的过程,再根据 TCP数据报中的端口号,找到对应的进程,把数据放入对应的 socket 的接受缓存区中。

  9. 应用程序调用对应的socket API,从 TCP接收缓冲区中读取数据,应用程序把这个数据按照 HTTP 协议来解析,获取其中的 URL,根据 URL 指定的路径,知道了要获取数据的根路径。

  10. 服务器会对这个根路径进行配置,映射到一个具体的index.html这样的一个HTML文件,服务器读取这个文件,把其中的数据构造成一个 HTTP 响应数据,然后再调用 socket API 进行发送。

  11. 重复上面封装的过程,服务器发送的响应数据也要层层封装,最终变成一个物理层传输的光电信号。

  12. 光电信号到达下一个路由器,路由器重复上述的分用过程,解析到 IP 这一层,取出其中的目的IP,查路由表找到下一设备在哪里,重新封装数据。

  13. 重复这个过程,依次转发,最后达到用户的主机。

  14. 用户主机重复上面的分用过程,依次把数据取出来,最终交给应用程序。

  15. 浏览器得到了 HTTP 响应报文,解析这个报文,获得其中的 html 内容,根据 html 进行渲染。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值