有个经典的前端面试题:从输入 URL 到页面加载发生了什么?html
《HTTP权威指南》中列出了浏览器怎样经过HTTP显示位于远端服务器中的某个简单HTML资源的步骤:前端
(a)浏览器从 URL 中解析出服务器的主机名;面试
(b)浏览器将服务器的主机名转换成服务器的IP地址;segmentfault
(c)浏览器将端口号(若是有的话)从URL中解析出来;浏览器
(d)浏览器创建一条与 Web 服务器的 TCP 链接;缓存
(e)浏览器向服务器发送一条 HTTP 请求报文;性能优化
(f)服务器向浏览器回送一条 HTTP 响应报文;服务器
(g)关闭链接,浏览器显示文档。网络
这几个步骤实际上是归纳地很笼统抽象的,而在 《网络是怎样链接的》 这本书中,对几个步骤进行了详尽的扩充,它用图解的方式生动形象地介绍了网络是如何链接的。看完这本书,也就能天然而然地能在脑中浮现出前面那道经典面试题的过程了,固然,不止这些。架构
首先,书的开头就给咱们展示了一副网络探索线路图:
网络 = 网络应用程序(如浏览器和Web服务器) + 负责搬运数字信息的机制。
【♠ Web浏览器】 当咱们输入这样的网址时:www.lab.glasscom.com/sample1.htm… 浏览器就会按照必定的规则去分析这个网址的含义, 而后根据其含义生成请求消息。接着,浏览器会委托操做系统中的网络控制软件将消息数据发送出去。
【协议栈、网卡】 接下来,协议栈(即网络控制软件)会将从浏览器接收到的消息打包,而后加上目的地址等控制信息以后,将包交给网卡(负责以太网或无线网络通讯的硬件)。而后,网卡会将包转换为电信号并经过网线发送出去。
【集线器、交换机、路由器】 网卡发送的包会通过交换机等设备,到达用来接入互联网的路由器。路由器的后面就是互联网,网络运营商会负责将包送到目的地。
【接入网、网络运营商】 互联网的入口线路成为接入网,接入网链接到签约的网络运营商,并接入被成为接入点的设备。接入点的实体是一台专为运营商设计的路由器,接入点的后面就是互联网的骨干部分,存在不少运营商和大量的路由器,这些路由器相互链接,组成一张巨大的网, 而咱们的网络包就在其中通过若干路由器的接力, 最终被发送到目标 Web 服务器上。
【防火墙、缓存服务器】 经过骨干网以后,网络包最终到达了 Web 服务器所在的局域网中。接着,它会遇到防火墙,防火墙会对进入的包进行检查。检查完以后,网络包接下来可能还会遇到缓存服务器。网页数据中有一部分是能够重复利用的,这些能够重复利用的数据就被保存在缓存服务器中。
【♠ Web服务器】 当网络包到达 Web 服务器后, 数据会被解包并还原为原始的请求消息,而后交给 Web 服务器程序。和客户端同样,这个操做也是由操做系统中的协议栈(网络控制软件)来完成的。接下来,Web 服务器程序分析请求消息的含义,并按照其中的指示将数据装入响应消息中,而后发回给客户端。
浏览器如何解析网址:
请求消息实际的样子:
浏览器如何向 DNS 服务器查询域名对应的 IP 地址:
DNS 服务器进行接力的方法:
委托是如何完成的:
心动的话,一块儿来学习鸭ᕦ(・ㅂ・)ᕤ,感受得看上好几遍才能印象深入呢~
ps:看完这本书,也能理解不少Web性能优化方面的知识呢,好比减小HTTP请求、使用CDN、减小DNS查询、避免重定向等等。