组播

TCP/IP协议(4):网络层

家住魔仙堡 提交于 2020-03-30 02:37:55
网络层上有IP、ICMP、IGMP等协议。 1、IP地址 在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址。IPV4类型IP地址为32位4个字节,IPV6类型IP地址为128位16个字节,公网IP是全球唯一的。32位的IPV4 IP地址通常用4个十进制的整数来表示,每个整数对应一个字节,如"106.10.21.206",这种表示方法称为“点分十进制表示法”。 IPV4类IP地址分为五类,如下图为他们各自的地址格式和地址范围: A类IP地址第一个字节为网络地址,剩余三个字节为主机地址,默认子网掩码为255.0.0.0,可用的A类网络有126个(全0和全1的网络地址用作特殊用途,故为128-2),每个网络能容纳1亿多个主机。A类地址适用于具有大量主机(直接个人用户)而局域网络个数较少的大型网络。需要注意的是A类IP地址中以127开头的地址表示本地环回地址。 B类IP地址前两个字节为网络地址,后两个字节为主机地址,默认子网掩码为255.255.0.0,可用的B类网络有16382个,每个网络能容纳6万多个主机 。 C类IP地址前三个字节为网络地址,后一个字节为主机地址,默认子网掩码为255.255.255.0,C类网络可达209万余个,每个网络能容纳254个主机。 D类IP地址被用在多点广播(Multicast)中。 E类IP地址范为将来使用保留。

Nodejs网络通讯

本小妞迷上赌 提交于 2020-03-03 00:55:43
Node.js 网络通信 Node 是一个面向网络而生的平台,它具有事件驱动、无阻塞、单线程等特性,具备良好的可伸缩性,使得它十分轻量,适合在分布式网络中扮演各种各样的角色。同时 Node 提供的 API 十分贴合网络,适合用它基础的 API 构建灵活的网络服务。本课程的内容就是给大家介绍 Node 在网络通信编程方面的具体能力。 利用 Node 可以十分方便的搭建网络服务器。在 Web 领域,大多数的编程语言需要专门的 Web 服务器作为容器,如 ASP、ASP.NET 需要 IIS 作为服务器,PHP 需要打在 Apache 或 Nginx 环境等,JSP 需要 Tomcat 服务器等。但对于 Node 而言,只需要几行代码即可构建服务器,无需额外的容器。 Node 提供了 net、dgram、http、https 这4个模块,分别用于处理 TCP、UDP、HTTP、HTTPS,适用于服务器端和客户端。 网络通信相关概念 我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定

网络ip地址分几类

陌路散爱 提交于 2020-02-29 22:18:25
共五类ABCDE,其中D类ip用作组播,E类ip用作科研,实际上只有三类可以用 A类:0.0.0.0-127.255.255.255 其中0.xxx.xxx.xxx不可以使用 127.xxx.xxx.xxx用作本地环回测试用的也就是 A类可以使用的是1.0.0.0-126.255.255.255 B类:128.0.0.0-191.255.255.255 C类 :192.0.0.0-223.255.255.255 D类:224.0.0.0-239.255.255.255 用于组播和科研 E类:240.0.0.0-255.255.255.255 科研 D类和E类为保留地址段,不可以分配 来源: CSDN 作者: ydb1358396458 链接: https://blog.csdn.net/ydb1358396458/article/details/104575887

了解Cisco CGMP协议和RGMP协议-IELAB

泪湿孤枕 提交于 2020-02-13 17:16:19
CGMP协议,思科组管理协议: CGMP用来在二层网络限制多播流量。因为交换机不能查看三层数据包,也不能区分出IGMP包。使用了CGMP,路由器告诉交换机多播组用户的接口,只有路由器能够产生CGMP数据包,交换机只是监听CGMP数据包。 主要提供一下服务: 1、允许 IP 组播数据包被交换到具有 IP 组播客户机的那些端口。 2、将网络带宽保存在用户字段,不致于转播不必要的IP组播流量。 3、在为交换网络中的每个组播组创建独立 VLAN 时不会产生额外开销。 CGMP有两种数据包: Join 路由器向交换机通告向多播组中加入一个组员 Leave 路由器向交换机通告从多播组中删除一个组员 一旦 CGMP 被激活使用,它能自动识别与 CGMP-Capable 路由器连接的端口。CGMP 通过缺省方式被激活,它支持最大为64的IP 组播组注册。支持 CGMP 的组播路由器周期性地相发送 CGMP 加入信息(JoinMessages),用来通告自己执行网络交换行为。接收交换机保存信息,并设置一个类似于路由器保持时间(Holdtime)的定时器(Timer)。交换机每接收一个 CGMP 加入信息,定时器也随其不断更新。当路由器保持时间终止时,交换机负责将所有知道的组播组移出 CGMP。 RGMP协议,思科路由器端口组管理协议 思科路由器端口组管理协议(RGMP)弥补了 Internet

单播 组播 广播

夙愿已清 提交于 2020-02-05 05:42:32
单播 在发送者和每一接收者之间实现 点对点 网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同 数据包 。如果有大量 主机 希望获得 数据包 的同一份拷贝时,将导致发送者负担沉重、延迟长、 网络拥塞 ;为保证一定的服务质量需增加 硬件 和 带宽 。 广播 广播指在IP 子网 内 广播数据包 ,所有在 子网 内部的 主机 都将收到这些数据包。广播意味着网络向子网每一个 主机 都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小,只在本地 子网 内有效,通过 路由器 和 网络设备 控制广播传输。 组播 组播在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个接收者传输相同的数据,也只需复制一份相同的数据包。它提高了数据传送效率,减少了骨干网络出现拥塞的可能性。 组播 解决了 单播 和广播方式效率低的问题。当网络中的某些用户需求特定信息时, 组播 源(即组播信息发送者)仅发送一次信息,组播 路由器 借助组播 路由协议 为组播 数据包 建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。 来源: CSDN 作者: 痒痒挠963 链接: https://blog.csdn.net/u014426028/article/details/103745395

组播问答

三世轮回 提交于 2020-02-05 00:15:11
1. 什么是组播; 2. 什么是IGMP; 3. 什么是IGMP SNOOPING; 4. 组播是如何建立的; 5. 组播是如何撤消的; 6. 视频监控系统采用组播经常发生图像停顿的状况,为什么(单播时候没有); 1.答:组播是实现点对多点的网络传输模式,并且在同一线路上面只有一份数据包的传输。网络在分支点才进行复制,在分支点以上的网络只需传送一个数据流。 2.答:IGMP(互联网组管理协议),IGMP主要用于建立并且维护路由器直联网段的组成员关系信息,域内组播路由协议根据IGMP维护的这些组播成员关系信息,运用一定的组播路由算法构造组播分发树进行组播数据包的转发。组播路由协议分为域内组播路由协议及域间组播路由协议。域内组播路由协议包括PIM-SM、PIM-DM、DVMRP等协议,域间组播路由协议包括MBGP、MSDP等协议。同时为了有效抑制组播数据在链路层的扩散,引入了IGMP Snooping、CGMP等二层组播协议。 3.答:IGMP SNOOPING是二层组播协议,为了有效抑制组播数据在链路层的扩散。帮助交换机决定哪个主机请求加入特定的组播组,该主机连接到哪个端口。交换机处理组播包的默认行为是泛洪,CGMP/IGMP Snoopimg帮助交换机知道接收者连接到哪些端口,避免泛洪组播包。实现机理是:交换机通过侦听主机发向路由器的IGMP成员报告消息的方式

Zigbee协议栈组播通信

旧巷老猫 提交于 2020-02-03 17:58:01
在Zigbee网络中组播通信,模块可以分组来标记,发送模块的组号和接受模块的组号相对应,那么这些模块就可以拿到无线数据包。 分组中组编号是2个字节,如0x0001、0x0002。 发送的模块按照组的方式发送,需要目标模块的组编号,端点,簇。 一个组可以关联多个端点,同一个端点也可以关联多个组。 终端节点(发送): ZZApp.c中 if ( events & ZZApp_MY_EVT ) { if ( P0_1 == 0 ) { char theMessageData [ ] = "HELLO WORLD!" ; ZZApp_DstAddr . addrMode = ( afAddrMode_t ) AddrGroup ; //组播形式 ZZApp_DstAddr . addr . shortAddr = 0x0001 ; //接受端的组 // Take the first endpoint, Can be changed to search through endpoints ZZApp_DstAddr . endPoint = 10 ; //接受端的端口 AF_DataRequest ( & ZZApp_DstAddr , & ZZApp_epDesc , 0x0001 , //接受端的簇 ( byte ) osal_strlen ( theMessageData ) + 1

Node之使用dgram模块实现基于UDP的数据通信

别说谁变了你拦得住时间么 提交于 2020-02-01 01:06:55
使用dgram模块实现基于UDP的数据通信 TCP是一种基于连接的协议,在进行通信前,首先要求客户端与服务器端建立一条用于通信的连接。而UDP是一种面向非连接的协议,在进行通信前,不要求首先建立客户端与服务器端之间的连接,可以直接把数据包发送给对方。基于这个原因,UPD也是一种不可靠的协议,但是其传输速度比TCP更快,因此更适用于实时通信的场合。 在Node.js中,提供了dgram模块,用于创建UPD服务器与客户端,以及实现UDP服务器与客户端之间的通信。 创建UDP服务器与客户端 在dgram模块中,可以使用createSocket方法创建一个用于实现UDP通信的socket端口对象 var socket=dgram.createSocket(type,[callback]) type:用于指定进行UDP通信时使用的协议类型,可指定值为“upd4”或“upd6”。 callback:用于指定当从该端口接收到数据时调用的回调函数,在该回调函数中,可以使用两个参数。msg参数值为一个Buffer对象,其中存放了接收到的数据。rinfo参数值也为一个对象,该对象所具有的属性及属性值如下: address:属性值为发送者所使用的地址,例如127.0.0.1。 family:属性值为一个标识了发送者所使用的地址是IPv4地址还是IPv6地址的字符串,例如“IPv4”。 port

UDP发送组播消息

此生再无相见时 提交于 2020-01-31 10:52:10
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace Asr.App.O2o.Client.UdpMulticast { public class UdpMulticast { private static IPAddress mcastAddress; private static int mcastPort; private static Socket mcastSocket; private static MulticastOption mcastOption; public static void Start() { //组播地址和端口 mcastAddress = IPAddress.Parse("224.0.0.1"); mcastPort = 6005; //组播套接字,绑定本地地址(组播端口) mcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint localEP = new IPEndPoint

组播

天大地大妈咪最大 提交于 2020-01-29 01:06:05
组播 单播只能发给一个接收方,广播发给所有主机,但过多的广播会大量占用网络带宽,造成网络风暴,影响通信。 组播(多播)为折中方式,只有加入某个多播组的主机才能收到数据。 组播的IP地址:224.0.0.1 ~ 239.255.255.254(中间除去广播地址) 组播的发送 1)创建UDP套接字 2)指定目标地址与端口 3)发送数据包 1 /*udp demo */ 2 3 /* usage: 4 * ./client serv_ip serv_port 5 */ 6 #include "net.h" 7 void usage (char *s) 8 { 9 printf ("\nThis is multicast demo!\n"); 10 printf ("\nUsage:\n\t %s serv_ip serv_port", s); 11 printf ("\n\t serv_ip: udp server ip address(between 224~239 segment)"); 12 printf ("\n\t serv_port: udp server port(serv_port > 5000)\n\n"); 13 } 14 15 int main (int argc, char *argv[]) 16 { 17 int fd = -1; 18 int port =