计算机网络_浏览器输入一个地址回车之后都发生了啥?
首先我们肯定是输入网址,在输入网址的过程中:
1,浏览器就已经在书签或者历史记录等地方中查询并进行智能补全。同时浏览器对用户输入的网址做初步的格式化检查,只有通过检查才会进入下一步。
2,(如果没有格式问题)我们按下回车:
(1)首先会检查浏览器中是否有缓存,如果有且未过期那么直接返回,否则
(2)会去查找系统运行内存中的缓存,过程同上,如果依旧没有
(3)会去查找本地的hosts文件配置,如果仍无对应地址的IP会去请求
(4)本地的网络服务提供商(ISP),因为一些ISP也会提供缓存服务,如果依旧没有本地的DNS会去
(5)请求根域名服务器 (比如baidu.com.其完整写法应该是后边有一个点,那个点叫根域名服务器,全球一共13台,DNS服务器知道这13台根域名服务器的地址。) ,但是根域名服务器并不知道具体的IP地址,它将会返回它下一级的域名服务器即顶级域名服务器 ( 顶级域名是国家通用比如.com.cn.org 等) 地址给本地的DNS,
(6)本地的DNS会去请求顶级域名服务器,顶级域名服务器会返回给他下一级域名服务器的地址
(7)本地域名服务器会通过迭代最终查询到网址对应的IP返回给客户端
3,建立链接:客户端与服务器通过三次握手建立连接(https://www.cnblogs.com/KeithTee/p/15185032.html)
4,发送请求:连接建立以后开始http请求,发送请求报文。请求报文一般包括请求行:包含请求的方法、协议等;请求头:一些附加的信息,一般以键值对的形式存在,比如设置服务器缓存等等;空行:是请求头和请求主体之间必须的;请求主体:传给后端的参数。
5,接受响应:在接收到客户端的请求并解释之后会返回给客户端HTTP响应,响应报文格式类似请求报文。
6,渲染页面:
(1)解析html,构建DOM树
(2)解析css,构建CSS规则树
(3)合并DOM和CSS规则树,生成render渲染树
(4)布局render树,包括位置、尺寸信息等
(5)绘制render树,包括页面像素信息等等
(6)浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上
在文档请求不完全的情况下就开始渲染页面,同时,如果在解析的过程中遇到script的时候,文档的解析将会停止下来,立即解析执行脚本,如果脚本是外部的,则会等待请求完成并解析执行。所以,为了 不阻塞页面地呈现,一般会把script脚本放在文档的最后。
7,断开连接:通过四次挥手断开连接
过程中用到的协议:
(1) 应用层:HTTP(WWW访问协议),DNS(域名解析服务)
(2) 传输层:TCP(为HTTP提供可靠的数据传输),UDP(DNS使用UDP传输)
(3) 网络层:IP(IP数据数据包传输和路由选择),ICMP(提供网络传输过程中的差错检测),ARP(将本机的默认网关IP地址映射成物理MAC地址)