导航:首页 > 操作系统 > linux组播配置

linux组播配置

发布时间:2022-07-25 19:26:54

linux系统的基本配置要求是什么

Linux系统最低配置:

CPU:700 MHz;

内存:384 MB;

硬盘:6 GB 剩余空间;

显卡:800x600以上分辨率。


Linux系统是非常稳定和高效的,对电脑硬件配置要求很低,几乎主流的配置都可以用。这正是Linux系统的优势所在,不同的Linux系统版本要求略有不同,但是大体上在同一个配置等级内。


(1)linux组播配置扩展阅读:

Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux操作系统不仅仅是被网络运维人员当作服务器使用,Linux既可以当作服务器,又可以当作网络防火墙是Linux的 一大亮点。

Linux系统工具链完整,简单操作就可以配置出合适的开发环境,可以简化开发过程,减少开发中仿真工具的障碍,使系统具有较强的移植性。

linux系统完全兼容POSIX1.0标准。这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。

Ⅱ linux 怎样加入一个多播组

应用程序通过命令字IP_ADD_MEMBERSHIP把一个socket加入到一个多播组,IP_ADD_MEMBERSHIP是一个IP层的命令字,其调用使用的参数是结构体struct ip_mreq,其定义如下:
struct ip_mreq
{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
};
该结构体的两个成员分别用于指定所加入的多播组的组IP地址,和所要加入组的那个本地接口的IP地址。该命令字没有源过滤的功能,它相当于实现IGMPv1的多播加入服务接口。
ip_setsockopt实现了该命令字,它通过调用ip_mc_join_group把socket加入到多播组。
表示socket的结构体struct inet_sock有一个成员mc_list,它是一个结构体struct ip_mc_socklist的指针,实际上一个该结构体的链表,该结构体的定义如下:
struct ip_mc_socklist
{
struct ip_mc_socklist *next;
struct ip_mreqn multi;
unsigned int sfmode;
struct ip_sf_socklist *sflist;
};

next指向链表的下一个节点;multi表示组信息,即在哪一个本地接口上,加入到哪一个多播组;sfmode是过滤模式,取值为
MCAST_INCLUDE或MCAST_EXCLUDE,分别表示只接收sflist所列出的那些源的多播数据报,和不接收sflist所列出的那些源
的多播数据报;sflist是源列表,结构体struct ip_sf_socklist的定义如下:
struct ip_sf_socklist
{
unsigned int sl_max;
unsigned int sl_count;
__u32 sl_addr[0];
};

sl_addr是源地址列表,sl_count应该是源地址列表中源地址的数量,sl_max应该是当前sl_addr数组的最大可容纳量(不确定)。对
于通过调用IP_ADD_MEMBERSHIP加入的多播组,它会在struct inet_sock的mc_list的链表头添加如下一个节点:
struct ip_mc_socklist{
.next = 原来的链表头;
.multi = 所加入的多播组,和接口信息;
.sfmode = MCAST_EXCLUDE;
.sflist = NULL; 即不排除任何源地址,也就是不存在源过滤。
}
另外,一个socket所允许加入的多播组的最大数量也是有限制的,mc_list中节点的数量不允许超过sysctl_igmp_max_memberships(缺省为20)。

ip_mc_join_group还需要通过ip_mreq.imr_interface的指定值找到要加入多播组的那个接口,并为接口设置状态(即该接
口要加入哪个多播组,过滤哪些源,也就是为该接口增加一个组,如果要增加的组已存在,则增加该组的引用计数)。代表网络设备接口的结构体struct
in_device有一个成员mc_list,这是一个结构体struct ip_mc_list的链表,该结构体的定义如下:
struct ip_mc_list
{
struct in_device *interface;
unsigned long multiaddr;
struct ip_sf_list *sources;
struct ip_sf_list *tomb;
unsigned int sfmode;
unsigned long sfcount[2];
struct ip_mc_list *next;
struct timer_list timer;
int users;
atomic_t refcnt;
spinlock_t lock;
char tm_running;
char reporter;
char unsolicit_count;
char loaded;
unsigned char gsquery;
unsigned char crcount;
};

interface指向网络设备接口,multicast即为加入的组的多播地址,users记录当前有几个socket在该接口上加入了该多播组。
sfcount是一个有两个元素的数组,分别记录在该接口上加入多播组的socket的过滤模式为EXCLUDE和INCLUDE的数量,sfmode为
该接口本身的过滤模式。sources为源地址列表,该结构体具体内容稍后再分析。timer为主动报告定时器,当一个接口(注意:不是socket)新
加入到一个多播组,需要向多播路由器发送一个igmp报告,以通知多播路由器需要向本地网络转发该组的数据报。tm_running是一个标志,如果
timer当前正在运行,则置1,否则置0。reporter也是一个标志,如果当前正要开始发送igmp报告,则置该标志为1,否则为0。
unsolicit_count是当一个接口新加入到一个多播组时,发送主动报告的次数,值赋为
IGMP_Unsolicited_Report_Count(缺省值为2)。loaded也是一个标志,当该接口上的该多播组被加入时,需要通知硬件过
滤器,通知完成即置该标志为1,否则为0。
该结构体比较复杂,先看通过IP_ADD_MEMBERSHIP命令字把一个socket加入到一个新的多播组,会使struct in_device的mc_list中增加一个什么样的节点。下面是生成的节点的情况:
struct ip_mc_list{
.interface = in_dev;
.multiaddr = 多播组地址;
.source = NULL; //源过滤列表为空。
.tomb = NULL;
.sfmode = MCAST_EXCLUDE; //EXCLUDE模式,即不过滤任何源。
.sfcount[MCAST_EXCLUDE] = 1;
.sfcount[MCAST_INCLUDE] = 0;//即该节点上该多播组有一个socket加入,过滤模式为EXCLUDE。
.users = 1; //有一个用户。
.refcnt = 1; //引用计数为1
.tm_running = 0;
.unsolicit_count = 2;
... ...
}
新生成的节点加入到mc_list链表中后,要通知网络设备接口的硬件,以使它的过滤机制可以接收进该多播组的数据报,同时也要通知多播路由器。

首先要把多播地址映射成以太网地址,映射规则是把多播IP地址的低23位放到以太网多播地址01-00-5E-00-00-00(16进制)的低23位。
因为一个IP组地址有28位有效位(除去高位的1110),所以有可能出现多个组地址被映射成同一个以太网多播地址,具体实现见
ip_eth_mc_map。然后把这个mac地址加到硬件的过滤机制中。
具体的实现在函数dev_mc_add中。代表网络设备接口的结构体struct net_device也有一个成员mc_list,它是一个结构体struct dev_mc_list的链表,该结构体的定义如下:
struct dev_mc_list
{
struct dev_mc_list *next;
__u8 dmi_addr[MAX_ADDR_LEN];
unsigned char dmi_addrlen;
int dmi_users;
int dmi_gusers;
};

next指向链表下一个节点,dmi_addr是多播mac地址,dmi_addrlen为多播mac地址的长度,dmi_users是在节点被重复到加
入到设备上的次数,struct
net_device还有一个成员mc_count,用于记录链表中节点的数量。dev_mc_add创建一个新的struct
dev_mc_list节点,加入到链表中,并通过调用网络设备接口的成员函数set_multicast_list来启用设备的过滤机制。

最后一步发送主动成员报告,这里,首先忽略IGMPv1和IGMPv2存在的情况。如果要加入的多播组是
IGMP_ALL_HOSTS(224.0.0.1),则不需要发送成员报告。否则启用定时器struct
in_device->mr_ifc_timer(接口状态改变定时器),该定时器在设备初始化的时候被建立,其超时处理函数是
igmp_ifc_timer_expire,它发送一个IGMPv3的报告,然后再次启用定时器。也就是说,第一个主动成员报告立即发出,然后在一个0
到IGMP_Unsolicited_Report_Interval(缺省为10秒)之间的一个时间后,发出第二个主动成员报告,连续发出
IGMP_Unsolicited_Report_Count(缺省值为2)个。
测试环境中要加入的多播组是224.0.1.1,发出的IGMPv3报告如下:
数据 含义
22 第3版成员关系报告
00 8bit保留,必须为0
f8 fc 校验和
00 00 16bit保留,必须为0
00 01 组记录的数量,为1
下面为一条组记录:
04 类型为CHANGE_TO_EXCLUDE_MODE,改变到EXCLUDE过滤模式
00 辅助数据长度
00 00 源地址的数量
e0 00 01 01 组地址224.0.1.1

Ⅲ 如何把LINUX配置成支持IPV6组播的路由

1、配置IPv6地址 vi /tc/sysconfig/network-scripts/ifcfg-eth0 修改以下三个地方 IPV6INIT=”yes” IPV6ADDR=2400:A480:AAAA:200::159 IPV6_DEFAULTGW=2400:A480:AAAA:200::1 2、重启网络服务PING外网测试连通性 service netowork restart ping ipv6 3、在客户端面远程测试 打开远程连接工具:SecureCRT 4、经过如上几个步骤我们就完成了在linux操作系统下对IPv6地址的配置。

Ⅳ linux多播路由器设置如何生效

你好!linux多播路由器设置的简介如下:
1、首先,接好无线路由器之后需要检查是否通电,无线路由器是否正常亮灯运行。
2、检查无误后,打开浏览器输入:192.168.1.1后按ENTER进入,这个时候弹出一个对话框,需要输入帐户名和密码,这个不用操心,在路由器的后面会有的,你找着打上去就能登陆了,一般情况下都是:帐户名:admin 密码:admin
3、按照路由器背后的账户密码输入登录后,就可以登陆到路由器的设置页面了。
4、点击页面的设置向导,会出现一个带领你设置好路由器的框框,按照它的要求一步步走下去。
5、点击下一步,进入到账号密码设置,这个账号密码是你当前网络上网的账号密码,如果不知道,可以咨询你的运营商。
6、设置好上网的账号密码之后就是无线上网的功能设置了,设置你的WIFI名称和WIFI密码,建议密码不要设置过于简单,容易被人破解,并且加密方式采用系统推荐就可以。
7、点击完成,你的路由器设置已经成功了。

Ⅳ linux netlink socket 怎样设置组播

Multicast Programming Sample

The following sample code illustrates how to include multicast functionality to a Windows Sockets application using socket options.

int /* OUT: whatever setsockopt() returns */
join_source_group(int sd, u_int32 grpaddr,
u_int32 srcaddr, u_int32 iaddr)
{
struct ip_mreq_source imr;

imr.imr_multiaddr.s_addr = grpaddr;
imr.imr_sourceaddr.s_addr = srcaddr;
imr.imr_interface.s_addr = iaddr;
return setsockopt(sd, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP, &imr, sizeof(imr));
}

int
leave_source_group(int sd, u_int32 grpaddr,
u_int32 srcaddr, u_int32 iaddr)
{
struct ip_mreq_source imr;

imr.imr_multiaddr.s_addr = grpaddr;
imr.imr_sourceaddr.s_addr = srcaddr;
imr.imr_interface.s_addr = iaddr;
return setsockopt(sd, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP, &imr, sizeof(imr));
}

Send comments about this topic to Microsoft

Ⅵ 怎样用Linux实现组播路由转发

这就要有PIM(Protocol Independent Multicast,协议无关组播组)协议的支持,就必须在Linux环境下安装Pimd软件协议包。 安装补丁文件 安装Pimd软件协议包需要两个补丁文件:pimkern-freebsd-4.6.patch和netstat-freebsd-4.6.patch。安装步骤如下: 首先将两个补丁文件拷贝到/usr/src/目录下,并执行以下命令:#patch -p2 < netstat-freebsd-4.6.patch #patch -p2 < pimkern-freebsd-4.6.patch 执行以下命令,编译并安装netstat:#cd /usr/src/usr.bin/netstat #make #make install 重新编译内核 执行以下命令,修改multi配置文件:#cd /usr/src/sys/i386/conf/ #cp GENRIC multi #vi multi 在multi配置文件中,加入下列两行代码:options MROUTING options PIM 保存并退出vi编辑器。 在当前multi配置文件所在的目录执行以下命令:#config multi #cd /usr/src/sys/compile/multi/ #make depend #make #make install 至此,新内核编译完毕。 备份Kernel文件 新内核编译完毕后,在重新启动前,要先将根目录下原有的Kernel文件进行备份。#cd / #mv kernel kernel.old 若提示“operation not permitted”,则需要先执行以下命令:#chflags noschg /kernel 备份Kernel文件后执行以下命令:#cp /usr/src/sys/compile/multi/kernel /kernel 在系统重新启动后,默认选择的便是新编译的内核。 安装Pimd软件协议包 Linux下Pimd软件协议包代码的起源有两个地方,一个是日本的KAME项目组,另一个是南加州大学信息科学学院。到这两个组织的主页上都可以下载所需要的pimd-current.tar.gz 协议包和上面提到的两个补丁。 用以下命令解压缩 pimd-current.tar.gz 软件包,并安装:#tar zxf pimd-current.tar.gz #cd pimd-2.1.0-alpha29.16 #make #make install 以上命令执行过程中可能会出现错误,需要手工将其完成,拷贝当前目录下的pimd文件:#cp pimd /usr/local/bin/ #chmod 755 pimd #cp pimd.conf /etc/ 至此,Pimd软件协议包安装完毕。还需要打开Linux系统的路由转发功能,才能实现组播包的转发,即在配置文件rc.conf中增加以下代码,重启后生效。作者:龙宇翔 苑庆国

Ⅶ 如何查看linux网口配置

通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。
1.命令格式:
ifconfig [网络设备] [参数]
2.命令功能:
ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置。
3.命令参数:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持ARP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度

Ⅷ linux下如何开启multicast

socket创建UDP通信描述符后,setsockopt加入多播组,再bind绑定到该网卡上

//在指定的IP和端口上接收多播组的报文
intrecv_msg(char*ip,unsignedshortport,char*mult_ip)
{
//建立通讯套接字
intfd=socket(PF_INET,SOCK_DGRAM,0);
if(-1==fd)
{
perror("socketfailed");
return-1;
}

//设置地址重用和接收多播
{
intreuse=1;
structip_mreqnmult_addr={0};
mult_addr.imr_multiaddr.s_addr=inet_addr(mult_ip);
mult_addr.imr_address.s_addr=inet_addr(ip);

if(-1==setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,
&mult_addr,sizeof(mult_addr)))
{
perror("setsockoptaddfailed");
goto_out;
}

if(-1==setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,
&reuse,sizeof(reuse)))
{
perror("setsockoptreusefailed");
}
}

//绑定地址和端口
{
structsockaddr_inaddr={0};
addr.sin_family=PF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=INADDR_ANY;
if(-1==bind(fd,(structsockaddr*)&addr,
sizeof(addr)))
{
perror("bindfailed");
goto_out;
}
}

//接收信息
while(1)
{
charbuf[128]={0};
intret=0;
structsockaddr_inclient_addr={0};
intlen=sizeof(client_addr);
ret=recvfrom(fd,buf,sizeof(buf),0,
(structsockaddr*)&client_addr,
&len);
//被信号中断则重启
if((-1==ret)&&(EINTR==errno))
{
continue;
}
elseif(-1==ret)
{
perror("recvfromfailed");
goto_out;
}
elseif(ret>0)
{
printf("%s ",buf);
}
usleep(100*1000);
}

_out:
if(fd>=0)
{
close(fd);
}
return0;
}

Ⅸ linux下配置多网卡组播地址,能正常使用,但重启后显示“no such device”,是什么原因该怎么解决

因为你用route命令添加的路由表不会保存到一次重启,虽然你查看得到,你可以写到启动脚本里去。
编辑/etc/init.d/network,在未尾加上下面几行:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi

编辑/etc/sysconfig/static-routes:
any net 224.0.0.101 netmask 255.255.255.255 dev eth0

any net 224.0.0.110 netmask 255.255.255.255 dev eth1
any net 244.0.0.111 netmask 255.255.255.255 dev eth3
any net 244.14.0.112 netmask 255.255.255.255 dev eth2

阅读全文

与linux组播配置相关的资料

热点内容
Python取ID对应的值 浏览:632
现在我的世界什么服务器最混乱 浏览:764
美国好的源码出售 浏览:325
苹果ipad文件夹怎么添加文字 浏览:485
腾讯云连接自己的服务器地址 浏览:218
硕士英语综合教程pdf 浏览:46
分段加密的安全性 浏览:507
咪咕直播为什么没有适配安卓系统 浏览:172
php模版大全 浏览:102
没车能解压吗 浏览:634
php开发oa系统源码 浏览:759
怎么安装苹果ios的app 浏览:581
app拉新如何机刷 浏览:480
zendeclipseforphp 浏览:480
同时有几个微信如何加密微信 浏览:86
大众20t压缩比 浏览:566
程序员要记住的500个单词 浏览:831
wq快捷方式在哪个文件夹 浏览:965
云南到河北源码 浏览:92
安卓手机怎么玩造梦3 浏览:60