即时通讯开发之详解tcp/ip中的广播和多播igmp协议

wecloud1314 wecloud1314     2023-02-03     463

关键词:

单播是说,对特定的主机进行数据传送。例如给某一个主机发送 IP 数据包。这时候,数据链路层给出的数据头里面是非常具体的 目的地址,对于以太网来 说,就是网卡的 MAC 地址(不是 FF-FF-FF-FF-FF-FF 这样的地址)。现在的具有路由功能的主机应该可以将 单播数据定向转发,而目的主机的网 络接口则可以过滤掉和自己 MAC 地址不一致的数据。

广播是主机针对某一个网络上的所有主机发送数据包。这个网络可能是网络,可能是子网,还可能是所有的子网。如果是网络, 例如 A 类网址的广播就是 netid.255.255.255,如果是子网,则是 netid.netid.subnetid.255;如果是所有的子网(B 类 IP)则是则是 netid.netid.255.255。广播所用的 MAC 地址 FF-FF-FF-FF-FF-FF。网络内所有的主机都会收到这个广播数据,网卡只要把 MAC 地址为 FF-FF-FF-FF-FF-FF 的数据交给内核就可以了。一般说来 ARP,或者路由协议 RIP 应该是以广播的形式播发的。

可以说广播是多播的特例,多播就是给一组特定的主机(多播组)发送数据,这样,数据的播发范围会小一些(实际上播发的范围 一点也没有变小),多播的 MAC 地址是最高字节的低位为一,例 如01-00-00-00-00-00。多播组的地址是 D 类 IP,规定是 224.0.0.0-239.255.255.255。

虽然多播比较特殊,但是究其原理,多播的数据还是要通过数据链路层进行 MAC 地址绑定然后进行发送。所以一个以太网卡在 绑定了一个多播 IP 地址之 后,必 定还要绑定一个多播的 MAC 地址,才能使得其可以像单播那样工作。这个多播的 IP 和多播 MAC 地址有一个对应的算法,在书的 p133到 p134之间。可以 看到 这个对应不是一一对应的,主机还是要对多播数据进行过滤。

个人的看法:广播和多播的性质是一样的,路由器会把数据放到局域网里面,然后网卡对这些数据进行过滤,只拿到自己打算要 的数据,比如自己感兴趣的多 播数据,自己感兴趣的组播数据。当一个主机运行了一个处理某一个多播 IP 的进程的时候,这个进程 会给网卡绑定一个虚拟的多播 mac 地址,并做出来一个多播 ip。这样,网卡就会让带有这个多播 mac 地址的数据进来,从而实现通信, 而那些没有监听这些数据的主机就会把这些数据过滤掉,换句话说,多播,是让主机 的内核轻松了,而网卡,对不起,您就累点吧。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

IGMP 的作用在于,让其他所有需要知道自己处于哪个多播组的主机和路由器知道自己的状态。一般多播路由器根本不需要知道 某一个多播组里面有多少个 主机,而只要知道自己的子网内还有没有处于某个多播组的主机就可以了。只要某一个多播组还有一台主 机,多播路由器就会把数据传输出去,这样,接受方就会通 过网卡过滤功能来得到自己想要的数据。为了知道多播组的信息,多播路 由器需要定时的发送 IGMP 查询,IGMP 的格式可以看书,各个多播组里面的主机要根 据查询来回复自己的状态。路由器来决定有几 个多播组,自己要对某一个多播组发送什么样的数据。

这种查询回应数据报的 TTL 一般是1,而且就算是出错也不产生 ICMP 差错(没必要)。

即时通讯开发之tcp/ip中的ip协议arp协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一... 查看详情

即时通讯开发之详解tcp/ip中的ip选路动态选路

...一个网络,在匹配的时候只要匹配一下网络号就可以了。即时 查看详情

即时通讯开发之tcp/ip中的tcp协议概述

终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读。前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西。TCP和UDP处在同一层---运输层,但是TCP和UDP最不同的地方是,TCP提供了一种可靠... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

即时通讯开发之tcp/ip中的ip协议arp协议

IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制--这被认为是上层协议--TCP或UDP要做的事情。所以这也就出现了TCP是一... 查看详情

即时通讯开发apachemina框架之iofilter详解

见名知义,IoFilter应该是一个过滤器,没错,它确实是一个过滤器。它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。 在Mina的官方文档中已经提到了IoFilter的作用:  (1)记录事... 查看详情

网络程序设计期末试题

...【原】AICMPBSMTPCHTTPDCONP【答案】D。CONP是OSI参考模型体系中的协议,其他三个都是TCP/IP协议簇中常见的协议类型。2.OSI参考模型中,表示层主要完成什么功能()【原】A通信管理B数据可靠传输C数据格式转换D路由选择【答案】C。通... 查看详情

即时通讯开发之tcp/ip基本概念

在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识... 查看详情

tcp/ip——何时用udp代替tcp

...传输,那么何时我们可以用UDP代替TCP呢。UDP的优点UDP支持广播和多播,事实上如果应用程序使用广播或多播,那就必须使用UDPUDP没有连接建立和拆除,UDP只需要两个分组就能交换一个请求和一个应答(这里假设两者的长度都小于... 查看详情

im即时通讯开发之android进程保活详解

关于Android平台的进程保活这一块,想必是所有Android开发者瞩目的内容之一。你到网上搜Android进程保活,可以搜出各种各样神乎其技的做法,绝大多数都是极其不靠谱。怀着学习和膜拜的心情进去Github围观,结果... 查看详情

python实现udp组播

...址类型之一,多播是一点对多点的通信, IPv6没有采用IPv4中的组播术语,而是将广播看成是多播的一个特殊例子。多播组只能用UDP或者原始套接字实现,不能用TCP。广播地址在使用TCP/IP协议的网络中,主机标识段hostID为全1的IP地... 查看详情

《网络编程》广播和多播

...以下三种:单播:单台主机与单台主机之间的数据通信;广播:单台主机向网络中全部主机发送数据报的过程;多播:单台主机向选定的一组主机发送数据报的过程;    在网络协议中IP地址有三种方式,即为单播... 查看详情

详解即时通讯开发框架netty4.x之channel和pipeline

Channel概念与java.nio.channel概念一致,用以连接IO设备(socket、文件等)的纽带。Netty4.x之后的Channel变化较大,官方的唬人的说法是无法通过简单的关键字替换进行迁移。用得较多应该是:ChannelHandler接口重新设... 查看详情

详解im即时通讯开发框架netty4.x之bytebuf

程序员喜欢说一句话:「不要重复造轮子」,但是程序员又不太会践行这句话。这倒也不是坏事,程序员一般而言看他人代码都不会太爽,这也可能是导致程序员的世界有各式各样的轮子的原因吧。 ByteBuf与JavaNIO... 查看详情

即时通讯开发apachemina框架之iofilter详解

见名知义,IoFilter应该是一个过滤器,没错,它确实是一个过滤器。它和Servlet中的过滤器类似,主要用于拦截和过滤I/O操作中的各种信息。 在Mina的官方文档中已经提到了IoFilter的作用:  (1)记录事... 查看详情

即时通讯tcpudp

TCP协议与UDP协议的区别   首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很... 查看详情

网络中有三种通讯模式:单播广播组播(多播)

当前的网络中有三种通讯模式:单播(Unicast)、组播(多播)(Multicast)、广播(Broadcast),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。一、单播:主机之间“一对一”的通讯模式,网络中的交换机... 查看详情

单播广播组播多播

组播=多播单播、组播、广播是网络中结点的3种通讯方式。 1、单播 1)定义:主机之间一对一的通讯模式。网络中的交换机和路由器对数据只转发,不复制。网络中的路由器和交换机根据目标地址选择传输路径。如果10... 查看详情