月度归档:2016年12月

RAID 简述

 

一.RAID定义

RAID(Redundant
Array of Independent Disk
独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损

失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发

挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会
受到损坏硬盘的影响。

二、 RAID的几种工作模式(仅讨论 RAID0,RAID1,RAID5,RAID10这四种,这四种比较典型)

1、RAID0 (又称为Stripe或Striping--分条)

即Data Stripping数据分条技术。RAID 0可以把多块硬盘连成一个容量更大的硬盘群,可以提高磁 盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数 据安全性要求不高的情况下才被使用。

特点:

容错性: 没有 冗余类型: 没有
热备盘选项: 没有 读性能:
随机写性能: 连续写性能:
需要的磁盘数: 只需2个或2*N个(这里应该是多于两个硬盘都可以) 可用容量: 总的磁盘的容量
典型应用: 无故障的迅速读写,要求安全性不高,如图形工作站等。

RAID 0的工作方式:

点击查看原图

图1

如图1所示:系统向 三个磁盘组成的逻辑硬盘(RADI 0 磁盘组)发出的I/O数据请求被转化为3项操作,其中的每一项操作都对应于一块物理硬盘。我们从图中可以清楚的看到通过建立RAID 0,原先顺序的数据请求被分散到所有的三块硬盘中同时执行。

从理论上讲,三块硬盘的并行操作使同一时间内磁盘读写速度提升了3倍。 但由于总线带宽等多种因素的影响,实际的提升速率肯定会低于理论值,但是,大量数据并行传输与串行传输比较,提速效果显著显然毋庸置疑。

RAID 0的缺点是不提供数据冗余,因此一旦用户数据损坏,损坏的数据将无法得到恢复。

RAID 0具有的特点,使其特别适用于对性能要求较高,而对数据安全不太在乎的领域,如图形工作站等。对于个人用户,RAID 0也是提高硬盘存储性能的绝佳选择。


算机技术发展迅速,但硬盘传输率也成了性能的瓶颈。怎么办?IDE RAID技术的成熟让我们轻松打造自己的超高速硬盘。在实际应用中,RAID
0硬盘阵列能比普通IDE 7200转ATA
133硬盘快得多,时至今日,在大多数的高端或者玩家主板上我们都能找到一颗PROMISE或者HighPoint的RAID芯片,同时发现它们提供的额
外几个IDE接口。没错,RAID已经近在眼前,难道你甘心放弃RAID为我们带来的性能提升吗?答案当然是否定的!

实用 的IDE RAID

RAID
可以通过软件或硬件实现。像Windows
2000就能够提供软件的RAID功能,但是这样需要消耗不小的CPU资源,降低整机性能。而硬件实现则是一般由RAID卡实现的,高档的SCSI
RAID卡有着自己专用的缓存和I/O处理器,但是对于家庭用户来说这样的开销显然是承受不了的,毕竟为了实现RAID买两个或者更多的HDD已经相当不
容易了。我们还有一种折中的办法——IDE RAID。或许这才是普通人最容易接受的方法。虽然IDE
RAID在功能和性能上都有所折中,但相对于低廉的价格,普通用户看来并不在意。

为什么要用RAID 0

RAID
0至少需要两块硬盘才能够实现,它的容量为组成这个系统的各个硬盘容量之和,这几块硬盘的容量要相同,在家用IDE
RAID中一般级联两块硬盘,一定要用同型号同容量的硬盘。RAID
0模式向硬盘写入数据的时候把数据一分为二,分别写入两块硬盘,读取数据的时候则反之,这样的话,每块硬盘只要负担一半的数据传输任务,得到的结果也就是
速度的增加。

实现方 式:

(1)、RAID 0最简单方式(我觉得这个方式不是它本意所提倡的)


是把x块同样的硬盘用硬件的形式通过智能磁盘控制器或用操作系统中的磁盘驱动程序以软件的方式串联在一起,形成一个独立的逻辑驱动器,容量是单独硬盘的
x倍,在电脑数据写时被依次写入到各磁盘 中,当一块磁盘的空间用尽时,数据就会被自动写入到下一块磁盘中,它的好处是可以增加磁盘的容量。

速度与其中任何一块磁盘的速度相同,如果其中的任何一块磁盘出现故障,整个系统将会受到破坏,可靠

性是单独使用一块硬盘的1/n。

(2)、RAID 0的另一方式(常指的RAID 0就是指的这个)

是用n块硬盘选择合理的带区大小创建带区集,最好是为每一块硬盘都配备一个专门的磁盘控制器,在 电脑数据读写时同时向n块磁盘读写数据,速度提升n倍。提高系统的性能。

2、RAID 1 (又称为Mirror或Mirroring--镜像)

RAID

1称为磁盘镜像:把一个磁盘的数据镜像到另一个磁盘上,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,具有很高的数据冗余能力,但磁盘利用
率为50%,故成本最高,多用在保存关键性的重要数据的场合。RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。

RAID 1有以下特点

(1)、RAID 1的每一个磁盘都具有一个对应的镜像盘,任何时候数据都同步镜像,系统可以从一组 镜像盘中的任何一个磁盘读取数据。

(2)、磁盘所能使用的空间只有磁盘容量总和的一半,系统成本高。

(3)、只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行。

(4)、出现硬盘故障的RAID系统不再可靠,应当及时的更换损坏的硬盘,否则剩余的镜像盘也出现问题,那么整个系统就会崩溃。

(5)、更换新盘后原有数据会需要很长时间同步镜像,外界对数据的访问不会受到影响,只是这时整个系统的性能有所下降。

(6)、RAID 1磁盘控制器的负载相当大,用多个磁盘控制器可以提高数据的安全性和可用性。

RAID 1的工作方式:

点击查看原图

图2


图2所
示:当读取数据时,系统先从RAID1的源盘读取数据,如果读取数据成功,则系统不去管备份盘上的数据;如果读取源盘数据失败,则系统自动转而读取备份盘

上的数据,不会造成用户工作任务的中断。当然,我们应当及时地更换损坏的硬盘并利用备份数据重新建立Mirror,避免备份盘在发生损坏时,造成不可挽回
的数据损失。

raid 1的优缺点


于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID
1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而Mirror(镜像)的磁盘空间利用率低,存储成本高。
Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。

3、 RAID 5 (可以理解为是RAID 0和RAID 1的折衷方案,但没有完全使用RAID 1镜像理念,而是使用了“奇偶校验信息”来作为数据恢复的方式,与下面的RAID10不同。)

容错性: 冗余类型: 奇偶校验
热备盘选项: 读性能:
随机写性能: 连续写性能:
需要的磁盘数: 三个或更多
可用容量: (n-1)/n的总磁盘容量(n为磁盘数)
典型应用: 随机数据传输要求安全性高,如金融、数据库、存储等。

点击查看原图

图3

RAID
5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 以四个硬盘组成的RAID
5为例,其数据存储方式如图4所示:图中,Ap为A1,A2和A3的奇偶校验信息,其它以此类推。由图中可以看出,RAID
5不对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘
上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。

RAID
5可以理解为是RAID 0和RAID 1的折衷方案。RAID
5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID
0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID
5的磁盘空间利用率要比RAID 1高,存储成本相对较低。

4、 RAID 5 (可以理解为是RAID 0和RAID 1的折衷方案,但没有完全使用RAID 1镜像理念,而是使用了“奇偶校验信息”来作为数据恢复的方式)

点击查看原图

图4

RAID10
也被称为镜象阵列条带。象RAID0一样,数据跨磁盘抽取;象RAID1一样,每个磁盘都有一个镜象磁盘, 所以RAID 10的另一种会说法是
RAID
0+1。RAID10提供100%的数据冗余,支持更大的卷尺寸,但价格也相对较高。对大多数只要求具有冗余度而不必考虑价格的应用来说,RAID10提

供最好的性能。使用RAID10,可以获得更好的可靠性,因为即使两个物理驱动器发生故障(每个阵列中一个),数据仍然可以得到保护。RAID10需要4
+ 2*N 个磁盘驱动器(N >=0), 而且只能使用其中一半(或更小, 如果磁盘大小不一)的磁盘用量, 例如 4 个 250G
的硬盘使用RAID10 阵列, 实际容量是 500G。

RAID总结:

类型 读写性能 安全性 磁盘利用率 成本 应用方面
RAID0 最好(因并行性而提高) 最差(完全无安全保障) 最高(100%) 最低

个人用户

RAID1 读和单个磁盘无分别,写则要写两边 最高(提供数据的百分之百备份) 差(50%) 最高 适用于存放重要数据,如服务器和数据库存储等领域。
RAID5 读:RAID 5=RAID 0(相近似的数据读取速度)

 

写:RAID 5<对单个磁盘进行写入操作(多了一个奇偶校验信息写入)

RAID 5 RAID 5
>
RAID 1
RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
RAID10 读:RAID10=RAID0

 

写:RAID10=RAID1

RAID10=RAID1 RAID10

RAID1(50%)
RAID10

RAID1
集合了RAID0,RAID1的优点,但是空间上由于使用镜像,而不是类似RAID5的“奇偶校验信息”,磁盘利用率一样是50%

 

 

...

 

openssl cert request

openssl req -newkey rsa:2048 -keyout name.key -out name.csr
openssl rsa -in name.key -out name.rsa

openssl pkcs12 -export -in name.crt -out name.p12 -inkey name.key
openssl pkcs12 -in name.pfx -out name.crt

 

Convert your files into PEM format

The private key: if it not in PEM format, use the following command line to convert it:
openssl rsa -in private-key-name -outform PEM

Your certificate: if it not in PEM format, use the following command line to convert it:
openssl x509 -inform PEM -in your-certificate

The certification chain: if it not in PEM format, use the following command line to convert it:
openssl x509 -inform PEM -in certification-chain-file-name

 

 

 

C# UDP 大数据分包传输

如果需要使用UDP传输较大数据,例如传输10M的图片,这突破了UDP的设计原则。UDP的设计是基于"datagram",也就是它假设你发送的每个数据包都能包含在单一的包内。并且设定UDP数据包的最大长度受基础网络协议的限制。

点击查看原图

UDP数据包的理论最大长度限制是 65535 bytes,这包含 8 bytes 数据包头和 65527 bytes 数据。但如果基于IPv4网络传输,则还需减去 20 bytes 的IP数据包头。
则单一的UDP数据包可传输的数据最大长度为:

MaxUdpDataLength = 65535 - 8 - 20 = 65507 bytes

这就需要实现UDP包的分包传输和接收组包功能。

 

分包功能

/// <summary>
/// UDP数据包分割器
/// </summary>
public static class UdpPacketSplitter
{
  /// <summary>
  /// 分割UDP数据包
  /// </summary>
  /// <param name="sequence">UDP数据包所持有的序号</param>
  /// <param name="datagram">被分割的UDP数据包</param>
  /// <param name="chunkLength">分割块的长度</param>
  /// <returns>
  /// 分割后的UDP数据包列表
  /// </returns>
  public static ICollection<UdpPacket> Split(long sequence, byte[] datagram, int chunkLength)
  {
    if (datagram == null)
      throw new ArgumentNullException("datagram");

    List<UdpPacket> packets = new List<UdpPacket>();

    int chunks = datagram.Length / chunkLength;
    int remainder = datagram.Length % chunkLength;
    int total = chunks;
    if (remainder > 0) total++;

    for (int i = 1; i <= chunks; i++)
    {
      byte[] chunk = new byte[chunkLength];
      Buffer.BlockCopy(datagram, (i - 1) * chunkLength, chunk, 0, chunkLength);
      packets.Add(new UdpPacket(sequence, total, i, chunk, chunkLength));
    }
    if (remainder > 0)
    {
      int length = datagram.Length - (chunkLength * chunks);
      byte[] chunk = new byte[length];
      Buffer.BlockCopy(datagram, chunkLength * chunks, chunk, 0, length);
      packets.Add(new UdpPacket(sequence, total, total, chunk, length));
    }

    return packets;
  }
}

..............................

发送分包

..............................

private void WorkThread()
{
  while (IsRunning)
  {
    waiter.WaitOne();
    waiter.Reset();

    while (queue.Count > 0)
    {
      StreamPacket packet = null;
      if (queue.TryDequeue(out packet))
      {
        RtpPacket rtpPacket = RtpPacket.FromImage(
          RtpPayloadType.JPEG, 
          packet.SequenceNumber, 
          (long)Epoch.GetDateTimeTotalMillisecondsByYesterday(packet.Timestamp),
          packet.Frame);

        // max UDP packet length limited to 65,535 bytes
        byte[] datagram = rtpPacket.ToArray(); 
        packet.Frame.Dispose();

        // split udp packet to many packets 
        // to reduce the size to 65507 limit by underlying IPv4 protocol
        ICollection<UdpPacket> udpPackets 
          = UdpPacketSplitter.Split(
            packet.SequenceNumber, 
            datagram, 
            65507 - UdpPacket.HeaderSize);
        foreach (var udpPacket in udpPackets)
        {
          byte[] udpPacketDatagram = udpPacket.ToArray();
          // async sending
          udpClient.BeginSend(
            udpPacketDatagram, udpPacketDatagram.Length,
            packet.Destination.Address,
            packet.Destination.Port,
            SendCompleted, udpClient);
        }
      }
    }
  }
}

接收组包功能

..............................

private void OnDatagramReceived(object sender, UdpDatagramReceivedEventArgs<byte[]> e)
{
  try
  {
    UdpPacket udpPacket = UdpPacket.FromArray(e.Datagram);

    if (udpPacket.Total == 1)
    {
      RtpPacket packet = new RtpPacket(udpPacket.Payload, udpPacket.PayloadSize);
      Bitmap bitmap = packet.ToBitmap();
      RaiseNewFrameEvent(
        bitmap, Epoch.GetDateTimeByYesterdayTotalMilliseconds(packet.Timestamp));
    }
    else
    {
      // rearrange packets to one packet
      if (packetCache.ContainsKey(udpPacket.Sequence))
      {
        List<UdpPacket> udpPackets = null;
        if (packetCache.TryGetValue(udpPacket.Sequence, out udpPackets))
        {
          udpPackets.Add(udpPacket);

          if (udpPackets.Count == udpPacket.Total)
          {
            packetCache.TryRemove(udpPacket.Sequence, out udpPackets);

            udpPackets = udpPackets.OrderBy(u => u.Order).ToList();
            int rtpPacketLength = udpPackets.Sum(u => u.PayloadSize);
            int maxPacketLength = udpPackets.Select(u => u.PayloadSize).Max();

            byte[] rtpPacket = new byte[rtpPacketLength];
            foreach (var item in udpPackets)
            {
              Buffer.BlockCopy(
                item.Payload, 0, rtpPacket, 
                (item.Order - 1) * maxPacketLength, item.PayloadSize);
            }

            RtpPacket packet = new RtpPacket(rtpPacket, rtpPacket.Length);
            Bitmap bitmap = packet.ToBitmap();
            RaiseNewFrameEvent(
              bitmap, 
              Epoch.GetDateTimeByYesterdayTotalMilliseconds(packet.Timestamp));

            packetCache.Clear();
          }
        }
      }
      else
      {
        List<UdpPacket> udpPackets = new List<UdpPacket>();
        udpPackets.Add(udpPacket);
        packetCache.AddOrUpdate(
          udpPacket.Sequence, 
          udpPackets, (k, v) => { return udpPackets; });
      }
    }
  }
  catch (Exception ex)
  {
    RaiseVideoSourceExceptionEvent(ex.Message);
  }
}

.......................

 

 

 

...

单播、多播(组播)、广播

单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?

1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递
只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮
件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用“点对点通信”(Point to
Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。


2.多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点
传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,
但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。
  IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。
Windows 2000中的DHCP管理器支持多播IP地址的自动分配。


3.广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了
子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。集线器由于其
工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身
就有隔离广播风暴的作用。
  广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,
一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。
  在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。

=================================================================

当前的网络中有三种通讯模式:单播、广播、组播,其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。

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

单播的优点:
1)服务器及时响应客户机的请求
2)服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。

单播的缺点:
1)服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
2)现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞。而将主干扩展20倍几乎是不可能。

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

广播的优点:
1)网络设备简单,维护简单,布网成本低廉
2)由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。

广播的缺点:
1)无法针对每个客户的要求和时间及时提供个性化服务。
2)网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以
提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服
务。

3)广播禁止允许在Internet宽带网上传输。

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

组播的优点:
1)需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
2)由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。
3)此协议和单播协议一样允许在Internet宽带网上传输。

组播的缺点:
1)与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。

2)现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。

其它1:

IP组播通信需要一个特殊的组播地址,IP组播地址是一组D类IP地址,范围从224.0.0.0 到
239.255.255.255。其中还有很多地址是为特殊的目的保留的。224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是
为了特殊的目的保持的(比如IGMP协议)。

一般建议范围: 239.0.0.0~239.255.255.255


其它2:

RIP协议基于UDP,端口号520;(RIPv1使用广播、RIPv2组播地址224.0.0.9、RIPng组播地址FF02::9)
BGP基于TCP,端口号179;
L2TP基于TCP,端口号1701;
PPTP基于TCP,端口号1723;
OSPF基于IP,协议号89;(组播地址224.0.0.5(全部路由器)、224.0.0.6(指定路由器DR))
EIGRP基于IP,协议号88;(组播地址224.0.0.9)
ISIS,使用CLNS(IOS/OSI),集成ISIS属于三层,不存在端口号和协议号的概念;
组播地址,或称为主机组地址,由D类IP地址标记。
D类IP地址的最高四位为“1110”,起范围从224.0.0.0到239.255.255.255。
部分D类地址被保留,用作永久组的地址,这段地址从224.0.0.0-224.0.0.255。

224.0.0.4 - 网段中所有的DVMRP路由器

地址

 

用途

 

介绍

 

224.0.0.1

 

本网段所有的主机(All Hosts

网段中所有支持组播的主机

[RFC 1112, JBP]

 

224.0.0.2

 

相邻的所有的路由器(All Multicast Routers

网段中所有支持组播的路由器

[JBP]

 

224.0.0.5

 

传送OSPF协议用(OSPF Routers

所有的OSPF路由器

[RFC 1583, JXM1]

 

224.0.0.6

 

OSPF Designated Routers

所有的OSPF指派路由器

[RFC 1583, JXM1]

 

224.0.0.9

 

RIP2 Routers
所有RIPv2路由器

 

[RFC 1723, SM11]

 

224.0.0.12

 

DHCP Server/Relay Agent

 

[RFC 1884]

 

224.0.0.13

 

All PIM Routers

所有PIM路由器

[Farinacci]

 

参考:

http://baike.baidu.com/view/492256.htm

http://baike.baidu.com/view/1871353.htm