浏览器输入URL回车之后的流程
这个问题牵涉到计算机网络的方方面面,每一步单拎出来都可以扩展很多知识,在这里做一个总结,对关键部分进行深入探讨。
-
浏览器解析网址获得相应信息
-
浏览器生成HTTP报文
-
浏览器通过Socket库下的解析器发出DNS查询请求
-
通过DNS服务器找到对应IP地址并响应给解析器
-
浏览器拿到目标IP后通过TCP三次握手与服务端建立连接
-
TCP模块在数据块前加上TCP头部传递给IP模块
-
IP模块添加IP头部和MAC头部之后将封装好的包传递给网卡等硬件设备
-
网卡和相关驱动程序将数字信号转成电信号或光信号
-
交换机、路由器进行数据包转发
-
服务端接收到请求,将响应数据按传输的顺序反向传输
-
接下来的步骤是请求路径的逆序
-
最后浏览器顺利获得响应数据,渲染成HTML页面进行展示
牵涉到的相关协议:HTTP、TCP、UDP、DNS、ICMP、IP
DNS域名解析流程
浏览器在发送DNS请求时,先查看浏览器缓存是否有记录,如果没有,再查看DNS解析器是否有记录,若无接着查看本地的host文件,如无请求到达最近的(或指定的)DNS服务器,首先查看DNS缓存中是否有记录,如果仍旧没有查询到,那么DNS请求会从根服务器往下,逐级查询DNS服务器中的注册表,最终一定会在某一级中找到返回查询结果。大致流程如下图(自己画的,顺便推荐一个在线作图网址,支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等:https://processon.com/