文章目录

  • 2.6 IP协议传输方式
  • 2.6.1 单播(unicast)
  • 2.6.2 组播(multicast)
  • 2.6.2.1 在局域网上进行硬件多播
  • 2.6.3 广播(broadcast)
  • 2.7.4 任播(anycast)
  • 3 地址解析协议ARP
  • 3.1 ARP类型
  • 3.1.1 动态ARP
  • 3.1.2 静态ARP
  • 3.1.3 免费ARP
  • 3.1.4 Proxy ARP
  • 3.1.5 路由式Proxy ARP
  • 3.1.6 VLAN内Proxy ARP
  • 3.2 ARP协议工作流程
  • 3.3 ARP老化机制
  • 3.4 ARP报文格式
  • 4 逆地址解析协议RARP
  • 5 国际控制报文协议ICMP
  • 5.1 ICMP工作原理
  • 5.2 ICMP协议类型
  • 5.2 ICMP报文格式
  • 5.3 ICMP应用
  • 5.3.1 Ping命令
  • 5.3.2 Traceroute


2.6 IP协议传输方式

网络层中IP数据报的传输方式主要有4种方式:单播(unicast)、任播(anycast)、组播(multicast)和广播(broadcast)。

2.6.1 单播(unicast)

是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。

ospf 广播类型 侦听组播地址 icmp广播_网络协议

每次只有两个实体相互通信,发送端和接收端都是唯一确定的。

主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用单播模式,具体的说就是IP单播协议。网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。

  • 单播的优点:
  1. 服务器及时响应客户机的请求
  2. 服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。
  • 单播的缺点:
  1. 服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
  2. 现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞。而将主干扩展20倍几乎是不可能。
  • IP协议中的单播
  1. IPv4中的A,B,C三类IP地址均为单播。
  2. IPv6中的单播地址 后续介绍。

2.6.2 组播(multicast)

也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。

“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为:

  • 如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;
  • 如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。
  • 采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。

ospf 广播类型 侦听组播地址 icmp广播_网络_02

组播报文的目的地址使用D类IP地址, D类地址不能出现在IP报文的源IP地址字段。

主机之间一对一组的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。

  • 组播的优点:
  1. 需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
  2. 由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。
  3. 此协议和单播协议一样允许在Internet宽带网上传输。
  • 组播的缺点:
  1. 与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
  2. 现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。
  • IP协议中的组播
  1. IPv4中的D类IP地址为组播,即224.0.0.0至239.255.255.255之间的IP地址。
  2. IPv6中的组播地址 后续介绍。

IP多播可以分为两种:

  • 一种是只在本局域网上进行硬件多播,此种方式简单,但是很重要,因为大部分主机都是通过局域网接入到互联网。
  • 另一种是在互联网范围进行多播。
2.6.2.1 在局域网上进行硬件多播

互联网号码指派管理局IANA拥有的以太网地址(MAC)块的高24位为00-00-5E,因此TCP/IP协议使用的以太网多播地址块的范围是从00-00-5E-00-00-0000-00-5E-FF-FF-FF

前面在数据链路层已经讲过,以太网硬件地址字段中的第1字节的最低位为1时为多播地址。故而以太网硬件地址可用位数为23位,和D类IP地址的映射关系为:

ospf 广播类型 侦听组播地址 icmp广播_IP_03

2.6.3 广播(broadcast)

是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。

“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。

拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥,这就是“广播风暴”。

集线器由于其工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身就有隔离广播风暴的作用。

广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。

ospf 广播类型 侦听组播地址 icmp广播_网络_04

并非所有的计算机网络都支持广播,例如X.25网络和帧中继都不支持广播,而且也没有在“整个互联网范围中”的广播。IPv6亦不支持广播,广播相应的功能由任播(anycast)代替

通常,广播都是限制在局域网中的,比如以太网或令牌环网络。因为广播在局域网中造成的影响远比在广域网中小得多。

以太网和IPv4网都用全1的地址表示广播,分别是ff:ff:ff:ff:ff:ff和255.255.255.255

主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。

  • 广播的优点:
  1. 网络设备简单,维护简单,布网成本低廉
  2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
  • 广播的缺点:
  1. 无法针对每个客户的要求和时间及时提供个性化服务。
  2. 网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。
  3. 广播禁止允许在Internet宽带网上传输。

2.7.4 任播(anycast)

是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。

任播被认为在负载均衡、提高服务的可用性和容错性、对抗D0S/DDOS攻击等方面有重要的作用,从IPv4,PIP,SIPP到IPv6,任播技术都被提到,目前涉及到任播的RFC约有5O多个,但除了在DNS根服务器和AS-112服务器上被使用外,任播一直没有出现大规模全局性应用。对于目前的IPv6技术而言,任播技术迟迟没有突破性的进展,除了和IPv6发展缓慢一直不能有大规模的应用有关外,也和任播自身存在很多尚未解决的技术难题有关。

ospf 广播类型 侦听组播地址 icmp广播_网络_04

任播是与单播、广播和组播不同的方式:

  • 在单播中,在网络位址和网络节点之间存在一一对应的关系。
  • 在广播和组播中,在网络位址和网络节点之间存在一对多的关系:每一个目的位址对应一群接收可以复制资讯的节点。
  • 在任播中,在网络位址和网络节点之间存在一对多的关系:每一个位址对应一群接收节点,但在任何给定时间,只有其中之一可以接收到传送端来的资讯。

在互联网中,通常使用边界网关协议来实现任播。 作为老板,你在公司大喊一声“开发组的过来一个人”, 总会有一个人灰溜溜去响应, 挨批还是发钱啊?

3 地址解析协议ARP

ARP(Address Resolution Protocol,地址解析协议)是用来将IP地址解析为MAC地址的协议。主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的映射关系,一般ARP表项包括动态ARP表项和静态ARP表项。

在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个通过IP地址获取物理地址的协议,以完成从IP地址到MAC地址的映射。地址解析协议ARP即可实现将IP地址解析为MAC地址。

3.1 ARP类型

3.1.1 动态ARP

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,也可以被静态ARP表项覆盖。

动态ARP适用于拓扑结构复杂、通信实时性要求高的网络。

3.1.2 静态ARP

静态ARP表项是由网络管理员手工建立的IP地址和MAC地址之间固定的映射关系。静态ARP表项不会被老化,不会被动态ARP表项覆盖。

正常情况下网络中设备可以通过ARP协议进行ARP表项的动态学习,生成的动态ARP表项可以被老化,可以被更新。但是当网络中存在ARP攻击时,设备中动态ARP表项可能会被更新成错误的ARP表项,或者被老化,造成合法用户通信异常。

静态ARP表项不会被老化,也不会被动态ARP表项覆盖,可以保证网络通信的安全性。静态ARP表项可以限制本端设备和指定IP地址的对端设备通信时只使用指定的MAC地址,此时攻击报文无法修改本端设备的ARP表中IP地址和MAC地址的映射关系,从而保护了本端设备和对端设备间的正常通信。一般在网关设备上配置静态ARP表项。

静态ARP表项分为短静态ARP表项和长静态ARP表项:

  • 短静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,未同时指定VLAN和出接口。
    如果出接口是处于二层模式的以太网接口,短静态ARP表项不能直接用于报文转发。当需要发送报文时,设备会先发送ARP请求报文,如果收到的ARP应答报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将收到ARP应答报文的VLAN和接口加入该静态ARP表项中,后续设备可直接用该静态ARP表项转发报文。
  • 长静态ARP表项:手工建立IP地址和MAC地址之间固定的映射关系,并同时指定该ARP表项所在VLAN和出接口。
    长静态ARP表项可以直接用于报文转发。建议用户采用长静态ARP表项。

3.1.3 免费ARP

设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称免费ARP。

免费ARP有如下作用:

  • IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备会周期性的广播发送免费ARP应答报文,直到冲突解除。
  • 用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费ARP。
  • 在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换。

3.1.4 Proxy ARP

如果ARP请求是从一个网络的主机发往同一网段但不在同一物理网络上的另一台主机,那么连接这两个网络的设备就可以回答该ARP请求,这个过程称作ARP代理(Proxy ARP)。

Proxy ARP有以下特点:

  • Proxy ARP部署在网关上,网络中的主机不必做任何改动。
  • Proxy ARP可以隐藏物理网络细节,使两个物理网络可以使用同一个网络号。
  • Proxy ARP只影响主机的ARP表,对网关的ARP表和路由表没有影响。
  • Proxy ARP分为路由式Proxy ARP、VLAN内Proxy ARP和VLAN间Proxy ARP。

3.1.5 路由式Proxy ARP

路由式Proxy ARP就是使那些在同一网段却不在同一物理网络上的网络设备能够相互通信的一种功能。

在实际应用中,如果连接设备的主机上没有配置缺省网关地址(即不知道如何到达本网络的中介系统),此时将无法进行数据转发。

如下图所示,Host_1的IP地址为172.16.1.10/16,Host_2的IP地址为172.16.2.20/16,Host_1与Host_2处于同一网段。Switch通过VLAN10和VLAN20连接两个网络,VLANIF10和VLANIF20的IP地址不在同一个网段。

ospf 广播类型 侦听组播地址 icmp广播_IP_06

当Host_1需要与Host_2通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host_1以广播形式发送ARP请求报文,请求Host_2的MAC地址。但是,由于两台主机处于不同的物理网络(不同广播域)中,Host_2无法收到Host_1的ARP请求报文,因此也就无法应答。

通过在Switch上启用路由式Proxy ARP功能,可以解决此问题。启用路由式Proxy ARP后,Switch收到ARP请求报文后,Switch会查找路由表。由于Host_2与Switch直连,因此Switch上存在到Host_2的路由表项。Switch使用自己的MAC地址给Host_1发送ARP应答报文。Host_1将以Switch的MAC地址进行数据转发。此时,Switch相当于Host_2的代理。如上图所示,Host_1上的ARP表项中到目的地址Host_2的IP地址对应的MAC地址为Switch的VLANIF10接口的MAC地址。

3.1.6 VLAN内Proxy ARP

如果两个用户属于相同的VLAN,但VLAN内配置了端口隔离。此时用户间需要三层互通,可以在关联了VLAN的接口上启动VLAN内Proxy ARP功能。

如下图所示,Host_1和Host_2是Switch设备下的两个用户。连接Host_1和Host_2的两个接口在Switch属于同一个VLAN10。

ospf 广播类型 侦听组播地址 icmp广播_服务器_07

由于在Switch上配置了VLAN内不同接口彼此隔离,因此Host_1和Host_2不能直接在二层互通。

若Switch的接口使能了VLAN内Proxy ARP功能,可以使Host_1和Host_2实现三层互通。Switch的接口在接收到目的地址不是自己的ARP请求报文后,Switch并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在Host_2的ARP表项,则将自己的MAC地址发送给Host_1,并将Host_1发送给Host_2的报文代为转发。实际上此时Switch相当于Host_2的代理。

3.2 ARP协议工作流程

动态ARP通过广播ARP请求和单播ARP应答这两个过程完成地址解析。

ospf 广播类型 侦听组播地址 icmp广播_服务器_08

当需要通信的两台主机处于同一网段时,如上图中的Host_1和Host_3,Host_1要向Host_3发送数据。

  • 首先,Host_1会查找自己本地缓存的ARP表,确定是否包含Host_3对应的ARP表项。如果Host_1在ARP表中找到了Host_3对应的MAC地址,则Host_1直接利用ARP表中的MAC地址,对数据报文进行帧封装,并将数据报文发送给Host_3。如果Host_1在ARP表中找不到Host_3对应的MAC地址,则先缓存该数据报文,并以广播方式发送一个ARP请求报文。如上图中所示,OP字段为1表示该报文为ARP请求报文,ARP请求报文中的源MAC地址和源IP地址为Host_1的MAC地址和IP地址,目的MAC地址为全0的MAC地址,目的IP地址为Host_3的IP地址。
  • Switch_1收到ARP请求报文后,将该ARP请求报文在同一广播域内转发。
  • 同一广播域内的主机Host_2和Host_3都能接收到该ARP请求报文,但只有被请求的主机(即Host_3)会对该ARP请求报文进行处理。Host_3比较自己的IP地址和ARP请求报文中的目的IP地址,当两者相同时进行如下处理:将ARP请求报文中的源IP地址和源MAC地址(即Host_1的IP地址和MAC地址)存入自己的ARP表中。之后以单播方式发送ARP应答报文给Host_1,ARP应答报文内容如上图中所示,OP字段为2表示该报文为ARP应答报文,源MAC地址和源IP地址为Host_3的MAC地址和IP地址,目的MAC地址和目的IP地址为Host_1的MAC地址和IP地址。
  • Switch_1收到ARP应答报文后,将该ARP应答报文转发给Host_1。Host_1收到ARP应答报文后,将Host_3的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将数据报文进行帧封装,并将数据报文发送给Host_3。

当需要通信的两台主机处于不同网段时,如上图中的Host_1和Host_4,Host_1上已经配置缺省网关,Host_1首先会发送ARP请求报文,请求网关Router的IP地址对应的MAC地址。Host_1收到ARP应答报文后,将数据报文封装并发给网关,再由网关将数据报文发送给目的主机Host_4。Host_1学习网关IP地址对应的ARP表项的过程,以及网关设备学习Host_4的IP地址对应的ARP表项的过程与上述同网段主机Host_1和Host_3之间进行ARP地址解析的过程类似,不再赘述。

3.3 ARP老化机制

如上图中所示,如果每次Host_1和Host_3通信前都要发送一个广播的ARP请求报文,会极大的增加网络负担。而且同广播域的所有设备都需要接收和处理这个广播的ARP请求报文,也极大的影响了网络中设备的运行效率。为了解决以上问题,每台主机或设备上都维护着一个高速缓存,这是ARP高效运行的一个关键。在这个高速缓存中,存放主机或设备最近学习到的IP地址到MAC地址的映射关系,即动态ARP表项。

主机或设备每次发送报文时,会先在本地高速缓存中查找目的IP地址所对应的MAC地址。如果高速缓存中有对应的MAC地址,主机或设备不会再发送ARP请求报文,而是直接将报文发至这个MAC地址;如果高速缓存中没有对应的MAC地址,主机或设备才会广播发送ARP请求报文,进行ARP地址解析。

一方面由于高速缓存的容量限制,另一方面为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新。

动态ARP表项的老化参数有:老化超时时间、老化探测次数和老化探测模式。设备上动态ARP表项到达老化超时时间后,设备会发送老化探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。

设备发送的老化探测报文可以是单播报文,也可以是广播报文。缺省情况下,设备只在最后一次发送ARP老化探测报文是广播模式,其余均为单播模式发送。当对端设备MAC地址不变时,可以配置接口以单播模式发送ARP老化探测报文。

当接口Down时设备会立即删除相应的动态ARP表项。

3.4 ARP报文格式

ARP请求和应答的报文格式如下图所示。

ospf 广播类型 侦听组播地址 icmp广播_服务器_09

报文的长度是42字节。前14字节的内容表示以太网首部,后28字节的内容表示ARP请求或应答报文的内容。报文中相关字段的解释如下图所示。

ospf 广播类型 侦听组播地址 icmp广播_ospf 广播类型 侦听组播地址_10

4 逆地址解析协议RARP

RARP的作用是使只知道自己硬件地址的主机能否通过RARP协议找出其IP地址。现在的DHCP协议已经包含RARP协议的功能。

反向地址转换协议(RARP:Reverse Address Resolution Protocol)允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其IP地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的IP地址。当设置一台新的机器时,其RARP客户机程序需要向路由器上的RARP服务器请求相应的IP地址。假设在路由表中已经设置了一个记录,RARP服务器将会返回IP地址给机器,此机器就会存储起来以便日后使用。 RARP可以使用于以太网、光纤分布式数据接口及令牌环LAN。

ospf 广播类型 侦听组播地址 icmp广播_网络_11

5 国际控制报文协议ICMP

因特网控制报文协议ICMP(Internet Control Message Protocol)是一个差错报告机制,是TCP/IP协议簇中的一个重要子协议,通常被IP层或更高层协议(TCP或UDP)使用,属于网络层协议,主要用于在IP主机和路由器之间传递控制消息,用于报告主机是否可达、路由是否可用等。这些控制消息虽然并不传输用户数据,但是对于收集各种网络信息、诊断和排除各种网络故障以及用户数据的传递具有至关重要的作用。

在数据传输的过程中,IP提供尽力而为的服务,指为了把数据包发送到目的地址尽最大努力。它并不对目的主机是否收到数据包进行验证,无法进行流量控制和差错控制。因此在数据包传输过程中,产生各种错误在所难免。为了更有效地转发IP数据包和提高数据包交付成功的机会,ICMP应运而生。使用ICMP,当网络中数据包传输出现问题时,主机或设备就会向上层协议报告差错情况和提供有关异常情况的报告,使得上层协议能够通过自己的差错控制程序来判断通信是否正确,以进行流量控制和差错控制,从而保证服务质量。

5.1 ICMP工作原理

从技术角度来说,ICMP就是一个差错报告机制,其工作机理也比较简单,即当数据包处理过程出现差错时,ICMP向数据包的源端设备报告这个差错,它既不会纠正这个差错,也不会通知中间的网络设备。因为ICMP报文被封装在IP数据包内部,作为IP数据包的数据部分通过互联网传递。IP数据包中的字段包含源端和最终的目的端,并没有记录报文在网络传递中的全部路径(除非IP数据包中设置了路由记录选项)。因此当设备检测到差错时,它无法通知中间的网络设备,只能向源端发送差错报告。

源端在收到差错报告后,它虽然不能判断差错是由中间哪个网络设备所引起的,但是却可以根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发传递失败的数据包。

5.2 ICMP协议类型

ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文:

  1. 差错报文:主要用于回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5)
  2. 查询报文:用于查询网络信息,比如ping命令就是使用ICMP报文查看目标是否可到达(类型值为8)的

ICMP协议在以下情况下不会产生ICMP差错报文:

  • ICMP差错报文不会产生ICMP差错报文(但ICMP查询报文可能会产生ICMP差错报文),此条规定主要为了防止ICMP消息的无限产生和传递;
  • 目的地址是广播地址或多波地址的IP数据报文;
  • 作为链路层广播的数据包;
  • 不是IP分片的第一片;
  • 源地址不是单个主机的数据包,也就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

ospf 广播类型 侦听组播地址 icmp广播_网络_12

5.2 ICMP报文格式

从ICMP的报文格式来说,ICMP是IP的上层协议。但是ICMP是分担了IP的一部分功能。所以,也被认为是与IP同层的协议。

ospf 广播类型 侦听组播地址 icmp广播_ospf 广播类型 侦听组播地址_13

  • Type字段 8位 表示ICMP消息的类型;
  • Code字段 8位 表示ICMP消息类型细分的子类型;
  • Checksum字段 16位 表示ICMP报文的校验和。
  • 不同的Type和Code值表示不同的ICMP报文类型,对应了数据包处理过程中可能出现的不同错误情况;

Type

Code

描述

报文类型

0-Echo响应

0

Echo响应报文

查询报文

3-目的不可达

0

目标网络不可达报文

差错报文

3-目的不可达

1

目标主机不可达报文

差错报文

3-目的不可达

2

目标协议不可达报文

差错报文

3-目的不可达

3

目标端口不可达报文

差错报文

3-目的不可达

4

要求分段并设置DF flag标志报文

差错报文

3-目的不可达

5

源路由失败报文

差错报文

3-目的不可达

6

未知的目标网络报文

差错报文

3-目的不可达

7

未知的目标主机报文

差错报文

3-目的不可达

8

源主机隔离报文

差错报文

3-目的不可达

9

禁止访问的网络报文

差错报文

3-目的不可达

10

禁止访问的主机报文

差错报文

3-目的不可达

11

对特定的TOS网络不可达报文

差错报文

3-目的不可达

12

对特定的TOS主机不可达报文

差错报文

3-目的不可达

13

由于过滤 网络流量被禁止报文

差错报文

3-目的不可达

14

主机越权报文

差错报文

3-目的不可达

15

优先权终止生效报文

差错报文

4-源端被关闭

0

源端被关闭

差错报文

5-重定向

0

重定向网络报文

差错报文

5-重定向

1

重定向主机报文

差错报文

5-重定向

2

基于TOS的网络重定向报文

差错报文

5-重定向

3

基于TOS的主机重定向报文

差错报文

8-Echo请求

0

Echo请求报文

查询报文

9-路由器通告

0

路由通告报文

查询报文

10-路由器请求

0

路由器的发现/选择/请求报文

查询报文

11-ICMP超时

0

TTL超时报文

差错报文

11-ICMP超时

1

分片重组超时报文

差错报文

12-参数问题

0

IP报首部参数错误报文

差错报文

12-参数问题

1

丢失必要选项报文

差错报文

12-参数问题

2

不支持的长度报文

差错报文

13-时间戳请求

0

时间戳请求报文

查询报文

14-时间戳应答

0

时间戳应答报文

查询报文

15-信息请求

0

信息请求报文

查询报文

16-信息应答

0

信息应答报文

查询报文

5.3 ICMP应用

ICMP协议的主要用途

  • 确认IP包是否到达目的地址
  • 通知发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作的,所以它并不是严格意义上的网络层协议(一般来说,上层协议使用下层协议服务),但是它并不是传输层的功能,因此被归为网络层协议
  • ICMP只能搭配IPv4工作,如果是IPv6,需要使用ICMPv6

IP数据报及其他应用程序通过ICMP报文可以实现多种应用,其中Ping程序和Tracert(Traceroute)程序最为常见。此外,在网络管理和监测中,网络质量分析NQA(Network Quality Analysis)技术更加充分应用了ICMP。

5.3.1 Ping命令

Ping程序是最常见的用于检测IPv4和IPv6网络设备是否可达的调试手段,它使用ICMP的echo信息来确定:

  • 远程设备是否可达;
  • 与远程主机通信的来回旅程(round-trip)的延迟;
  • 报文包的丢失情况。
  1. WireShark抓包情况:
  2. ospf 广播类型 侦听组播地址 icmp广播_网络协议_14

  3. 协议详情:
  4. ospf 广播类型 侦听组播地址 icmp广播_网络协议_15

5.3.2 Traceroute

Traceroute(Windows为Tracert)用于查看数据包从源端到目的端的路径信息,从而检查网络连接是否可用。当网络出现故障时,用户可以使用该命令定位故障点。

Traceroute利用ICMP超时信息和目的不可达信息来确定从一个主机到网络上其他主机的路由,并显示IP网络中每一跳的延迟(这里的延迟是指:分组从信息源发送到目的地所需的时间,延迟也分为许多的种类——传播延迟、传输延迟、处理延迟、排队延迟等)。

它的原理就是利用IP包的TTL从1开始按照顺序递增的同时发送UDP包,强制接收ICMP超时消息的方法。

(base) pang@pang-HP:~$ traceroute www.baidu.com
traceroute to www.a.shifen.com (180.101.49.11), 64 hops max
  1   10.30.185.251  0.663ms  0.692ms  0.733ms 
  2   192.168.255.9  0.250ms  0.230ms  0.185ms 
  3   125.71.211.1  3.554ms  2.176ms  3.202ms 
  4   182.151.192.101  2.311ms  2.923ms  2.886ms 
  5   61.139.121.93  2.551ms  2.408ms  2.042ms 
  6   202.97.109.205  33.940ms  33.938ms  33.693ms 
  7   58.213.95.82  31.452ms  31.944ms  31.323ms 
  8   58.213.95.90  37.229ms  *  35.317ms 
  9   58.213.96.114  30.954ms  31.293ms  32.084ms 
 10   *  *  * 
 11   *  *  * 
 12   *
  1. WireShark抓包情况:
  2. ospf 广播类型 侦听组播地址 icmp广播_服务器_16

  3. 协议详情:
  4. ospf 广播类型 侦听组播地址 icmp广播_IP_17