从浏览器打开http://www.baidu.com地址回车发送请求到看到页面的过程:
主要分成 两个 步骤:
第一步:DNS服务器将域名解析成IP
具体来说:
- 客户端用户从浏览器输入 www.baidu.com 网站网址后回车后,浏览器会查询浏览器缓存,查找是否存在网址对应的IP解析记录。如果有,就直接获取到IP地址,然后访问网站;
- 如果浏览器缓存没有该记录,则在操作系统缓存即本地hosts文件中查找对应的IP;
- 如果还是没有,则将查询请求发给路由器,查看路由器缓存里是否有该IP地址的缓存;
- 如果依然没有,向本地域名服务器(Local DNS:一般是网络服务提供商,比如电信,移动,联通服务商)发出请求,获取IP;
- 以上都失败的话,LDNS会从DNS系统的“.”根开始(根域名服务器)请求www.baidu.com域名的解析,经过一系列的查找各个层次DNS服务器,最终会查找到www.baidu.com域名对应的授权DNS服务器,而这个授权DNS服务器,正是该企业购买域名时用于管理域名解析的服务器。这个服务器有www.baidu.com对应的IP解析记录,如果此时都没有,就表示企业的运维人员么有给www.baidu.com域名做解析;
- LDNS把收到来自授权DNS服务器关于www.baidu.com对应的IP解析记录发给客户端浏览器,并且在LDNS本地把域名和IP的对应解析缓存起来,以便下一次更快的返回相同的解析请求的记录;
第二步:客户端浏览器获取到了www.baidu.com的对应IP地址,接下来浏览器会请求获得的IP地址对应的Web服务器,Web服务器接收到客户的请求并响应处理,将客户请求的内容返回给客户端浏览器;
扩展
- DNS是什么:
域名系统(Domain Name System,DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53[1]。 - IP是什么:
互联网协议地址(Internet Protocol Address,又译为网际协议地址),缩写为IP地址(IP Address),是分配给用户上网使用的网际协议(英语:Internet Protocol, IP)的设备的数字标签。 - tcp/ip三次握手(建立连接协议):
通过dns解析之后,拿到了ip,就可以通过ip向服务器发送http请求了,因为http是工作在第七层应用层,tcp是工作在第四层传输层,所以发生http请求之前,还会进行tcp的三次握手。
tcp的三次握手是:客户端首先向服务器发送一个带有SYN标识和一个seq的随机数(“在吗?”),服务端收到后,需要给客户端回应一个ack,ack的值就是刚才的seq随机数的值+1,在回应包里,还包含一个SYN的标识和一个seq随机数(“在呢,干啥?”)。客户端收到服务端发过来的回应包之后,再给服务端发送一个ack,ack的值就是刚才服务端发过来的seq的值+1(“要个xxx数据呀”)。上面三步完成之后,三次握手就完成了,下面就可以开始传数据了
参考资料:
https://blog.csdn.net/m0_37812513/article/details/78775629
https://www.cnblogs.com/xsilence/p/6035559.html
https://blog.csdn.net/yonggeit/article/details/72857630