科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux系统下广播程序制作介绍(下) (4)

Linux系统下广播程序制作介绍(下) (4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

有一系列的程序可以使你处理I P地址。首先,你可以使用inet_addr( )程序把诸如“ 132.241.5.10“形式的I P地址转化为无符号的整型数。

作者:meiyuan 来源:赛迪网技术社区 2007年10月22日

关键字: 操作系统 制作 广播 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

当左侧的主机发送数据报时,它注意到目的IP地址是子网广播地址,于是便将它映射程48位的以太网地址ff.ff.ff.ff.ff.ff。这使得子网上的每一个以太网接口都会接收该帧。在图中右侧两台运行IPv4的主机都接收该帧。由于以太网帧类型是0800,两个主机都将数据报传递到IP层。由于目的IP地址匹配二者的广播地址,并且协议字段为17(UDP),两个主机于是都将分组上传至UDP。

最右边的主机将UDP数据报传递给绑定端口1234的应用进程。接收广播UDP数据报的应用进程不需要任何特殊的处理,它仅仅创建一个UDP套接口,并将应用的端口号捆绑到其上。(我们假设捆绑的IP地址为INADDR_ANY,这是典型的情况)但是中间的主机没有任何应用进程绑定UDP端口1234。于是主机的UDP代码丢弃这个已收到的数据报。这台主机禁止发送端口不可达的ICMP消息,因为这样做会产生广播风暴(broadcast storm):子网上许多主机机会同时产生响应,这将导致网络在几秒钟内不可用。在图中,我们也表示出了左边主机将输出数据报又递送给自己的情况,这是一种广播属性:根据定义,广播要到达子网上的所有主机,包括发送者自身。

我们还假定发送应用进程已经绑定要发送到的端口(1234),因此它将收到它发送的每个数据报的拷贝。(但是一般情况下,没有将进程捆绑数据报所发送到UDP端口的要求。)

本例也表明了广播存在地根本问题:子网上所有未参与广播应用系统的主机也必须完成对数据报的协议处理,直至在UDP层将它丢弃。所有非IP主机(例如与行 Novell IPX 的主机)也必须在链路层接收完整的帧,并在该层将它丢弃(假定这些主机不支持帧的帧类型,IPv4分组的帧类型域值为0800)。因此,以高速率产生的IP数据报的应用系统(例如音频、视频应用系统)会严重影响子网上其他主机的运行。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章