dahege 2020-03-03
当在浏览器中输入url按下enter键后,直到拿到返回数据前,这段时间都发生了些什么?其实发生了很多事情。
1.输入的url域名通过DNS解析成 IP地址返回
2.浏览器向返回的这个IP发送请求信息(包括请求头Request Headers和请求体Request Body)
3.服务器向浏览器返回一个响应信息(包括响应头Response Headers和响应体Response Body)
第2、3步都容易理解,可为什么要线经过第1步呢。我们先来了解一下DNS是什么?
DNS全称Domain Name System(Domain Name Service),又称域名系统,是互联网的一项服务,
主要用来保存、管理、分配全球的IP地址的,在DNS服务器中保存着域名和IP地址的对应关系,为人们提供域名解析服务。
全球一共有13台根域名服务器,美国10台,英国、瑞典、日本各一台。
服务器的包含关系是:
根DNS服务器 > 顶级DNS服务器 > 主DNS服务器 > 二级DNS服务器
图片源自:https://www.cnblogs.com/zengcongcong/p/10750387.html
根DNS服务器:掌握着所有顶级DNS的 IP和域名的对应关系
顶级DNS服务器:顶级域名包含.com、.cn、.org等,掌握着主DNS的 IP和域名的对应关系
主DNS服务器:掌握着二级域名DNS服务器的 IP和域名的对应关系
二级域名的DNS服务器 :掌握着你要访问的域名和 IP的对应关系
1.先向DNS缓存(浏览器缓存-->操作系统缓存-->路由器缓存-->当地服务器缓存)查看有没有该域名对应的 IP地址,有直接返回,没有接着往下
2.向根DNS服务器询问域名对应的 IP地址(根DNS服务器会让他去查询顶级DNS服务器)
3.向顶级DNS服务器询问域名对应的 IP地址(顶级DNS服务器会让他去查询主DNS服务器)
4.向主DNS服务器询问域名对应的 IP地址(主服务器会让他去查询二级DNS服务器)
5.向二级DNS服务器询问域名对应的 IP地址(二级DNS服务器会返回对应的 IP地址)
6.接收到 IP地址后,会先把 IP和域名对应关系保存到本地DNS缓存,以便下次方便访问,一般保存在这个路径下C:\Windows\System32\drivers\etc\hosts