单播
假设有两台主机:主机A和主机B,它们连接到同一个局域网,并且使用以下IP地址和端口号:
主机A:IP地址为 192.168.1.10,端口号为 7010
主机B:IP地址为 192.168.1.20,端口号为 7020
发送单播:
- 主机A准备向主机B发送一条单播消息。
- 主机A知道主机B的IP地址为 192.168.1.20,并且知道目标端口号为 7020。
- 主机A创建一个数据包,其中包含要发送的消息。
- 主机A将数据包发送到局域网中,指定目标IP地址为 192.168.1.20,并指定目标端口号为 7020。
接收单播:
- 主机B在其指定的端口号 7020 上监听传入的消息。
- 局域网中的路由器将数据包从主机A转发到主机B。
- 主机B收到数据包,并提取出消息,然后根据指定的端口号 7020确定消息的目的地应用程序或服务。
这个示例演示了单播通信的过程,其中消息从主机A单向发送到了主机B,且只有主机B会接收到该消息。
组播
假设有三台主机:主机1、主机2和主机3。主机2和主机3已经加入了组播组 239.0.0.1
,而主机1没有加入组播组。
-
加入组播组:
- 主机2和主机3发送组播组加入请求,以加入组播组
239.0.0.1,
并且监听了端口(端口号 5000)。
- 主机2和主机3发送组播组加入请求,以加入组播组
-
发送数据:
- 主机1希望向组播组发送数据。虽然主机1没有加入组播组,但它仍然可以直接向组播地址
239.0.0.1
发送数据包到特定的端口,端口号 5000。
- 主机1希望向组播组发送数据。虽然主机1没有加入组播组,但它仍然可以直接向组播地址
-
接收数据:
- 主机2和主机3已经加入了组播组
239.0.0.1
,它们会在各自的主机上监听组播组(端口号 5000)。 - 即使主机1没有加入组播组,但它向组播地址
239.0.0.1
发送的数据包将被路由到组播组,而已经加入该组播组的主机2和主机3将会接收到这些数据包。
- 主机2和主机3已经加入了组播组
所以,即使主机1没有加入组播组,主机2和主机3仍然能够通过组播地址接收到主机1发送的数据。这是组播通信的一个重要特性。
PS:在组播通信中,消息发送方(主机1)不需要加入组播。
广播
假设有三台主机:主机1、主机2和主机3,它们都连接到同一个局域网,并且使用以下IP地址和端口号:
- 主机1:IP地址为 192.168.0.1,端口号为 6000
- 主机2:IP地址为 192.168.0.2,端口号为 6000
- 主机3:IP地址为 192.168.0.3,端口号为 6000
现在,主机1希望向局域网内的所有主机发送广播消息。
-
发送广播:
- 主机1将消息发送到广播地址
255.255.255.255
,并指定目标端口为 6000。
- 主机1将消息发送到广播地址
-
接收广播:
- 主机2和主机3都在监听端口号为 6000 的广播消息。
- 当主机1发送广播消息时,它们都会接收到这个广播消息。
所以,主机1发送的广播消息会被整个局域网内的主机2和主机3收到,因为它们都在监听相同的广播地址和端口号。