您现在的位置是:网站首页> 编程资料编程资料
详细讲解计算机网络——应用层_相关技巧_
2023-05-27
390人已围观
简介 详细讲解计算机网络——应用层_相关技巧_
应用层协议
在传输层之上,便是应用层。传输层的 UDP 报文和 TCP 报文段的数据部分就是应用层交付的数据。
应用层直接为用户提供服务,应用层有很多协议,每一个协议对应着计算机上的一个服务。
不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题。
应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序如何相互传递报文。
应用层协议定义了:
一、DNS
1、DNS 是什么
DNS 全名叫 Domain Name Server,中文俗称“域名服务器”
在 Internet 上域名与 IP 地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器,将域名(机器名) 转换为 IP地址。
DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。
这里的分布式数据库是指,每个站点只保留它自己的那部分数据。
如果整个因特网都使用一个域名服务器,负荷太大, 所以 DNS 设计成一个分布式的数据库,即使单个主机出故障也不会妨碍整个 DNS 系统。
另外 DNS 使得大多数域名都能在本地解析,仅少量解析需要在因特网上通信,因此 DNS 效率很高。
域名和 IP 是一对一关系吗?
- 实际上域名和 IP 是多对多关系。
- 一个 IP 可以被多个域名指向(购买的虚拟主机)
- 一个域名下也可以有多个 IP(负载均衡)
2、域名结构
- 域名指的是用点符号分割的计算机名字。
- IP地址对应着网络上的各个机器,但由于IP地址没有具体字面含义,难以记忆,有时IP地址还会经常更换。
- 引入域名来标识某台机器。域名是全球唯一的,每次申请域名,都会在域名服务器上查询是否存在。
- 所有域名都是以“ . ”开始的。
域名结构是树状结构,树的最顶端代表根域名
- 下一层是 .com、.cn 等顶级域名。
- 再下层就是二级、三级、四级域名。
- 顶级域名代表服务器或网站的性质常见有com(商用)、cn(中国)、net(提供信息)、edu(教育)、gov)等等。
- 二级域名:每个人都可以申请的,可以在顶级域名下申请,比如 www.esyc.com中esyc就是一个二级域名。在二级域名下你就可以注册其他域名了。
- 三级域名:www.mail.esyc.com中mail就是三级域名。在www.esyc.com这个域名注册这个三级域名的时候无需在征得com域名的同意。即一个域创建子域的时候不需要征求上级同意。
当然域名可以3级可以4级可以5级等等,级别是没有限制的,只需要满足,一个域名的各个组成部分不超过63个字符长,总长不超过255个字符长。
3、域名服务器
● 根域名服务器:最高层次的域名服务器,根域名服务器知道所有顶级域名服务器的域名和IP地址。任何一个本地域名服务器要对互联网上的任何域名进行解析,只要自己无法解析,就会首先求助于根域名服务器。
● 顶级域名服务器:管理在该顶级域名服务器下注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步需要去找的域名服务器的IP地址)。
● 权限域名服务器(权威域名服务器):负责一个区的域名服务器。当一个权威域名服务器不能给出最终的查询结果时,就会告诉发出请求方,下一步应该去找哪一个权威域名服务器。
● 本地域名服务器(递归服务器):主机发出 DNS 查询请求时,该请求首先会发给本地域名服务器。
理论上讲,任何标准域名的解析都需要经过层级式的域名解析。
即首先要通过第一层的根域名服务器的指引,才能去下面的顶级域名服务器寻找。
但是实际应用,提供接入服务的服务商的缓存域名服务器上可能已经有了域名与 IP 映射的缓存。
4、DNS 解析流程
● 在浏览器中输入 www.qq.com 域名,浏览器先检查自身缓存中有没有被解析过的这个域名对应的 IP 地址,如果有,就调用这个 IP 映射,完成域名解析。
● 如果浏览器缓存中未命中,操作系统会检查本地的 hosts 文件是否有该域名和 IP 的映射,如果有,就调用这个IP地址映射,完成域名解析。
● 如果 hosts 里也没有这个域名的映射,则向本地域名服务器(LDNS)发送请求,看是否有这个域名的映射关系,如果有,直接返回,完成域名解析。(LDNS 一般在城市的某个角落,距离你不会很远,一般都会缓存域名解析结果,大约 80% 的域名解析到这里就完成了)
● 如果 LDNS 仍然未命中,LDNS 就向根服务器发送查询请求,根服务器里面记录的都是各个顶级域所在的服务器 IP,根服务器会根据域名后缀返回对应的顶级域名服务器位置。当向根请求 www.qq.com 的时候,根服务器就会返回 .com 服务器的位置信息。
● LDNS 拿到 .com 的权威服务器地址以后,就会询问 .com 的权威服务器,知不知道 www.qq.com 的位置。这个时候 .com 权威服务器查找并返回 www.qq.com 服务器的地址。LDNS 继续向 www.qq.com 的权威服务器去查询这个地址,由 www.qq.com 的服务器给出了 IP 地址:202.173.11.10
● LDNS 服务器得到了 www.qq.com 对应的 IP 地址后以 DNS 应答包的方式传递给客户机,并把域名和对应的 IP 地址在本地缓存下来。
● 客户机根据 IP 地址建立连接,并在客户端缓存域名/IP映射。
简单来说,其实只有四步:
5、DNS 服务器查询方式
(1)迭代查询
DNS 服务器会向客户机提供其他能够解析查询请求的 DNS 服务器地址。
- 当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台 DNS 服务器地址,
- 客户机再向这台 DNS 服务器提交请求,依次循环直到返回查询的结果为止。
- 迭代查询返回的是最佳的查询点或者主机地址。本地域名服务器向根域名服务器的查询通常是采用迭代查询。
(2)递归查询
DNS 服务器必须使用一个准确的查询结果回复客户机。
- 如果DNS 服务器本地没有存储查询目标的 DNS 信息,那么该服务器会去询问其他服务器(即代替客户机去查询,而不是让客户机自己进行下一步查询),并将返回的查询结果提交给客户机。
- 因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错(表示无法查询到所需的 IP 地址)。主机向本地域名服务器的查询一般都是采用递归查询。
相关内容
- gaussdb 200安装 data studio jdbc idea链接保姆级安装步骤_相关技巧_
- 解析scratch3.0二次开发之scratch-blocks免编译修改问题_相关技巧_
- 详解scratch3.0二次开发之scratch-blocks中的blocks的类型、定义和使用方法_相关技巧_
- scratch-www 在Win10下的环境搭建详细教程_相关技巧_
- Scratch3.0初始化加载七牛云上的sbs文件的方法_相关技巧_
- Scratch3.0二次开发之windows环境下打包成exe的流程_相关技巧_
- Scratch3.0 页面初始化同时加载sb3文件的操作代码_相关技巧_
- VSCode使用ssh密钥免密远程登录服务器的方法_相关技巧_
- 解析在浏览器地址栏输入一个URL后发生了什么_相关技巧_
- 手把手教你学会HBuilder打包APP_相关技巧_