从输入URL到页面加载发生了什么

这个过程其实很简单,其实就是客户端向服务器发生请求,服务器将结果返回客户端的过程,但是真正的实现过程却很复杂,总体来说,可以细分为以下几个部分:

什么是URL

URL的学名叫做统一资源定位符 ,是互联网资源的地址,它包含协议、服务器名称(或IP地址)、路径和文件名,协议包括最常见的HTTP协议,和HTTPS、FTP等,服务器名称就是指的网站名如baidu.com,路径和文件名指的是,/index.html这类的文件,如果在后边加上路径和文件名,就可以访问这个文件了。

DNS解析

www.baidu.com只是为了方便人们记忆,它真正意义上的地址是它的IP地址,每个计算机都有一个独一无二的IP地址,把一个网址转换到IP地址,这个过程就是DNS解析。那么这个过程是怎么完成的呢,首先需要在本地域名服务器中查找这个网址对于的IP地址,找不到的话依次去根服务器、com顶级服务器、baidu.com域名服务器查找IP地址,查到之后立即返回给本地域名服务器,这个IP地址就算找到了,返回给个人计算机。

DNS缓存

从解析过程来看,这个过程太复杂了,只是要求找到一个IP地址,就要绕这么多圈,有没有优化方式呢,当然有,那就是将IP地址缓存下来,DNS存在着多级缓存,从离浏览器的距离排序的话,有以下几种: 浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。这样就大大降低了查找IP地址的复杂度。

建立TCP连接

拿到IP地址后,浏览器就知道该向哪个服务器发送请求了,这就用到了传输层的TCP协议,TCP是一种面向有连接的传输层协议,建立连接需要进行三次握手才能互相传输数据,在TCP连接建立完成之后就可以发送HTTP请求了。

浏览器发送HTTP请求

TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。所以数据传输的过程中实际是将HTTP请求数据一层层包起来,最后通过数据链路层传出去。

服务器接收HTTP请求

这就是通信过程中的出栈过程,服务器在每层不断地拆除首部与尾部,得到最终传输的数据,也就是浏览器发过来的HTTP请求数据,每台服务器上都会安装处理请求的应用——web server,Web server能够解析HTTP协议。当Webserver接收到一个HTTP请求,会返回一个HTTP响应,比如送回一个HTML页面。

浏览器接收HTTP响应,浏览器加载页面

浏览器接收HTTP响应的数据后,通过服务器处理返回的html字符串结果会被浏览器读取解析,也就是浏览器加载页面的过程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值