多播
多播是基于UDP的。多播数据包的格式与UDP数据包相同。
多播组是D类IP地址(224.0.0.0~239.255.255.255)。
多播需要借助路由器完成。源主机只发送一次,路由器复制数据包并转发。
修改了文件读取到尾的判断,否则总会重复发送最后一个段话。
# gcc news_receiver.c -o receiver
# ./receiver 224.1.1.2 9190
# gcc news_sender.c -o sender
# ./sender 224.1.1.2 9190
猜测因为路由器不支持组播,程序收不到报文,后面有机会再试试。
广播
广播是向同一网络中的所有主机传输数据的方法。广播也是基于UDP的。
# gcc news_receiver_brd.c -o receiverbrd
# ./receiverbrd 9190
This example shows how to configure liveness detection for DHCP relay agent subscribers using Bidirectional Forwarding Detection (BFD) as the liveness detection method.
# gcc news_sender_brd.c -o senderbrd
# ./senderbrd 255.255.255.255 9190
习题
- TTL的含义是什么?请从路由器的角度说明较大的TTL值与较小的TTL值之间的区别及问题。
数据包能经过的路由器跳数。较大的TTL可以传播到更广的范围,较小的TTL可以较少不必要的数据传播。- 多播与广播的异同点是什么?请从数据通信的角度进行说明。
相同点:基于UDP;一端发送,多端接收。不同点:多播组需要预先加入,需要路由器的支持,不通网络的主机可以加入同一个多播组。- 下列关于多播的描述错误的是?
a. 多播是用来向加入多播组的所有主机传输数据的协议。
b. 主机连接到同一网络才能加入多播组,也就是说,多播组无法跨越多个网络。
c. 能够加入多播组的主机数并无限制,但只能有一个主机(Sender)向该组发送数据。
d. 多播时使用的套接字是UDP套接字,因为多播是基于UDP进行数据通信的。
bc。- 多播也对网络流量有利,请比较TCP数据交换方式解释其原因。
有多少个接收主机,TCP发送端就需要发送多少次。但多播只需要发送一次。- 多播方式的数据通信需要MBone虚拟网络。换言之,MBone是用于多播的网络,但它是虚拟网络。请解释此处的虚拟网络。
通过网络中的特殊协议工作的软件概念上的网络。
我的问题
- TCP有没有组播?
没有。因为TCP是面向连接的(一对一的)。
附录
[1] Github