一些网络协议 | 青训营

135 阅读9分钟

1.7 网络传输--DNS

背景

随着接入网络主机的增多,IP 地址通讯的数字标识地址不便记忆。。

  • 路由器喜欢 IP 地址,定长有层次结构
  • 人们喜欢主机名,好记 hosts 文件:
  • 记录主机名称和 IP 地址的对应表
  • 输入主机名称,系统就会加载 hosts 文件并查找对应 IP

后来主机变多。。

  • 文件服务器集中存放 hosts 文件,供下载
  • 地址解析记录形成的文件同步到所有客机

互联网规模再扩大。。

  • DNS 系统出现

  • 因特网采用层次树状结构的域名结构

  • 域名的结构为由“.”隔开的若干分量,分别代表不同级别的域名(域名级别从左到右依次升高),完整域名不超过 255 个字符

  • 各级域名由上一级的域名管理机构管理,最高的顶级域名由因特网名称和数字地址分配机构 ICANN 进行管理

  • DNS(Domain Name System, 域名系统)

  • 因特网上作为域名IP 地址互相映射的一个分布式数据库

  • 域名解析(主机名解析),通过主机名得到该主机对应 IP 地址的过程。域名和 IP 地址的映射关系保存在域名服务器中,供其他应用查询

  • 正向解析:根据主机名称(域名)查找对应 IP 地址

  • 反向解析:根据 IP 地址查找对应的主机域名

DNS 服务器的部分层次结构: ![[Pasted image 20230806165529.png]]

  • 从上到下依次:根域名服务器,顶级域名服务器和权威域名服务器
    • 域名服务器:每个根域名服务器都知道所有顶级域名服务器的域名及其 IP 地址;因特网上公有 13 个不同 IP 地址的根域名服务器;当本地域名服务器向根域名服务器发送查询请求时,路由器会把查询报文转发给最近的一个根域名服务器。

    • 顶级域名服务器:它们负责管理在该顶级域名服务器注册的所有二级域名;当收到 DNS 查询请求时就会给出最终 IP 地址,也可能是下一级权限域名服务器的 IP 地址查询是自上而下的

    • 权限域名服务器:它们负责某个区的域名,每个主机的域名都必须到某个权限域名服务器处注册登记(所以它知道它管辖的区域的域名和 IP 地址的映射关系,还知道下级本地域名服务器的地址);

    • 本地域名服务器:当一个主机发出 DNS 请求报文时,这个报文首先送往该主机的本地域名服务器。本地域名服务器起代理作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器离用户较近,一般不超过几个路由器的举例,也可能在同一个局域网中。本地域名服务器的 IP 地址ipconfig/all)直接配置在需要域名解析的主机中。

  • DNS 使用分布在各地的域名服务器来实现域名到 IP 地址的转换
  • DNS 协议运行在 UDP 协议之上,端口号 53

域名解析过程

  • 域名解析包含两种查询方式:递归查询,迭代查询

递归查询:

  • 主机先向本地域名服务器进行递归查询
  • 本地域名服务器收到递归查询的委托后,耶采用递归查询的方式向某个根域名服务器查询
  • 根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询
  • 顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询
  • 查询到域名对应的 IP 地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机 查询时递归下去,结果回溯回去,递归查询对被查询的域名服务器负担太大 如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向其他根域名服务器继续发送查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询

递归+迭代查询:

  • 主机首先向本地域名服务器进行递归查询
  • 本地域名服务器采用迭代查询,先向某个根域名服务器查询
  • 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的 IP 地址
  • 本地域名服务器顶级域名服务器进行迭代查询
  • 顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的 IP 地址
  • 本地域名服务器权限域名服务器进行迭代查询
  • 权限域名服务器告诉本地域名服务器所查询的域名的 IP 地址
  • 本地域名服务器最后把查询的结果告诉主机根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应该找哪个域名服务器进行查询,然后让本地服务器进行后续查询

![[Pasted image 20230806215514.png]]

高速缓存

  • 提高 DNS 查询效率

  • 减轻根域名服务器的负荷

  • 减少因特网上的 DNS 查询报文数量

  • 动态更新,windows 中 ipconfig/flushdns 刷新 DNS 缓存

  • 域名服务器为每项查询过的域名到 IP 地址的映射关系都设置了计时器

  • 不仅本地域名服务器,而且用户主机都需要高速缓存(不是hosts 文件)

  • 如果不久前有用户查询过某域名的 IP 地址,则本地域名服务器的高速缓存中应该存有该域名对应的 IP 地址,所以直接把高速缓存中存放的上次查询结果给用户

1.8 网络传输 UDP

![[Pasted image 20230807151651.png]]

  • UDP (User Datagram Protocol, 用户数据报协议)

  • 一种无连接的面向数据报的传输层(第四层)协议

  • 提供面向事务的简单不可靠信息传送服务

  • UDP 在 IP 报文的协议号是 17(在 IP 数据报协议字段中,数字 17 表示该数据携带的是 UDP 数据,会将数据报传递给 UDP 协议处理程序进行处理)

  • 缺点:不提供数据包分组,组装并且不能对数据包进行排序(只是把应用程序传给 IP 层的数据报发送出去,无法得知报文是否安全完整到达)

  • UDP 缺乏拥塞控制(congestion control),需要基于网络的机制来减少因失控和高速 UDP 流量负荷导致的拥塞崩溃效应(使用包队列和丢弃技术的路由器,数据报拥塞控制协议 DCCP。。。)

  • UDP 用来支持那些需要在计算机之间传输数据的网络应用(传输数据前不用在客户和服务器之间建立连接没有超时重发等机制,所以传输速度很快),包括网络视频会议在内的众多的客户/服务器模式的网络应用都需要使用 UDP 协议

  • UDP 协议的主要作用是将网络数据流量压缩成数据包的形式。

  • 一个典型的数据包(?)就是一个二进制数据的传输单位。每个数据包的前 8 个字节用来包含报头信息,剩余字节则用来包含具体的传输数据

  • UDP 报头 4 个字段,每个字段 2 个字节(即 16 个二进制位)

    • 源端口(Source Port)
    • 目的端口(Destination Port)
    • 长度(Length),用于校验 UDP 数据包的数据字段和包含 UDP 数据报首部的“伪首部”。其校验方法用 IP 分组首部中的首部校验(?)
    • 校验和(?)

![[Pasted image 20230807212109.png]]

伪首部:

  • 伪包头(Pseudo Header)
  • 是指在 TCP 的分段或 UDP 的数据报格式中,在数据报首部前面增加源 IP 地址,目的 IP 地址,IP 分组和协议字段,TCP 或 UDP 数据报的总长度等于 12 字节(?),所以构成的扩展首部结构
  • 伪首部是一个临时结构,既不向上也不向下传递,仅仅保证可以校验桃子姐的正确性

![[Pasted image 20230807161134.png]]

TCP 和 UDP 的区别:

特征点TCPUDP
传输可靠性面向连接面向非连接
应用场景传输数据量大传输量小
速度

UDP 协议 应用:

  • 绝大多数 UDP 应用都不需要可靠机制,甚至可能因为引入可靠机制而降低性能
  • 流媒体(多媒体游戏),IP 电话(VoIP)等
  • UDP 不属于连接型协议,所以资源消耗小,处理速度快,所以音频,视频和普通数据在传送时使用 UDP 比较多(即使偶尔丢失一两个数据报,也不会对接受结果产生太大影响)
  • 域名系统(DNS),简单网络管理协议(SNMP),路由信息协议(RIP)等

UDP 的单播、广播、组播

  • 单播:用于两个主机之间端对端的通信。即一对一(客户端与服务器端点到点连接)。
  • 广播:用于一个主机对整个局域网上所有主机通信。即一对所有。广播禁止在 Internet 宽带网上传输(广播风暴)。
  • 组播(多播):对一组特定的主机进行通信,而不是整个局域网上的所有主机。即一对一组。组播的重点是高效的把同一个包尽可能多的发送到不同的,甚至可能未知的设备。但是TCP连接是一对一明确的。 只有UDP才有广播、组播的传递方式。而TCP是一对一连接通信。

组播的优点:

  • 具有同种业务的主机加入同一数据流,共享同一通道,节省了带宽和服务器的优点。
  • 服务器的总带宽不受客户端带宽的限制。由于组播协议由接收者的需求来确定是否进行数据流的转发,所以服务器端的带宽时常量,与客户端的数量无关
  • 与单播一样,多播是允许在广域网即Internet上进行传输的,而广播仅仅在同一局域网上才能进行。

UDP协议是什么?作用是什么?_udp是什么协议_小媛末末的博客-CSDN博客

UDP协议详解 - 知乎 (zhihu.com)