最近在看《http权威指南》这本书,看完第一章后说说对于在浏览器中输入URL地址到页面呈现在我们眼前这个过程的理解。
根据我的理解画了一张草图:
步骤分析:
浏览器解析url地址:
url地址一般有三种表现形式:
http://172.5.20.131:8080/admin/index.html
http://172.5.20.131/admin/index.html
http://bucunzai.com
浏览器会从url中提起服务器地址和tcp端口号以及网络协议:
浏览器在想服务器发送http请求的时候必须是:协议+ip+端口的形式,那么上面这三种形式的url貌似只有第一种符合要求,
对于第二种第三种没有端口号url是怎么处理的呢?其实浏览器如果解析不到端口号会根据http协议使用默认的端口号的,http协议默认的是80端口,https默认的是8443端口,不认问为什么是80和8443,应为这是标准,别人制定的,就像红灯停绿灯行一样。
对于第三种这种只有域名没有ip的url是怎样的呢?这里就要用到我们的DNS域名系统了。浏览器会向DNS系统请求域名对应的IP地址和端口,然后返回给浏览器。
DNS域名解析
DNS域名服务只有当解析到url的服务器地址不是IP是域名的时候才会去访问,如果是我们第一种url的形式,是不用去访问DNS服务的。他的功能就是将域名转化为IP+端口的形式。下面这段简介来之百度。
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。
发起http请求
通过上面两个步骤我们已经获取到了完整的ip和端口了,然后浏览器就会作为一个代理人向服务器发起http请求,这个过程是同步的,所以这个时候如果响应时间比较长就会出现页面空白的情况,这也是我们作为前端需要优化的地方,如何缩短http的请求响应时间和页面加载速度。
服务器处理请求
服务器在收到请求后,会根据url的pathname来执行相对应得处理,然后将处理结果返回给浏览器。
浏览器解析服务器响应
浏览器在收到服务器的响应的时候,会去解析响应头,如果是状态码是302重定向的话,浏览器会重新向服务器给的重定向地址发起http请求,如果返回文件的MIME类型是一个html文档,这个时候浏览器就会开始文档解析,在这个过程中可能会伴随着很多http请求,请求外部脚本,样式表,图片,视频,音频….,最后当文档解析完成后,一张美丽的页面就呈现在我们面前了。如果是其他的MIME类型,浏览器会根据自己对于不同类型的处理方式做不同的处理。
大体上就这5个步骤吧。当然上面的请求的协议是http,如果是https还有一个下载证书和加密的过程。
联系客服