详细分析:当我们用浏览器访问一个网站到页面展示,背后经历了什么?

本文详细阐述了用户通过浏览器访问网站时的复杂过程,包括网络分层模型、IP地址、域名和DNS的工作原理。首先,域名通过DNS解析得到IP地址;然后,客户端与服务器通过TCP三次握手建立连接;接着,客户端发送HTTP请求获取资源;最后,浏览器解释HTML内容并显示在屏幕上。整个过程涉及网络协议、域名解析和HTTP交互。
摘要由CSDN通过智能技术生成


当我们用浏览器访问一个网站到页面显示出来,身为用户我们只要用鼠标点点点就实现了页面展示,但是实际过程是有亿点点复杂。

大致过程为:

  1. 域名解析获取域名对应的IP地址
  2. 获得服务器的IP地址后与其建立TCP连接
  3. 客户机发送请求和接收资源

那么具体是怎样的过程的呢?


一、前提概要


1、网络分层模型


2、什么是IP地址?

  • IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
  • IP地址32比特的全球唯一标识符
  • IP地址在整个因特网范围内是唯一的。

3、什么是域名?

  • 因特网采用层次树状结构的命名方法,任何一个连接到因特网的主机或路由器,都有一个唯一的层次结构名称, 即域名 D o m a i n Domain Domain N a m e Name Name)。
  • 域( D o m a i n Domain Domain) 是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二 级域、三级域等。
  • 每个域名都由标号序列组成,而各标号之间用点(“.") 隔开。

4、什么是DNS

  • 域名系统( D o m a i n Domain Domain N a m e Name Name S y s t e m System System D N S DNS DNS):因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如 www.baidu.com)转换为便于机器处理的 I P IP IP 地址。
  • DNS使用了大量的域名服务器,他们以层次方式组织
    1. 根域名服务器1
    2. 顶级域名服务器2
    3. 授权域名服务器(权限域名服务器)3
    4. 本地域名服务器4

二、漫漫取经之路就在脚下


1、域名解析

访问www.baidu.com时,需要将域名映射为对应的 I P IP IP 地址。即域名解析的过程。

  1. 首先由客户机向其本地域名服务器发出一个 D N S DNS DNS 请求报文
  2. 本地域名服务器在收到请求后,先查询本地缓存中是否存在该记录,若没有,则以 D N S DNS DNS 客户的身份向根域名服务器发出解析请求报文
  3. 根域名服务器根据收到的请求,判断该域名( w w w . b a i d u . c o m www.baidu.com www.baidu.com)属于 . c o m .com .com 域,将对应的顶级域名服务器 d n s . c o m dns.com dns.com I P IP IP 地址返回到本地域名服务器
  4. 本地域名服务器在向顶级域名服务器 d n s . c o m dns.com dns.com 发送解析请求报文
  5. 顶级域名服务器 d n s . c o m dns.com dns.com 根据请求,判断该域名属于( b a i d u . c o m baidu.com baidu.com)域,将授权域名服务器 d n s . b a i d u . c o m dns.baidu.com dns.baidu.com 的IP地址返回给本地域名服务器
  6. 本地域名服务器在向授权域名服务器 d n s . b a i d u . c o m dns.baidu.com dns.baidu.com 发送解析请求报文
  7. 授权域名服务器 d n s . b a i d u . c o m dns.baidu.com dns.baidu.com 根据请求,判断域名属于( w w w . b a i d u . c o m www.baidu.com www.baidu.com )域,将查询结果(即域名 w w w . b a i d u . c o m www.baidu.com www.baidu.com 对应的IP地址)返回给本地域名服务器
  8. 本地域名服务器将域名 w w w . b a i d u . c o m www.baidu.com www.baidu.com 对应 I P IP IP 地址保存到本地缓存,并返回给客户机,至此域名解析完成

那么是怎么通过 T C P / I P TCP/IP TCP/IP 网络结构发送到域名服务器?

  1. 应用层发送一个 D N S DNS DNS 请求报文,传送给传输层
  2. 传输层为 U D P UDP UDP 请求报文加上 U D P UDP UDP 请求头,形成 U D P UDP UDP 数据报,传送给网络层
  3. 网络层在 U D P UDP UDP 数据报的基础上添加 I P IP IP 请求头形成 I P IP IP 数据报,用 A R P ARP ARP 地址解析协议解析出下一跳的 M A C MAC MAC 地址
  4. 数据链路层为 I P IP IP 数据报加上帧头和帧尾,封装成帧
  5. 物理层将报文传输给下一跳,(这里下一跳即域名服务器,事实上应该会跳转多个路由器)传输到域名服务器,域名服务器的每层再对数据进行一个拆封的过程。
  6. 域名服务器查询到 I P IP IP 地址之后原路返回

2、建立TCP连接(三次握手)

  1. 服务器上会有一个进程一直在不断地监听 T C P TCP TCP 80端口
  2. 客户机在获取到对应的 I P IP IP 地址之后,客户机向服务器发送一个连接请求报文
  3. 服务器监听到连接请求报文之后,向客户机返回一个确认报文,并为此次 T C P TCP TCP 连接分配缓存和变量
  4. 当客户机收到确认报文段后,再向服务器发出一个确认报文,并为此次连接分配缓存和变量
  5. 服务器再收到确认报文之后, T C P TCP TCP 连接就建立成功了

3、获取资源

设HTTP协议使用持久连接5:

  1. TCP连接建立成功之后,客户机向服务器通过TCP连接发送携带请求资源信息的HTTP请求报文
  2. 服务器收到HTTP请求报文之后,通过HTTP响应报文将客户机请求的资源发送给客户机
  3. 如需多个资源,重复以上操作即可

注:

实际上,客户机向服务器在建立TCP的第三次握手时发送的确认报文可以携带上HTTP请求报文


4、浏览器解释

  • 客户机在接收到服务器返回的资源后,对其进行解释,用超文本标记语言( H T M L HTML HTML)将其显示在屏幕上

把握住今天,胜过两个明天。


  1. 最高层次的域名服务器 ↩︎

  2. 负责管理再该顶级域名服务器注册的所有二级域名 ↩︎

  3. 将管辖的主机名转换为该主机的IP地址 ↩︎

  4. 当主机发出DNS查询请求时,这个请求报文就发送给该主机的本地域名服务器 ↩︎

  5. 持久连接,是指万维网服务器在发送响应后仍保持这条连接,使同一个客户和服务器可以继续使用这条连接传送后续的HTTP请求与响应报文。 H T T P / 1.1 HTTP/1.1 HTTP/1.1 支持 ↩︎

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@赵士杰

如果对你有用,可以进行打赏,感

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值