单播、组播、广播区别

 

单播:在IP网络中若采用单播的方式,信息源(source)需要与每个需要信息的主机(Receiver)都建立一条独立的信息传输通道,并为每个Receiver发送一份独立的信息拷贝。

广播:广播方式下,Source把信息传送给该网段中所有的主机,不管其是否需要该信息。信息安全无法保障,且会造成同一网段中信息泛滥。

组播:组播方式下,组播源(Source)仅需要发送一份信息,借助组播路由协议建立组播分发树,被传递的信息在距离组播源尽可能远的网络节点才开始复制和分发。组播解决了以最小的网络开销实现单点发送、多点接收的问题。与广播相比,广播只能实现在同一网段中分发,而组播可以实现跨网段的传送。

 

PC通过DHCP自动获取IP地址的过程就是通过广播来实现的。在同一个vlan中,源MAC所能广播的范围通常以255.255.255.255的形式进行广播,也就是局域网内所有的主机都能收到源MAC发的广播帧。

 

www.yunfit.com

单播是单台设备单台设备之间的通信,其流量的源目 IP 地址都是单播地址。广播是单台设备向网络中所有主机发送数据,是一个主机发送的流量去往它所在网络内的其他所有主机,其源地址是单播地址标识发送者,目的地址是一个广播地址,用来标识它所在网络内的所有其他主机。则是向指定的一主机发送数据,一个信源发送相同的流量去往多个接收者,这些接收者可以在同一个网络,也可以在不同网络流量的源地址为单播地址标识信源,目的地址是一个地址标识一接收者 [^1][^2]。 从效率和流量方面来看,单播相比,提高了发送数据包的效率;广播相比,减少了网络流量。在实现条件上,广播不同,要实现需要在接受的客户机上安装相应的客户端程序 [^1]。 在传输协议方面,TCP 是可靠传输,一般只支持单播这种通信方式;而 UDP 通信不需要建立连接就可以发送数据,通常所说的广播都是在 UDP 下的概念 [^3]。 ```python # 简单示例说明不同通信方式 # 单播示例,模拟客户端向服务器发送消息 import socket # 服务器地址和端口 server_address = ('127.0.0.1', 12345) # 创建 TCP 套接字 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect(server_address) # 发送消息 message = "This is a unicast message." client_socket.sendall(message.encode()) # 关闭套接字 client_socket.close() # 广播示例,模拟主机向网络内所有主机发送消息 import socket # 创建 UDP 套接字 broadcast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) # 广播地址和端口 broadcast_address = ('<broadcast>', 12346) # 发送广播消息 broadcast_message = "This is a broadcast message." broadcast_socket.sendto(broadcast_message.encode(), broadcast_address) # 关闭套接字 broadcast_socket.close() # 示例,模拟发送者向发送消息 import socket import struct # 地址和端口 multicast_group = ('224.1.1.1', 12347) # 创建 UDP 套接字 multicast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 设置套接字选项,允许发送消息 ttl = struct.pack('b', 1) multicast_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl) # 发送消息 multicast_message = "This is a multicast message." multicast_socket.sendto(multicast_message.encode(), multicast_group) # 关闭套接字 multicast_socket.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值