纲要
这本书详细介绍了在浏览器输入URL到显示页面的整个过程,分章节地介绍了这个过程中从 浏览器客户端到协议栈、网卡,再到集线器、交换器、路由器,再到防火墙、缓存服务器,再到服务器以及返回的的整个过程。
1、解析URL
- URL通常由协议、域名、端口、文件目录、请求参数构成——http://www.lab.glasscom.com/dir/
- 解析URL,确定web服务器、文件所在的目录、需要对文件进行什么样的操作
2、生成HTTP请求
- 解析URL后,生成对应的HTTP请求。web服务器收到HTTP请求后发送HTTP响应。
3、DNS解析
- 操作系统的DNS客户端请求DNS服务器,对域名进行解析,得到对应的IP地址
4、委托操作系统的协议栈,TCP模块创建套接字socket
- 浏览器把HTTP请求和web服务器的IP委托给操作系统的协议栈,向web服务器发送数据
- 操作系统的协议栈TCP模块创建套接字socket,与服务器端的套接字socket建立连接后,就可以收发数据了。
- TCP模块在http报文的基础上添加tcp首部,创建TCP数据包,通过三次握手和四次挥手与服务器建立TCP连接和释放连接。
5、协议栈的IP模块
- TCP模块委托IP模块,在tcp报文上添加ip首部,创建IP数据包
6、网卡
- 最后将IP数据包交给网卡,转化成网线中传输的光电信号,发送出去
7、数据通过集线器、交换机、路由器在网络中传输
8、到达web服务器
-
服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
9、浏览器接收响应
-
浏览器解析渲染页面:浏览器解析并渲染视图,若遇到对 js 文件、css 文件及图片等静态资源 的引用,则重复上述步骤并向服务器请求这些资源;浏览器根据其请求到的资源、数据渲染页面, 最终向用户呈现一个完整的页面。
DNS域名解析的原理
1、DNS客户端(解析器)的工作原理
- 为了查询域名对应的IP地址,我们的计算机中有DNS客户端,也叫作解析器。解析器其实就是位于操作系统socket库中的一个程序组件。
- 解析器携带域名向DNS服务器发送查询请求,DNS服务器的响应消息中就含有域名对应的IP地址。
- 解析器取出IP地址后,放入浏览器指定的内存中,下一次再向相同域名的web服务器发送请求时,就可以直接从浏览器指定内存中取出对应IP地址。
2、DNS服务器工作原理
- DNS服务器中维护一张表,表中有记录的域名和它对应的IP信息。DNS客户端(解析器)发送查询请求后,DNS服务器只需要返回对应的IP地址就可以了。
- 但是网络中有很多服务器,不可能域名都存放在一台DNS服务器中。DNS服务器采用分层的结构来保存域名的,因此一个域名其实是分布式地存储在多台DNS服务器上的。
- 例如www.baidu.com,域名是通过 . 来分层的,对应着不同层级的DNS服务器,越靠右代表层级越高。低层级的DNS服务器会事先在高层级DNS服务器中注册它的IP。
- 1、首先查询最近的一台DNS服务器,从而找到根域服务器。
- 2、从根域服务器中查找 com域DNS服务器的IP地址,从而找到com域DNS服务器
- 3、从com域DNS服务器中找到baidu.comDNS服务器
- 4、以此类推,最终找到完整域名所存放的DNS服务器,取出对应IP
域名缓存
- DNS服务器中有缓存功能, 会把缓存之前查询过的域名。
- 通过自顶而下来一层一层查询DNS服务器的过程中,如果中途某个DNS服务器已经缓存了该域名,可以直接返回响应,不需要继续向下一级DNS服务器查询。