1、DNS(Domain Name System)
定义:域名系统,是一种将域名转换为IP地址的分布式数据库系统。
工作原理:当用户在浏览器中输入一个域名时,操作系统会向本地DNS服务器发起查询请求,如果本地DNS服务器缓存中没有该域名的记录,它会代表客户端向其他DNS服务器进行查询,直到得到答案,然后层层返回,最终将结果交给应用程序(如浏览器),当输入www.example.com时,本地DNS服务器先查找自身缓存,若没有,则向根DNS服务器查询,根服务器告诉它顶级域名.com的DNS服务器地址,本地DNS服务器再向.com服务器查询,.com服务器再告诉它example.com的权威DNS服务器地址,最后从权威DNS服务器得到www.example.com的IP地址。
层次结构:DNS具有层次化的命名体系,包括根域、顶级域、二级域、子域等,根域位于最顶层,用点“.”表示;顶级域如.com、.org、.net等;二级域是在顶级域下面的域,如baidu.com中的“baidu”;子域则是在二级域或更低级域下面的域,如news.baidu.com中的“news”。
记录类型
A记录:将域名映射到IPv4地址,是最常见的记录类型,将www.example.com映射到192.0.2.1。
AAAA记录:将域名映射到IPv6地址,用于支持IPv6网络环境。
CNAME记录:别名记录,允许将多个域名映射到同一个目标域名,将blog.example.com和www.example.com都指向同一个IP地址。
MX记录:邮件交换记录,指定处理电子邮件的服务器优先级,确保电子邮件能够准确送达。
应用场景:主要用于将人类可读的域名转换为机器可识别的IP地址,使得用户可以通过域名访问网站、发送电子邮件等网络服务,也可用于负载均衡,通过将一个域名解析到多个IP地址,分散流量负载。
名称 | 功能 | 示例 |
A记录 | 将域名映射到IPv4地址 | 将www.example.com映射到192.0.2.1 |
AAAA记录 | 将域名映射到IPv6地址 | 将www.example.com映射到2001:db8::1 |
CNAME记录 | 别名记录,允许将多个域名映射到同一个目标域名 | 将blog.example.com和www.example.com都指向同一个IP地址 |
MX记录 | 邮件交换记录,指定处理电子邮件的服务器优先级 | 将mail.example.com指向邮件服务器的IP地址 |
2、HTTP(Hyper Text Transfer Protocol)
定义:超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网数据通信的基础。
工作原理
建立连接:HTTP是基于TCP/IP协议的应用层协议,默认端口号为80(也可用其他端口),当用户在浏览器中输入网址或点击链接时,浏览器与服务器之间会建立一个TCP连接。
发送请求:浏览器通过TCP连接向服务器发送HTTP请求报文,请求报文由请求行、请求头部、空行和请求体四部分组成,请求行中包含请求方法(如GET、POST等)、请求的URL和HTTP版本号等信息。
响应请求:服务器接收到请求后,会根据请求报文中的信息进行处理,并返回一个HTTP响应报文给浏览器,响应报文由状态行、响应头部、空行和响应体四部分组成,状态行中包含HTTP版本号、状态码和状态消息,状态码表示请求的结果,如200表示成功,404表示未找到等。
请求方法
GET:请求获取URL所指定资源的信息,通常用于从服务器读取数据,不会对服务器上的资源产生副作用,当在浏览器中输入一个网址时,默认就是使用GET方法。
POST:用于向指定资源提交要被处理的数据,常用于提交表单或上传文件等操作,可能会改变服务器上的资源状态。
PUT:用于向指定资源位置上传内容,通常会替换目标资源的所有当前表现形式。
DELETE:请求服务器删除RequestURI所标识的资源。
响应状态码
1xx:信息性状态码,表示请求已经收到,正在处理,100 Continue表示服务器仅接收到部分请求,但还未开始处理实体部分,客户端应继续发送剩余请求或忽略此响应。
2xx:成功状态码,表示请求已成功被服务器理解并接受,其中200 OK表示请求已成功,请求的信息已作为响应返回;201 Created表示请求成功并且服务器创建了资源。
3xx:重定向状态码,表示需要后续操作以完成请求,301 Moved Permanently表示所请求的资源已永久移动到新位置;302 Found表示所请求的资源临时驻留在不同的URI下。
4xx:客户端错误状态码,表示请求包含语法错误或无法完成请求,400 Bad Request表示请求中有语法问题,导致服务器无法理解请求;401 Unauthorized表示未授权,需要提供用户名和密码。
5xx:服务器错误状态码,表示服务器在处理请求的过程中发生了错误,500 Internal Server Error表示服务器遇到错误,无法完成请求;503 Service Unavailable表示服务器当前无法处理请求,可能是暂时超载或维护。
应用场景:广泛应用于网页浏览、文件下载、API调用等场景,用户通过浏览器访问网站时,浏览器与服务器之间通过HTTP协议进行数据传输,实现网页的加载和显示;在移动互联网应用中,APP与服务器之间的数据交互也常常使用HTTP或HTTPS协议。
3、DNS和HTTP的关系:DNS和HTTP都是互联网中不可或缺的基础协议,它们在网络通信中各自发挥着关键作用,并且相互配合,当用户想要访问一个网站时,首先需要通过DNS将域名解析为IP地址,然后才能通过HTTP协议与服务器建立连接并进行数据传输,可以说,DNS是HTTP通信的前提和基础,没有DNS将域名转换为IP地址,HTTP请求就无法准确地找到目标服务器。
4、相关问题与解答
问题一:为什么有时候修改了DNS记录,但是域名解析并没有立即生效?
解答:这是因为DNS解析结果受到多级缓存的影响,当域名对应的IP地址发生变化时,各级DNS服务器都会缓存之前的解析结果,所以可能需要较长时间才能全球同步更新,越靠近根的DNS服务器缓存时间越长,越靠近用户的DNS服务器缓存时间越短,可以使用一些工具来强制刷新本地DNS缓存,或者等待一段时间让缓存自然过期。
问题二:HTTP和HTTPS有什么区别?
解答:HTTP(超文本传输协议)是一种明文传输协议,数据在传输过程中没有加密,容易被窃取和篡改;而HTTPS(超文本传输安全协议)是在HTTP的基础上添加了SSL/TLS加密层,对传输的数据进行加密处理,保证了数据的安全性和完整性,在使用HTTPS时,浏览器和服务器之间会进行身份验证,确保通信双方的真实性和可靠性,用户在访问网站时,如果网址是以“https://”开头的,就表示使用的是HTTPS协议。