unicast、multicast和broadcast

来源:互联网 发布:c语言调用tcl 编辑:程序博客网 时间:2024/06/06 05:48

unicast:单播

单播:Internet上最普遍的、一对一 的传输方式
1. 我们知道,数据包在网络中传递时,就像邮件一样,数据包头含有发信人地址和收信人地址。
2. 如果两个地址在同一个子网内,可以直接根据收方地址来判断由哪台主机接收。如果在不同的子网,就要通过路由器转发到另一个子网,最终把数据包送到另一个子网的目的主机上。
3. 网络中的交换机和路由器对数据只进行转发不进行复制。

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

broadcast:广播

同一子网中的所有主机都会收到数据包,其它子网不会接收到数据包(被路由器阻挡了),否则网络就瘫痪了。
广播的优点:
1. 网络设备简单,维护简单,布网成本低廉
2. 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。

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

multicast:组播

  1. multicast 是一对一个群组的传输模式,不同于broadcast的是,同一子网中只有参加multicast group的主机才会收到数据包,其它的主机不会受到干扰;
  2. 数据包会通过路由器转发到另一个子网的同一个group中的主机。

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

组播的缺点:

  1. 与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
  2. 现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。

multicast和broadcast对比:

同:
1. 不管接收数据包的主机有几台,都只有一个数据流,也就是说,同一个子网里,不管接收主机的数量,所需的带宽都是一样的。
2. 只能用作目的地址,不能用作源地址。

异:
1. multicast包只有加入组的主机才会收到数据包,broadcast所有子网内的主机都可以收到数据包;

收发包

网卡可以接收以下3种地址的数据包
1. 目的地址跟自己的网卡地址是一样的数据包
2. 目的地址为FF:FF:FF:FF:FF:FF广播地址的数据包;
3. 目的地址为跟自己的组播地址范围相同的数据包。

网卡可以根据以下3种情况发送不同的数据包
1. 在以太网的应用当中,如果你希望你的数据包只发给一个网卡,目的地址用对方的网卡地址;
2. 如果你想把数据包发给所有的网卡,目的地址用广播地址;
3. 如果你想把数据包发给一组网卡,目的地址用组播地址。

参考:
1.https://en.wikipedia.org/wiki/Multicast_address
2.http://www.docin.com/p-466756852.html
3.http://www.cnblogs.com/wlei/archive/2012/12/15/2819429.html

原创粉丝点击