在浏览器中访问网页的全过程

一 表象

1.1 输入url -> 跳转页面

我们浏览页面,通常分成两步:

  • 输入url:填入网址
  • 跳转页面:点击跳转
  • 结果:要么页面显示出来,要么会失败,失败后大家最常见的就是404,其实不止这一种状态码

1.2 状态码

状态码一共有五种,分别以1-5开头:

  • 1XX
    • 服务器正在处理请求
  • 2XX
    • 成功码 请求处理成功
  • 3XX
    • 重定向 需要附加操作来完成请求
  • 4XX
    • 失败码 客户端错误 服务器无法处理请求
  • 5XX
    • 失败码 服务器错误 服务器处理请求出错

二 实际过程

  • DNS域名解析
  • TCP连接
  • 发送HTTP请求
  • 服务器解析并返回HTTP报文
  • 浏览器解析渲染
  • 连接结束

2.1 输入url - > 解析url(应用层)

拿百度来说,我们输入的是www.baidu.com,这个是符合人类命名习惯的域名,但是计算机可不认识,因此需要把域名解析成计算机认识的地址,此处用到的解析协议是DNS(域名解析),可以将域名解析成对应的ip地址,这样计算机就知道这个资源在哪了

2.2 建立连接(传输控制层)

知道资源在哪之后,我们发送我们的消息,要建立连接啊,这个过程有点类似于现在的快递,知道收货人地址后,要建立物流连接。不同于快递的是,我们此处使用的tcp协议,会使用三次握手的方式来建立连接

2.3 发送连接数据(网络层)

三次握手中,请求是以数据的形式发送的,这个数据以什么格式发送才能被网络认识呢?这里我们在网络层使用了ip协议,将数据封城ip数据包的格式传输

2.4 请求在网络中游走(数据链路层)

封装成ip数据包后需要再真实的数据链路中游走,在路由器之间传递时使用OPSF协议,寻址时使用了ARP协议(将ip地址解析为MAC地址)

2.5 服务器处理请求

2.6 服务器发回响应

2.7 显示网页(应用层)

网页的显示,都使用了HTTP协议(超文本传输协议)

三 访问过程中用到的协议或手段解析

3.1 DNS(域名解析系统)

是解决上网时机器命名的一种方法,我们想要访问别人,首先要知道别人家的地址,DNS就是将域名解析成计算机可以认识的ip地址

3.2 TCP(传输控制协议)

TCP是一种面向连接的,可靠的数据传输协议,TCP保证可靠的方式如下:

  • 分割数据:将数据分成一个个TCP认为合适大小的数据块
  • 标记顺序:将这些数据块排好序打上序号,确保传过去后按照顺序排好
  • 丢弃重复:接收端,TCP会丢弃掉重复的数据块
  • 流量控制:TCP接收端和发送端都有一个缓冲区,当发送数据速度超过缓冲区大小,会自动发送端放慢发送速度,防止包丢失。此处使用的协议是可变大小的滑动窗口协议
  • 拥塞控制:网络拥塞时,减少数据发送
  • ARQ:自动请求重传,每发完一个分组,就停下来等待接收端的确认,如果接收端反馈没收到数据,则重发一次
  • 超时重传:每次发送使用计时器计时,如果在时限内没有收到接收端的确认,则默认数据没送到,再发一次

猜你喜欢

转载自blog.csdn.net/weixin_44062399/article/details/123789077