浏览器如何显示页面(一)

浏览器输入网址到获取响应的过程

  • 1.输入网址:www.baidu.com,回车后。。。
  • 2.查询DNS缓存,首先依次查询浏览器DNS缓存操作系统本地缓存路由器缓存以及ISP服务缓存,如果还查不到,就发起DNS查询,搜索DNS服务器;
  • 3.通过ARP协议,实现从IP地址到MAC地址的映射,即查询目标IP对应的MAC地址;
  • 4.浏览器获取到目标服务器IP和MAC地址后,会准备TCP数据包,并建立起与目标服务器的连接;【TCP/IP三次握手,四次挥手】
  • 5.TCP连接建立完成后,就开始数据传输,浏览器会发送HTTP请求(一般就指POST/GET),请求成功后,服务器根据请求返回响应体,包括请求页面,状态码,压缩类型,cookie,等等;
  • 6.浏览器根据返回的页面,构建渲染树,显示请求的页面,详见浏览器如何显示页面(二)

DNS解析

DNS:域名系统,是一个分布式的数据库,它用于维护网址 URL 到其 IP 地址的映射关系;

  • 输入网址后不会一开始就进行DNS服务器查询,而是先看缓存数据

如图,浏览器会依次从浏览器DNS缓存系统缓存路由器缓存ISP服务缓存中查找URL对应的IP地址,如果还是没有找到,就说明没有DNS缓存,即开始发起DNS服务请求查询;
在这里插入图片描述

  • DNS查询
    DNS服务: 是分布式域名服务器,每台服务器维护一部分IP地址到URL的映射,没有任何一台服务器可以支撑全部的映射关系;
    DNS通过递归查询DNS迭代查询非递归查询三种方式去查找URL对应的IP地址;

ARP请求

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。其作用是在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的

  • MAC地址是设备的一种标识,具有全球唯一性。
  • MAC地址是物理层的,应用于数据链路层,当一个数据报文要发送时,先添加源目ip地址,再添加源目mac地址,对端收到后,会拆解数据报文,先拆mac地址,然后查看数据报文的目的ip是不是自己;
  • 如果是,就会把数据报文自己留下来;
  • 如果不是,就会查自己的路由表,看有没有目的ip在里面,有的话,再次把已经拆解的数据报文再次添加上mac地址,继续往下传;

综上,数据传输需要依赖MAC地址,此时ARP协议就实现了IP地址到MAC地址的解析;

TCP/IP协议

经过DNS和ARP流程后,浏览器会获取到目的服务器的IP和MAC地址,然后根据TCP/IP协议建立数据连接;

需要明确的是,此处说的TCP/IP协议,是指一个协议族,并不存在一种名叫TCP/IP的特定协议,该协议族包含,TCP协议IP协议IMCP协议HTTP协议等,包含了TCP/IP四层模型中的应用层传输层网络层数据链路层
在这里插入图片描述

IP协议
  • IP协议作用于网络层,也叫网际协议;
  • 作用:各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC地址;
  • IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址;
  • IP 地址可以和 MAC 地址进行配对。IP 地址可变换,受所在区域网络影响,但 MAC地址基本上不会更改。
TCP协议
  • 按层次分,TCP 位于传输层,提供可靠的字节流服务
  • 字节流服务:为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理;
  • TCP可靠性策略:TCP 协议采用了三次握手(three-way handshaking)策略;三次握手的过程其实就是浏览器和服务器交换 SYN 同步和 ACK 确认消息的过程。
    在这里插入图片描述
    假设图中左端是客户端主机,右端是服务端主机,一开始,两端都处于CLOSED(关闭)状态。

1.服务端进程准备好接收来自外部的 TCP 连接。然后服务端进程处于 LISTEN 状态,等待客户端连接请求。
2.客户端向服务器发出连接请求,请求中首部同步位 SYN = 1,同时选择一个初始序号 sequence ,简写 seq = xSYN 报文段不允许携带数据,只消耗一个序号。此时,客户端进入 SYN-SEND 状态。
3.服务器收到客户端连接后,,需要确认客户端的报文段。在确认报文段中,把 SYNACK 位都置为 1 。确认号是 ack = x + 1,同时也为自己选择一个初始序号 seq = y。请注意,这个报文段也不能携带数据,但同样要消耗掉一个序号。此时,TCP 服务器进入 SYN-RECEIVED(同步收到) 状态。
4.客户端在收到服务器发出的响应后,还需要给出确认连接。确认连接中的 ACK 置为 1 ,序号为 seq = x + 1,确认号为 ack = y + 1。TCP 规定,这个报文段可以携带数据也可以不携带数据,如果不携带数据,那么下一个数据报文段的序号仍是 seq = x + 1。这时,客户端进入 ESTABLISHED (已连接) 状态
5.服务器收到客户的确认后,也进入 ESTABLISHED 状态。

其中,在确认阶段来回发送了三次报文信息,也称三次握手

  1. 首先,浏览器向服务器发送一个连接请求,表明需要开始向服务器发送请求数据了;
  2. 其次,服务收到连接请求后,会发送一个确认收到连接请求的确认报文;
  3. 第三,浏览器收到服务器回传的确认报文后,再次向服务器发送确认收到服务端的确认信息;
  4. 第四,此时客户端,服务端都明确建立了连接,就开始传输数据;

四次挥手
当连接需要端开时,在客户端和服务端,任何一方都可以断开连接,但必须是一方主动断开,另一方被动断开;

四次挥手:

  1. 客户端想要释放连接,向服务端发送TCP报文,请求断开
  2. 服务端收到请求后,确认客户端想要断开连接,返回收到确认的报文,并开始准备断开连接
  3. 服务端在准备好断开连接后,进入等待断开状态,并发送报文给客户端,自己准备好了;
  4. 客户端在收到服务端准备好断开连接信息后,客户端发送确认报文,自己知道服务端准备好了
  5. 服务端开始断开连接;【这种情况下,最后是服务端断先断开连接】
    在这里插入图片描述

前"两次挥手"既让服务器端知道了客户端想要释放连接,也让客户端知道了服务器端了解了自己想要释放连接的请求。于是,可以确认关闭客户端到服务器端方向上的连接了

后“两次挥手”既让客户端知道了服务器端准备好释放连接了,也让服务器端知道了客户端了解了自己准备好释放连接了。于是,可以确认关闭服务器端到客户端方向上的连接了,由此完成“四次挥手
在这里插入图片描述

UDP协议

1.用户数据协议,与TCP协议一样处于传输层;
2.面向无连接,有数据就直接发送,不会确定稳定的连接;
3.有单播,多播,广播等功能;
4.发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。因此,应用程序必须选择合适大小的报文
5.不可靠,不需要建立连接,想发就发;

HTTP协议

  • 当服务端和客户端建立稳定的连接后,就开始互通信息,此时需要用到HTTP协议进行通信;
  • HTTP协议中,POST或者GET是最常用的请求,客户端发送POSTGET请求后,服务端会返回请求响应体;
  • 获取到响应信息,浏览器就可以开始构建渲染树,并展示在页面中;

参考
TCP/IP协议
三次握手/四次挥手
MAC地址用处
浏览器输入网址后…
ARP协议详解
有了IP地址为什么还要mac地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值