TCP/IP之广播

来源:互联网 发布:js设置滚动条置顶 编辑:程序博客网 时间:2024/05/16 12:14

IPv4地址分为三类:单播地址,多播地址和广播地址,其中广播和多播仅应用于UDP,TCP只支持单播寻址,广播分组去往子网上的所有主机,包括发送主机自身。IPv6不支持广播,使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新编写。

TCP/IP中的广播分为4个类型:

1. 受限的广播

       受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,因为此时客户主机还不知道服务器主机的IP地址,在任何情况下,路由器都不会转发目的地址为受限的广播地址的数据报,这样的数据报仅仅出现在本地网络中。

       当应用进程发送一个目的地址为255.255.255.255的UDP数据报时,主机怎么做?

       假设进程已经设置了SO_BROADCAST套接字选项,大多数主机允许发送这种广播数据报,并把该目的地址转换为外出接口的子网定向广播地址

       当应用进程发送一个目的地址为255.255.255.255的UDP数据报时,多目的主机怎么做?

       有些系统只在主接口(第一个被配置的接口)上发送单个广播分组,其中的目的地址被置为该接口的子网定向广播地址,其它系统却在每个具备广播能力的接口上发送一个该数据报的副本,然而为了便于移植,如果应用进程需要从每个具备广播能力的接口发送同一个广播数据报,它就应该首先获取每个接口的配置,然后对每个具备广播能力的接口执行一个目的地址指定为该接口之子网定向广播地址的sendto调用。

2. 指向网络的广播

       指向网络的广播地址是主机号全1的地址,一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。

3. 指向子网的广播

       指向子网的广播地址为主机号全1且有特定子网号的地址,作为子网直接广播地址的IP地址需要了解子网的掩码,路由器通常不转发这种广播。

4. 指向所有子网的广播

       指向所有子网的广播地址的子网号及主机号全为1,如果网络没有划分子网,这就是一个指向网络的广播。

广播的用途

1. 在本地子网定位一个服务器主机,前提是已知或认定这个服务器主机位于本地子网,但是不知道它的单播IP地址,这种操作也称为资源发现(resource discovery)

2. 在有多个客户主机与单个服务器主机通信的局域网环境中尽量减少分组流通,比如ARP,DHCP,NTP,路由守护进程。

广播的根本问题

       子网上未参加相应广播应用的所有主机也不得不沿协议栈一路向上完整地处理收取的UDP广播数据报,直到该数据报历经UDP层时被丢弃为止。另外,子网上所有非IP的主机也不得不在数据链路层接收完整的帧,然后再丢弃它,要是运行着以较高速率产生IP数据报的应用,这些非必要的处理有可能严重影响子网上这些其它主机的工作。


发送广播的IP数据报时,需要设置SO_BROADCAST套接字选项来设置,不然系统不会允许我们这么做。另外,源自Berkeley的内核不允许对广播数据报执行分片,对于目的地址是广播地址的IP数据报,如果其大小超过外出接口的MTU,发送它的系统调用将返回EMSGSIZE错误。

0 0
原创粉丝点击