我们以一张图片来开始我们的网络之旅。
当我们要访问一个服务器时,需要知道这个服务器的IP地址。否则是没有办法访问的。
但是我们日常访问Web服务器时,也没有输入IP地址呀,怎么也可以访问?
我们以在游览器中输入 https://www.csdn.net/ 为例。
其实计算机是不认识 https://www.csdn.net/ 的。没有关系,计算机不知道它可以问知道的人。
谁知道呢? —DNS服务器
每当你要查看一个网址的时候,计算机会向DNS服务器查询,这个域名对应的 IP 地址是什么。然后DNS 返回一个响应信息,里面就包含着 这个域名对应的IP地址。
有人问了,为什么不直接输入IP地址,这样不更快?
直接输入IP地址是快,但是太麻烦了。每个人每天访问的网址特别多,总不能把所有网址的IP地址背下来。
然后计算机得到了 IP地址,它就会去访问该IP地址对应的Web服务器,Web服务器在通过响应信息将数据返回给计算机,再显示在显示屏上。
而且:如果服务器设置的虚拟主机,是不能够通过IP地址访问到的。
其中:
http:http代表了访问Web服务器时使用http协议。
ftp:ftp 代表访问FTP服务器时使用了FTP协议。
然后我们再来讲一下DNS服务器。
因为现在的域名越来越多,一台服务器不可能将所有数据存储起来,这样不仅存储跟不上,而且搜索起来也更加耗时。
然后就有人研究出 利用域名的级别来进行管理,即用上级管理下级。
例如:www.csdn.net
越靠右的域名等级越高。最高的域名为 / 域名。
因为根域只有一个,所以所有的DNS服务器都保存着 / 域(根域)的IP地址。而且大部分的DNS 也保存着顶级域名的DNS服务器的地址(顶级域名)也不多。
游览器如何访问DNS服务器
当游览器要开始查询一个域名的时候(以www.csdn.net 为例),首先向最近的一台DNS服务器发送请求,假如这个DNS服务器不知道,它会返回根域的 IP 地址,然后游览器又去访问 根域,根域说我不知道你要找的,但是我知道.net的 IP 地址,然后返回.net的IP地址,游览器又去访问 .net的 IP地址,依次进行,直到找到目的域名时返回该域名的IP地址。
下面是图示:
至此,我们已经获得了Web服务器的IP 地址了。下一步就是访问它了。
访问Web服务器
知道了IP地址之后,直接可以委托操作系统内部的协议栈向这个目标IP地址发送请求了。
客户端访问Web服务器时,首先会发送头字段,然后在发送数据。
如果Web服务器没有找到你所需要的信息,则会返回404 NOT Found。
如果找到返回所需要的信息,然后游览器将数据提取,显示在网页上。
当网页中包含图片时,会在网页上占据一块空间,然后当所有文字信息填充后,在向Web服务器请求图片。
注:
1.因为游览器一次只能向Web服务器发起一个请求,所以服务器一次只能做出一次相应。
如果需要获取多个文件,必须对每个文件单独发送一条请求。
2.为了加快DNS服务器的相应,通过给DNS服务器增加缓存来实现的 —保存你之前访问过的域名。
但是每一条信息会有一个保存期。