[计算机网络之五] IP 协议相关技术
1、DNS(Domain Name System)
(1)必要性
直接使用 IP 不便,不好记忆,在主机中维护一个 hosts 数据库文件,可以在进行网络通信时直接使用主机名称而无需输入一长串的 IP 地址。
![](https://img.haomeiwen.com/i2865141/02eadc0a9e50d42c.png)
(2)诞生背景
ARPANET 使用 hosts 文件来管理主机名和 IP 地址的登录、变更处理的可行性,随着网络规模的扩大而降低。
(3)DNS 域名的分层
URL、主机名、域名和全限定域名( FQDN:Fully Qualified Domain Name)怎么区分?
www.tsinghua.edu.cn
url:http://www.tsinghua.edu.cn
主机名:www
域名:tsinghua.edu.cn
全限定域名:www.tsinghua.edu.cn
在不同组织结构中不允许有同名的主机,当出现了带有层次结构的域名后,每个组织结构就可以自由地为主机命名了。DNS 的分层是倒挂的树形结构,如图所示:
![](https://img.haomeiwen.com/i2865141/f4d6be3f86f5b29b.png)
(4)域名服务器和解析器
- 域名服务器
域名服务器是指管理域名的主机和相应的软件,它可以管理所在分层的域的相关信息。
![](https://img.haomeiwen.com/i2865141/4864b754bbd18e76.png)
- 解析器
进行 DNS 查询的主机和软件叫做 DNS 解析器。用户所使用的工作站或个人电脑都属于解析器。一个解析器至少要注册一个以上域名服务器的 IP 地址,通常,它至少包括组织内部的域名服务器的 IP 地址。
(5)DNS 查询
DNS 查询的流程如图所示:
![](https://img.haomeiwen.com/i2865141/45178b8ba405b92b.png)
DNS 查询的方式由递归查询和迭代查询两种。
- 递归查询: 主机向本地域名服务器的查询一般都是采用递归查询 。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的 IP 地址,或者是报错,表示无法查询到所需的 IP 地址。
- 迭代查询: 本地域名服务器向根域名服务器的查询的迭代查询 。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的 IP 地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的 IP 地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,本地域名服务器得到了所要解析的 IP 地址或报错,然后把这个结果返回给发起查询的主机。
2、ARP(Address Resolution Protocol)
数据链路层通信的唯一地址是 MAC 地址,ARP 就是能根据目标 IP 地址定位下一个应该接受数据分包的网络设备对应的 MAC 地址。如果目标主机不再一个数据链路上,则通过 ARP 查找下一跳路由器的 MAC 地址。
APR 只适用于 IPv4,IPv6 中定位 MAC 地址用的事 ICMPv6 协议。
![](https://img.haomeiwen.com/i2865141/6b346ceee5105f64.png)
(1)ARP 协议的工作原理
网络层的 ARP 协议完成了 IP 地址与物理地址的映射。首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。
此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址;源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。
(2)如何理解 IP 地址和 MAC 地址缺一不可
在同一数据链路上,只需要一个广播就可以知道接收端的 MAC 地址;但是在不同网络中被路由器隔断的主机之间的通讯需要依赖 IP 地址来做路由选择,通过 IP 地址才可以让 ARP 广播顺利到达目标主机所在网络,接收到广播的匹配 IP 的主机响应广播,将自己的 MAC 响应给源主机。
(3)RARP(Reverse Address Resolution Protocol)
从 MAC 地址定位 IP 地址的一种协议。
- 使用场景
打印机服务器等小型嵌入式设备接入到网络时,有时无法通过 DHCP 动态获得 IP 地址,需要架设一台 RARP 服务器,并在服务器上注册设备的 MAC 地址及其 IP 地址,然后设备启动时请求 RARP 服务器得到分配的 IP 地址。
![](https://img.haomeiwen.com/i2865141/f5f59eb8baa83018.png)
(4)代理 ARP
通常代理 ARP 包会被路由器隔离,但是采用代理 ARP (Proxy ARP)的路由器可以将 ARP 请求转发给邻近的网段。由此,两个以上网段的节点之间可以像在同一个网段中一样进行通信,通常路由器会连接多个网络,并在每个网段上定义各自的子网,对于那些不支持设定子网掩码的老设备,必须要使用代理 ARP 才能更好地使用网络。
3、ICMP(Internet Control Message Protocol)
(1)功能
确认网络是否正常工作,遇到异常时进行网络诊断。
更详细的功能描述:确认 IP 包是否成功送达目标地址,通知在发送过程当中 IP 包被废弃的具体原因,改善网络配置。有了这些功能以后,就可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。
![](https://img.haomeiwen.com/i2865141/3dcda89c6db9b052.png)
(2)ICMP 消息分类
ICMP 通知消息使用 IP 进行发送,消息大致可分为两类:一类是通知出错原因的错误消息;另一类是用于诊断的查询消息。
![](https://img.haomeiwen.com/i2865141/4a0003c77913b065.png)
(3)主要的 ICMP 消息
- ICMP 消息不可达
IP 路由器无法将 IP 数据包发送给目标地址是,会给发送端主机返回一个目标不可达的 ICMP 消息,并在这个消息中显示不可达的具体原因。
- ICMP 重定向消息
如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个 ICMP 重定向的消息给这个主机。
![](https://img.haomeiwen.com/i2865141/675368d47c284ad9.png)
- ICMP 超时消息
IP 包中有一个字段叫做 TTL(Time To Live,生存周期),它的值随着每经过一次路由器就会减1,直到减到 0 时该 IP 包会被丢弃。此时,IP 路由器将会发送一个 ICMP 超时的消息给发送端主机,并通知该包已被丢弃。
Q: 设置 IP 生存周期有什么作用?
在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发。
![](https://img.haomeiwen.com/i2865141/38493f2d3df65361.png)
- ICMP 回送消息
判断所发送的数据包是否已经成功到达对端,常用的 ping 命令就是基于该消息实现的。
![](https://img.haomeiwen.com/i2865141/a62c691a31c598d2.png)
- ICMP 源点抑制消息
网络拥堵时路由器向 IP 包的源地址发送一个 ICMP 源点抑制消息,收到消息的的主机了解到网络拥堵的情况,就会控制 IP 包的传输间隔。
缺点:可能引起不公平的网络通信,一般不被采用。
- ICMP 路由探索消息
用于发现与自己相连网络中的路由器。主机发出 ICMP 路由器请求,路由器返回 ICMP 路由器公告消息。
- ICMP 地址掩码消息
用于主机或路由器想要了解子网掩码的情况。
(4)ICMPv6
在 IPv6 中比不可少,用于从 IP 地址定位到 MAC 地址,相当于 IPv4 中 ARP 的作用。
4、DHCP(Dynamic Host Configuration Protocol)
(1)DHCP 实现即插即用
管理员为网络中每台主机设置 IP、子网掩码、默认路由、DNS服务器等配置信息很繁琐。而 DHCP 实现了即插即用的自动配置管理。
![](https://img.haomeiwen.com/i2865141/0a156b30992be615.png)
(2)DHCP 工作机制
架设 DHCP 服务器,并设置好要分配的 IP 地址、子网掩码、路由控制信息以及 DNS 服务器等。
DHCP 获取 IP 地址分为两阶段:
![](https://img.haomeiwen.com/i2865141/e516e95b74e72321.png)
为了 DHCP 的高可用,会架设多台服务器,但是这样一来可能导致不同服务器分配了相同的 IP 导致冲突,所以为了检查所要分配的 IP 地址以及已经分配了的 IP 地址是否可用,DHCP 服务器或 DHCP 客户端必须具备以下功能:
-
DHCP 服务器
在分配 IP 地址前发送 ICMP 回送请求包,确认没有返回应答。
-
DHCP 客户端
针对从 DHCP 那里获得的 IP 地址发送 ARP 请求包,确认没有返回应答。
(3)DHCP 中继代理
一般会为每个以太网段设置一个 DHCP 服务器,但是对企业学校等大规模的组织机构的网络环境来说,一般会有多个以太网段,为每个网端设置 DHCP 服务器管理和运维不便。
这种情况下使用 DHCP 中继代理来实现统一管理,每个以太网段设置一个 DHCP 中继代理,它会将客户端的 DHCP 请求转发给 DHCP 服务器,并在服务器返回应答后转发给客户端。这样对不同的链路上实现了统一分配和管理 IP 地址。
![](https://img.haomeiwen.com/i2865141/cb8524a0099348df.png)
5、NAT(Network Address Translator)
(1)作用
用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。
(2)工作机制
NAT 路由器转发本地网络中的 IP 数据报到互联网时,将 IP 首部中的源地址转换为全局 IP 地址;转发互联网中的 IP 数据报到本地网络时,将 IP 首部中的目标地址转换为私有 IP 地址。
![](https://img.haomeiwen.com/i2865141/c71df1bb7872243d.png)
(3)NAPT
解决本地网络中多台机器使用同一个全局 IP 与互联网中的主机进行通信的问题,使用加端口号的转换。
![](https://img.haomeiwen.com/i2865141/b068fc1128fd3c3f.png)
(4)NAT-PT(NAPT-PT)
将 IPv6 的首部转换为 IPv4 首部的一种技术, 使得只有 IPv6 地址的主机也能够与 IPv4 地址的其他主机进行通信。
![](https://img.haomeiwen.com/i2865141/3b648d60779fc9c7.png)
6、IP 隧道
(1)什么是 IP 隧道?
路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。
![](https://img.haomeiwen.com/i2865141/9ba812f7e4682dc0.png)
(2)如何实现 IP 隧道?
将原始IP包(其报头包含原始发送者和最终目的地)封装在另一个数据包(称为封装的IP包)的数据净荷中进行传输。在 IP 数据报首部上表现为在网络层的首部后面继续追加网络层首部。
![](https://img.haomeiwen.com/i2865141/6da976213dcee0ef.png)
(3)IP 隧道的应用场景
- Mobile IP
- 多播包的转播
- IPv4 网络中传送 IPv6 的包(6to4)
- IPv6 网络中传送 IPv4 的包(4to6)
- 数据链路帧通过 IP 包发送(L2TP:将数据链路的 PPP 包用 IP 包转发的一种技术)
由于现在很多路由器上没有多播包的路由控制信息,多播消息也就无法穿越路由器发送信息。在这类环境中,如果使用 IP 隧道,就可以使路由器用单播的形式发包,也就能够向距离较远的链路转发多播消息。
![](https://img.haomeiwen.com/i2865141/95b2e1aa170e64f2.png)
7、IP 多播
为了避免网络流量的浪费,需要确认接收端是否存在,通过 IGMP(MLD:Multicast Listener Discovery [多播监听发现])实现,该协议的作用:
1、向路由器表明想要接受多播消息(并通知想接收多播的地址);
2、向交换集线器通知想要接受多播的地址。
![](https://img.haomeiwen.com/i2865141/06cb7c7e294342f6.png)
8、IP 任播
IP 任播是指为那些提供同一种服务的服务器配置同一个 IP 地址,并与最近的服务器进行通信的一种方法。应用场景有报警电话 110 和消防电话 119 系统。
![](https://img.haomeiwen.com/i2865141/49a113a11f06a9b4.png)
9、显式拥塞控制
当发生网络拥塞时,发送主机应该减少数据包的发送量,虽然 TCP 也能控制网络拥塞,但它是通过数据包的实际损坏情况来判断是否发生拥塞,这种方法不能在数据包损坏之前减少数据包的发送量。
为了在数据包损坏之前检测到网络拥塞并减少数据包发送量,在 IP 层报文头的 TOS 字段,增加了 ECN (Explicit Congestion Notification,显式拥塞控制)字段。
ECN 的机制概括起来就是在发送包的 IP 首部中记录路由器是否遇到拥塞,并在返回包的 TCP 首部中通知是否发生过拥塞。拥塞检查在网络层进行,而拥塞通知则在传输层进行,这两层的互相协助实现了拥塞通知的功能。
![](https://img.haomeiwen.com/i2865141/d85b3bec7a4a1a12.png)