TCP/IP与广播机制

TCP/IP是一个协议族。TCP、UDP都是其中的组成部分,IP位于它们之下。

+------+ +-----++-----+ +-----+

|Telnet| | FTP | | TFTP| ... | ... |

+------+ +-----++-----+ +-----+

| | | |

+-----+ +-----+ +-----+

| TCP| | UDP | ... | ... |

+-----+ +-----+ +-----+

| | |

+--------------------------+----+

| InternetProtocol & ICMP | (InternetProtocol就是IP 协议)

+--------------------------+----+

|

+---------------------------+

| Local NetworkProtocol |

+---------------------------+

Protocol Relationships

只有UDP才支持广播,TCP是不支持广播的。

=====================================================

广播有两种,

一种是directedbroadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。

另一种是limited broadcast,广播地址是255.255.255.255

limited broadcast需要做一个SetSockopt():

broadcast:integer;;

broadcast:=1;

SetSockopt(FSocket,SOL_SOCKET,SO_BROADCAST,@broadcast,sizeof(broadcast));

两者都是可以的。

directedbroadcast不需要SetSockopt(),以标准的C类网为例,直接发送x.x.x.255就可以了,

这种广播只有同一逻辑子网中的机器才能收到,也就是说对方地址应该是x.x.x.y,如果不是

即使在同一物理子网中也是收不到的。当然,这和子网掩码有关。

limited broadcast必须有SetSockopt(FSocket,SOL_SOCKET,SO_BROADCAST,@broadcast,sizeof(broadcast));

它的广播地址是255.255.255.255,它的好处是只要在同一子网中的主机,就可以收到这种

广播,而不必非要在统一逻辑子网中,例如,如果你的地址是x.x.x.1,那么这种广播,

地址是x.y.z.a的主机也能收到。

PS:

1)用广播(或组播)方式,可直接收发数据。不用侦听

2)是不是进行广播必须是数据报SOCK_DGRAM.是

3)广播

广播是指在一个局域网中向所有的网上节点发送信息。这是UDP连接的一种

广播有一个广播组,即只有一个广播组内的节点才能收到发往这个广播组的信息。什么决定了一个广播组呢,就是端口号,局域网内一个节点,如果设置了广播属性并监听了端口号A后,那么他就加入了A组广播,这个局域网内所有发往广播端口A的信息他都收的到。

4)多播

多播与广播不同,多播是指一条信息向局域网内有限几个节点传递,而广播是不管某个节点是否在制定组内,都会向这个节点发送广播信息,容易造成网络负担严重。

多播的实现是靠多播组,在局域网内,一个多播地址唯一的定义了一个多播组(端口号任意),可以使用的多播地址是有规定的,从224.0.0.0—239.255.255.255之间,但是其中的一些地址不能用,是用作特殊用途的:224.0.0.0 –224.0.0.2 224.0.1.1 224.0.0.9 224.0.1.24。一个节点如果想接受自某个多播组或向某个多播组发送信息,必须首先加入多播组,然后给予UDP发送