三、在浏览器输入网址后发生了什么

当我们打开浏览器,在地址栏中输入www.baidu,com,按下回车键,计算机都做了什么事?

1、请求流程

①、域名解析

首先会将输入的URI解析成服务IP,这个过程涉及复杂,下面单独说明

 

②、先建立TCP连接

拿到目标服务IP后,浏览器会通过TCP和目标服务器建立TCP连接,毕竟HTTP也是通过TCP来实际传输数据的,所以建立连接是基础。

经过 SYN、SYN/ACK、ACK 的三个包之后,浏览器与服务器的 TCP 连接就建立起来了。

 

③、发送请求

通过 TCP 发送“GET / HTTP/1.1”请求报文,服务器在收到请求后会给客户端回复一个ACK包(在 TCP 协议层面确认,HTTP层看不到),表示刚才的请求已收到

 

④、服务器处理

当服务器接受到请求后会先解析报文、处理请求、最后结果响应,拼成符合 HTTP 格式的报文,发回去。

 

 

⑤、客户端处理结果

当浏览器收到回复后首先要给服务器回复一个 TCP 的 ACK 确认,表示已经收到了,因为是TCP层的确认报文,所以HTTP层还是不可见的。

然后客户端会进行报文解析,再根据资源类型,调用排版引擎、JavaScript 引擎等等处理一下,然后在浏览器窗口里展现页面。

 

 

2、DNS域名解析

①、为什么需要域名

  • 为了好记,baidu.com肯定比一窜数据好记;
  • 而且这个IP还有可能变动呢(比如更换个服务器、扩容、缩容);
  • 对于访问量很大的网站,还可以通过域名来做负载均衡,一个域名对应多台服务器,客户端换着请求;对于baidu.com这种大规模的网站,还可以针对地理位置来返回最近的服务器,响应更快
  • 域名还可以标志组织,因为他就是一个命名空间,使用多级域名就可以划分出不同的国家、地区、组织、公司、部门,每个域名都是独一无二的,可以作为一种身份的标识,例如org表示政府组织

 

②、域名的组成

www.baidu.com

主机名.~.二级域名.顶级域名

域名是一串用"."分隔的有层次的结构,从最右边开始是“顶级域名”、“二级域名”,最左边的是主机名,通常用来表明主机的用途,比如“www”表示提供万维网服务、“mail”表示提供邮件服务,不过这也不是绝对的,名字的关键是要让我们容易记忆。

 

③、域名的解析

DNS 的核心系统是一个三层的树状、分布式服务,基本对应域名的结构:

  1. 根域名服务器:管理顶级域名服务器,返回“com”“net”“cn”等顶级域名服务器的 IP 地址;
  2. 顶级域名服务器:管理各自域名下的权威域名服务器,比如 com 顶级域名服务器可以返回 baidu.com 域名服务器的 IP 地址;
  3. 权威域名服务器:管理自己域名下主机的 IP 地址,比如 apple.com 权威域名服务器可以返回 www.baidu.com的 IP 地址。

 

比如要访问www.baidu.com,就要进行这样的查询过程(注意,是从右向左解析查询):

  • 访问根域名服务器,拿到“com”顶级域名服务器的地址;
  • 访问“com”顶级域名服务器,拿到“baidu.com”域名服务器的地址;
  • 最后访问“apple.com”域名服务器,拿到“www.baidu.com”的地址。
 

从上面的流程也看到了,如果每个域名解析都走一遍这样的流程,那根域名服务器哪受得了啊,不得早崩了。所以,还得一些措施来减少这些很重要的域名服务器的压力。是时候祭出缓存大法了,通过这两种方式来减轻每一级的域名解析服务器的压力。

非权威域名服务器:有些非DNS官方的公司、或者运营商会搭建自己的DNS服务器,用来作为用户DNS的解析代理,要是自己的DNS服务器有这样的缓存,就直接给用户返回,要是没有就去核心DNS系统查询。

 

主机缓存:也就是你的电脑把域名解析的历史记录下来,避免每次都去外部解析,主机缓存会有多层:

  • 操作系统缓存
  • “主机映射”文件,Windows 里是“C:\WINDOWS\system32\drivers\etc\hosts”

 

整个域名解析过程就是:

先查浏览器缓存,然后是系统缓存->hosts文件->局域网域名服务器->广域网域名服务器->顶级域名服务器->根域名服务器

 

那么你知道如果直接在地址栏里输入IP访问时会发生什么吗?

 

#学习路径#
卡夫卡的HTTP学习笔记 文章被收录于专栏

一个专栏搞定HTTP学习和面试,都是自己的学习笔记。

全部评论
长知识了,感谢楼主啊
点赞 回复 分享
发布于 2022-07-05 14:31
www.baidu.com
点赞 回复 分享
发布于 2022-07-27 02:06
请问在linux里面输入curl 一个url跟在Windows上有什么区别😅
点赞 回复 分享
发布于 2022-08-24 01:02 四川

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
4 34 评论
分享
牛客网
牛客企业服务