DNS和网络模型
# DNS
协议
# 介绍一下DNS
协议是什么
DNS
是域名系统的缩写,提供一种主机名到IP
地址的转换服务,由分层的DNS
服务器组成的分布式数据库,定义了主机如何查询这个分布式数据库的方式的应用协议
作用是将域名解析为IP
地址,客户端向DNS
服务器发送域名查询请求,DNS
服务器告诉客户端他的web
服务器的IP
地址
# DNS
同时使用TCP
和UDP
协议吗重要
DNS
占用53
号端口,同时使用TCP
和UDP
协议
- 在区域传输的时候使用
TCP
协议- 辅域名服务器会定时(一般三小时)向主域名查询了解数据是否有变,有变的话,会执行一次区域传送,进行数据同步,区域传送使用
TCP
,因为数据传送的数据量比一个请求应答的数据量多得多 TCP
是一种可靠连接 保证数据的准确性
- 辅域名服务器会定时(一般三小时)向主域名查询了解数据是否有变,有变的话,会执行一次区域传送,进行数据同步,区域传送使用
- 在域名解析的时候使用
UDP
协议- 客户端向
DNS
查询域名,一般返回的内容不超过512
字节,用UDP
传输即可,不经过三次握手,使得DNS
服务器负载更低,响应更快,理论上客户端向DNS
服务器查询域名的时候用TCP
但是很多DNS
服务器配置时候只支持UDP
查询包
- 客户端向
# 说一下DNS
完整查询过程重要
- 首先在浏览器缓存中查找对应的
IP
地址,如果查到就直接返回,查不到就下一步 - 将请求发给本地
dns
服务器,在本地域名服务器查询,如果查到直接返回,差不到就下一步 - 本地
dns
服务器向根域名服务器发送请求,根域名服务器返回一个所查询域的顶级服务器地址 - 本地
dns
向顶级域名服务器发送请求,接收请求的服务器查询自己的缓存,如果有记录就返回查询结果,没有就返回下一级的权威域名服务器地址 - 本地
dns
向权威域名服务器请求,域名服务器返回对应结果 - 本地
dns
将结果保存在缓存中,便于下次使用 - 将结果返回给浏览器
举一个🌰来说明一下(改自第七版谢希仁计算机网络)
假设mayun.taobao.com
想知道xiaosong.crucials.cn
的IP
地址
- 主机
mayun.taobao.com
先向其本地域名服务器dns.taobao.com
进行递归查询 - 本地域名服务器向根域名服务器查询
- 根域名服务器告诉本地域名服务器,下一次该查询的是所查询域的顶级服务器
dns.cn
的IP
地址 - 本地域名服务器迭代再进行查询,顶级域名服务器返回所查询域的权威域名权威域名服务器
dns.crucials.cn
的IP
地址 - 继续迭代查询,权威域名服务器告诉本地域名服务器所查询的主机
IP
地址 - 本地域名服务器把
IP
地址告诉主机mayun.taobao.com
# DNS
的迭代查询和递归查询
递归查询指的是查询请求发送之后,域名服务器代为向下一级域名服务器发送请求,最后向用户返回结果,使用递归查询,用户只用发送一次查询
迭代查询是域名服务器返回单次查询的结果,需要用户自己请求下一级的服务器
一般我们向本地dns
发送请求的都是递归查询,因为只发了一次就能返回最终的结果,而本地dns
服务器向其他域名服务器采用的就是迭代查询,每一级域名服务器返回的结果之后,都由本地dns
服务器自己进行下一级的查询
# 网络模型
# OSI
7层模型
- 应用层
- 为计算机用户提供应用接口,为用户提供提供网络服务协议,如
http
https
ftp
等
- 为计算机用户提供应用接口,为用户提供提供网络服务协议,如
- 表示层
- 用于对应用层数据的编码和转换功能,确保一个系统的应用程序发送的数据能被另一个系统应用层识别,可以使用
base64
对数据进行编解码,base64
在表示层工作
- 用于对应用层数据的编码和转换功能,确保一个系统的应用程序发送的数据能被另一个系统应用层识别,可以使用
- 会话层
- 负责建立、管理和终止表示层实体之间的通信会话
- 传输层
- 建立主机端到端的连接,传输层的作用就是为上层协议提供端到端的可靠和透明数据传输,包括差错控制和流量控制,
tcp
和udp
就是在这一层
- 建立主机端到端的连接,传输层的作用就是为上层协议提供端到端的可靠和透明数据传输,包括差错控制和流量控制,
- 网络层
- 通过
IP
寻址建立两个节点的连接,通常就是我们说的IP
协议层,我们可以理解网络层规定了数据包的传输路线,传输层规定了数据包的传输方式
- 通过
- 数据链路层
- 将比特组合成字节,将字节组合成帧,使用链路层地址(以太网用
mac
地址),并进行差错控制,我们可以理解为网络层是规划了数据包的传输路线,数据链路层就是传输路线,在数据链路层增加了差错控制
- 将比特组合成字节,将字节组合成帧,使用链路层地址(以太网用
- 物理层
- 实际的信号通过物理层实现,通过物理截止传输比特流
OSI
七层模型通信特点是对等通信,为了使数据分组从源传送到目的地,源端每一层都必须和目的端对等层进行通信,称为对等层通信,在每一层通信都使用本层自己的协议进行通信
# TCP/IP
五层协议
- 应用层
- 直接为应用进程提供服务
http/ftp/smtp/dns
- 直接为应用进程提供服务
- 传输层
- 主要有
tcp
和udp
协议
- 主要有
- 网络层
- 为两台主机提供通信服务 通过选择合适的路由将数据传递到目的主机
- 数据链路层
- 将网络层交下来的
IP
数据包封装成帧,在链路两个相邻节点传送帧,每一帧都包含数据和必要的控制信息
- 将网络层交下来的
- 物理层
- 确保数据在各种物理媒介上传输
# 计算机网络中端到端与点到点的区别重要‼️
所处位置不同
端到端处于传输层,属于网络连接,是应用程序之间的远程通信(通俗地说就是从发送端到接受端)
点到点处于数据链路层或网络层,基于mac
地址和IP
地址,是指一个设备发数据给另外一个设备,这些设备是指直连设备包括网卡,路由器,交换机。(通俗地说就是两个节点之间的通信,一个节点的数据链路层接受ip
层数据并封装之后,就把数据帧从链路上发送到与其相邻的下一个节点)
可靠性
端到端的链路建立之后,发送端知道接收端一定能收到,而且经过中间交换设备时不需要进行存储转发,因此传输延迟小。
在点到点传输的缺点是发送端发出数据后,不知道接收端能否收到或何时能收到数据。
端到端的优点就是它的可靠性,缺点是:
直到接收端收到数据为止,发送端的设备一直要参与传输。如果整个传输的延迟很长,那么对发送端的设备造成很大的浪费。
如果接收设备关机或故障,那么端到端传输不可能实现。
点到点的优点:
发送端设备送出数据后,它的任务已经完成,不需要参与整个传输过程,这样不会浪费发送端设备的资源。
即使接收端设备关机或故障,点到点传输也可以采用存储转发技术进行缓冲。
点到点的缺点:
点到点传输的缺点是发送端发出数据后,不知道接收端能否收到或何时能收到数据。 (它的不可靠性)
在一个网络系统的不同分层中,可能用到端到端传输,也可能用到点到点传输。如Internet
网,IP
及以下各层采用点到点传输,传输层以上采用端到端传输。
# 为什么要有IP
地址和mac
地址呢
先说说两者区别:
IP
地址是网络层和以上各层使用的地址,是一种逻辑地址mac
地址(物理地址)是数据链路层和物理层使用的地址
在发送数据的时候,数据从高层下到低层,才到通信链路传输,使用IP
地址的IP
数据包一旦交给数据链路层,就被封装成mac
帧,mac
帧在传输过程使用的原地址和目的地址都是硬件地址,都写在mac
帧的首部
值得注意的是
在网络层利用IP
地址在路由器进行转发的时候,数据包首部的源地址和目的地址始终为最开始发送的IP
地址和需要接收的IP
地址
而数据链路层的mac
帧在不同网络传输时mac
帧会丢弃并更换首部的mac
地址
接着解释一下,为什么不可以直接用硬件地址进行通信,免除使用ARP
协议,还要IP
地址来干嘛?
全世界存在各式各样的网络,都使用不同的硬件地址,这些硬件能够相互通信的话必须进行非常复杂的硬件地址转换工作(因为每个设备都有唯一的mac
地址),因此几乎不可能靠用户进行完成,但是IP
编址的话可以让连接到互联网的地址只需自己拥有一个唯一的IP
地址,再下去找需要连接的通讯设备则是通过ARP
协议进行(都是由计算机软件自动运行的,无须用户操作)
有了IP
地址为什么还需要mac
地址
信息传递时候,需要知道的其实是两个地址:终点地址、下一跳的地址。
IP
地址本质上是终点地址,它在跳过路由器的时候不会改变,而MAC
地址则是下一跳的地址,每跳过一次路由器都会改变。这就是为什么还要用MAC
地址的原因之一,它起到了记录下一跳的信息的作用。- 网络体系结构的分层模型:用
MAC
地址和IP
地址两个地址,用于分别表示物理地址和逻辑地址是有好处的。这样分层可以使网络层与数据链路层的协议更灵活地替换。 - 历史原因:早期的以太网只有集线器,没有交换机,所以发出去的包能被以太网内的所有机器监听到,因此要附带上
MAC
地址,每个机器只需要接受与自己MAC
地址相匹配的包。
# 在网络层的IP
是如何寻址的?
- 分类寻址:将
IP
地址划分为五类,IP
地址有网络号(net-id
)和主机号(host-id
)组成,路由器仅仅根据目的主机的网络号来转发分组,从而减少路由表所占用的存储空间以及查找路由表的时间
笔记
IP
地址管理机构 --> 分配 IP
地址的网络号 ->主机号由得该单位自行分配
主机号为全 0
的地址为子网的网络号,主机号 为全 1
的地址为子网的广播地址, 都不能被指派。
- 划分子网:对原先的分类寻址的改进,将原始的分类寻址进一步的划分,将之前的主机号进一步划分为子网号(
subnet-id
)和主机号,提高IP
地址的利用率
:::note 提高IP地址利用率原因
因为c
类地址的主机号是2^8 - 2= 254
若有260
台机器只能分配一个b
类地址的网络号,遂对主机号进行进一步划分
划分子网后,可用的IP
地址数是减少了,但是如果对于那些很小的小型企业网络来说,划分子网后又可节省大量IP
地址资源。因为几个小网络可以共用一个大的网络地址范围(好几个子网对外部表现为一个网络,收到外来的数据报后转发到相应的网络),而且同样可以取到隔离的作用。
:::
- 无类别域间路由:消除了传统的
A 类
,B 类
,C类
地址以及划分子网的概念,因而更有效地分配IPv4
的地址。(这个应该不要求)
# 私有网络地址
俗称内网的IP
地址
IP address range | number of addresses | largest CIDR block (subnet mask) |
---|---|---|
10.0.0.0 – 10.255.255.255 | 16777216 | 10.0.0.0/8 (255.0.0.0) |
172.16.0.0 – 172.31.255.255 | 1048576 | 172.16.0.0/12 (255.240.0.0) |
192.168.0.0 – 192.168.255.255 | 65536 | 192.168.0.0/16 (255.255.0.0) |