简介Linux下的多播编程

下面就开始我们的多播编程了:

一、多播的概念

多播,也称为“组播”,将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的        数据。

在 广域网上广播的时候,其中的交换机和路由器只向需要获取数据的主机复制并转发数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择 地复制并传输数据,将数据仅仅传输给组内的主机。多播的这种功能,可以一次将数据发送到多个主机,又能保证不影响其他不需要(未加入组)的主机的其他通 信。

相对于传统的一对一的单播,多播具有如下的优点:

具有同种业务的主机加入同一数据流,共享同一通道,节省了带宽和服务器的优点,具有广播的优点而又没有广播所需要的带宽。

服务器的总带宽不受客户端带宽的限制。由于组播协议由接收者的需求来确定是否进行数据流的转发,所以服务器端的带宽是常量,与客户端的数量无关。

与单播一样,多播是允许在广域网即Internet上进行传输的,而广播仅仅在同一局域网上才能进行。

组播的缺点:

多播与单播相比没有纠错机制,当发生错误的时候难以弥补,但是可以在应用层来实现此种功能。

多播的网络支持存在缺陷,需要路由器及网络协议栈的支持。

多播的应用主要有网上视频、网上会议等。

二、  广域网的多播

多播的地址是特定的,D类地址用于多播。D类IP地址就是多播IP地址,即224.0.0.0至239.255.255.255之间的IP地址,并被划分为局部连接多播地址、预留多播地址和管理权限多播地址3类:

局部多播地址:在224.0.0.0~224.0.0.255之间,这是为路由协议和其他用途保留的地址,路由器并不转发属于此范围的IP包。

预留多播地址:在224.0.1.0~238.255.255.255之间,可用于全球范围(如Internet)或网络协议。

管理权限多播地址:在239.0.0.0~239.255.255.255之间,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

时间: 2024-09-29 07:03:38

简介Linux下的多播编程的相关文章

一、LINUX下blueZ的编程

  Linux下Bluez的编程实现 1. 蓝牙的各个协议栈的简介....................................................................................... 2 1.1.蓝牙技术.......................................................................................................... 2 1.1.蓝牙协议栈.

linux网络编程-LINUX下模拟DNS编程,写报文时关于DOMAIN NAME 的格式转换程序

问题描述 LINUX下模拟DNS编程,写报文时关于DOMAIN NAME 的格式转换程序 这段程序要求是转换格式,如www.baidu.com换成3www5baidu3com0 网上有代码 void ChangetoDnsNameFormat(unsigned char* dns,unsigned char* host) { int lock = 0 , i; strcat((char*)host,"."); for(i = 0 ; i < strlen((char*)host)

《Linux设备驱动开发详解 A》一一3.5 Linux下的C编程特点

3.5 Linux下的C编程特点 3.5.1 Linux编码风格 Linux有独特的编码风格,在内核源代码下存在一个文件Documentation/CodingStyle,进行了比较详细的描述. Linux程序的命名习惯和Windows程序的命名习惯及著名的匈牙利命名法有很大的 不同. 在Windows程序中,习惯以如下方式命名宏.变量和函数: #def?ine PI 3.1415926 / 用大写字母代表宏 / int minValue, maxValue; / 变量:第一个单词全小写,其后单

gtk+-linux 下图形界面编程gtk_layout_new()参数的设置是怎么发挥效用的呢?

问题描述 linux 下图形界面编程gtk_layout_new()参数的设置是怎么发挥效用的呢? GtkWidget*gtk_layout_new(GtkAdjustment*hadjustment,GtkAdjustment*vhadjustment); 参数hadjustment,vadjustment设置怎么发挥影响? 下面的列子(layout里放置一个按钮)怎么没有影响 1 #include<gtk/gtk.h> 2 int main(int argc,char**argv) 3 {

Linux下的多线程编程(三)_Linux

   下面先来一个实例.我们通过创建两个线程来实现对一个数的递加. 或许这个实例没有实际运用的价值,但是稍微改动一下,我们就可以用到其他地方去拉. 下面是我们的代码: /*thread_example.c : c multiple thread programming in linux *author : falcon *E-mail : tunzhj03@st.lzu.edu.cn */ #include <pthread.h> #include <stdio.h> #inclu

Linux下多进程/多线程编程

linux下多进程.多线程编程 linux下进程   (一) 理解Linux下进程的结构  Linux下一个进程在内存里有三部份的数据,就是"数据段","堆栈段"和"代码段",其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行."代码段",顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段.  堆栈段存放的就是子程序的返回地址

【寻善良有空心情好的达人】转战linux下的爬虫编程,请教达人拨我头上乌云

问题描述 背景:从事.net方向开发数年,现在项目需要要往linux下发展,主要从事爬虫(当前为nutch)以及数据挖掘类方向.乌云:linux几乎零基础,经常在做基础配置时遭遇困难,严重影响情绪.需求:1.推荐些linux方向学习的资源,或者参考资料(最好是书本)2.心地特别善良,而且又刚刚好有时间,然后心情又特别的好的兄弟能给些更深入的建议,小弟也不客气拜谢全收了~ 解决方案 有一本<鸟哥的linux私房菜很不错>,对于你入门到深入应该够了!解决方案二:ls 说的很对.....

Linux下的串口编程:struct termios结构体

termios结构体说明 termios结构体中,该结构体一般包括如下的成员: tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_t     c_cc[NCCS]; 其具体意义如下 c_iflag:输入模式标志,控制终端输入方式,具体参数如下所示. c_iflag参数表 键值说明 IGNBRK 忽略BREAK键输入 BRKINT 如果设置了IGNBRK,BREAK键的输入将被忽略,如果设置了BRK

Linux下的多线程编程

1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程.现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux. 为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题. 使用多线程的理由之一是和进程相比,它