PIM协议原理与配置

2023-10-30

PIM协议原理
PIM(Protocol Independent Multicast)协议无关组播,目前常用版本是PIMv2,PIM报文直接封装在IP报文中,协议号为103,PIMv2组播地址为224.0.0.13。
在PIM组播域中,以组播组为单位建立从组播源到组成员的点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树(MDT,Multicast Distribution Tree)。

组播分发树的特点:
无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。
被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发。

PIM有两种模式:
PIM-DM(Protocol Independent Multicast – Dense Mode)。
PIM-SM (Protocol Independent Multicast – Sparse Mode)。
PIM-DM假设网络中的组成员分布非常稠密,每个网段都可能存在组成员。

其设计思想是:
首先将组播数据报文扩散到各个网段。
然后再裁剪掉不存在组成员的网段。
通过周期性的“扩散—剪枝”,构建并维护一棵连接组播源和组成员的单向无环SPT。
PIM-DM的关键工作机制包括邻居发现、扩散与剪枝、状态刷新、嫁接和断言。

PIM-DM

PIM-DM邻居发现
在这里插入图片描述
在PIM-DM网络中,路由器周期性发送Hello消息来发现、建立并维护邻居关系。

pim timer hello interval,在接口视图下配置发送Hello消息的时间间隔。 Hello消息默认周期是30秒。
pim hello-option holdtime interval,在接口视图下配置Hello消息超时时间值。默认情况超时时间值为105秒。

DR的选举:
在PIM-DM中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访问网络选举指定路由器DR。DR充当IGMPv1的查询器。接口DR优先级大的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。当DR出现故障后,邻居路由器之间会重新选举DR。

PIM-DM构建SPT
在这里插入图片描述
扩散过程:PIM-DM假设网络中所有主机都准备接收组播数据,当某组播源开始向组播组G发送数据时,具体过程如下:路由器接收到组播报文时会进行RPF检查。如果RPF检查通过,则创建(S,G)表项,然后将数据向所有下游PIM-DM节点转发,这个过程称为扩散(Flooding)。
如果RPF检查没有通过,则将报文丢弃。

RPF检查: 为了防止组播报文在转发过程中出现重复报文及环路的情况,路由器必须执行RPF检查。
所谓RPF检查,就是指路由器通过查找去往组播源的路由来判断所收到的组播报文是否来自于“正确的”上游接口。某一路由器去往某一组播源的路由所对应的出接口称为该路由器上关于该组播源的RPF接口。一台路由器从某一接口收到一个组播报文后,如果发现该接口不是相应组播源的RPF接口,就意味着RPF检查失败,所收到的组播报文将被丢弃。

剪枝过程:当下游有没有组播成员,扩散组播报文会导致带宽资源的浪费。为避免带宽的浪费PIM-DM使用剪枝机制。
当下游节点没有组播组成员,则路由器向上游节点发Prune消息,通知上游节点不用再转发数据到该分支。上游节点收到Prune消息后,就将相应的接口从其组播转发表项(S,G)对应的输出发送列表中删除。剪枝过程继续直到PIM-DM中仅剩下了必要的分支,这就建立了一个以组播源为根的SPT。
各个被剪枝的节点同时提供超时机制,当剪枝超时时重新开始扩散—剪枝过程。剪枝状态超时计时器的默认值为210秒。
PIM-DM的扩散—剪枝机制周期性进行,每3分钟重复一次,RTC对RTE所在网段处于剪枝状态,RTC对RTE的接口会维护一个“剪枝定时器”,当剪枝定时器超时,RTC就会恢复对RTE的数据转发,这样会导致不必要的网络资源浪费。

状态刷新
在这里插入图片描述
PIM DM协议采用状态刷新特性解决周期性“扩散-剪枝”带来的问题:离组播源最近的第一跳RTA周期性触发State Refresh消息。State Refresh消息在全网扩散,刷新所有设备上的剪枝定时器状态。

Graft机制
如图所示,当Client B发送组播组G1的IGMP Report报文请求组播数据后。RTE收到Client B的IGMP Report报文,说明RTE具有转发组播数据需求,则立即向上游路由器RTC发送Graft消息,请求上游路由器恢复对应出接口的转发。RTC收到Graft消息后,向RTE回复Graft Ack并将连接RTE的出接口恢复为转发状态。
在这里插入图片描述
Assert机制
根据Assert竞选结果,路由器将执行不同的操作:
获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。
Assert竞选结束后,该网段上只存在一个下游接口,只传输一份组播报文。
所有Assert Loser可以周期性地恢复组播报文转发,从而引发周期性的Assert机制。
在这里插入图片描述
相关命令
multicast routing-enable
interface G0/0/0
pim dm
interface G0/0/1
pim dm
interface G0/0/2
pim dm

display pim routing-table
display pim neighbor

PIM-SM

RPT的建立过程
在这里插入图片描述
主机加入某个组播组时,发送IGMP成员通告。
最后一跳路由器向RP发送(,G)Join消息。
,G)Join消息到达RP的过程中,沿途各路由器都会生成相应的(*,G)组播转发条目。
RPT实现了组播数据按需转发的目的,减少了数据泛洪对网络带宽的占用。

运行PIM-SM的网络,都会进行DR(Designated Router)的选举。其中有两种DR分别称为接收者侧DR和组播源侧DR。
组播接收者侧DR:与组播组成员相连的DR,负责向RP发送(*,G)的Join加入消息。
组播源侧DR:与组播源相连的DR,负责向RP发送单播的Register消息。
PIM-SM中DR的选举原则与PIM-DM相同。

SPT的建立过程
如图所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。具体过程如下:
组播源向组播组发送第一个组播报文。
源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP。
RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者。
另一方面,RP向源端DR发送(S,G)Join消息,沿途路由器上都会生成相应(S,G)表项。从而建立了一颗由组播源至RP的SPT树。
SPT树建立后,组播源发出的组播报文沿该SPT转发至RP。
RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息。
在这里插入图片描述
Switchover机制
在这里插入图片描述
PIM-SM通过指定一个利用带宽的SPT阈值可以实现RPT到SPT的切换。
用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。

SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。

如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。
在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。

通过RPT树到SPT树的切换,PIM-SM能够以比PIM-DM更精确的方式建立SPT转发树。

相关命令
multicast routing-enable
interface G0/0/0
pim sm
interface G0/0/1
pim sm
interface G0/0/2
pim sm
pim
static-rp 4.4.4.4

实验

在这里插入图片描述
要求
本实验模拟简单组播的网络环境,完成以下需求:
1.如图所示,配置各设备IP地址。
其中R3配置Loopback0:3.3.3.3/32
2.运行IGP
2.1 R1/2/3/4运行OSPF,进程1。
2.2 RID手动设置如下:
R1:1.1.1.1
R2:2.2.2.2
R3:3.3.3.3
R4:4.4.4.4
2.3 使用network命令宣告,通配符0.0.0.0
2.4 确认所有设备可以访问3.3.3.3。
3.R1/2/3/4运行PIM-SM
3.1 开启组播路由功能。
3.2 所有接口开启PIM-SM。
3.3 静态设置RP为3.3.3.3
3.4 R4上关闭switchover功能。
3.5 PC1加入组播组224.1.1.1,使用IGMPv2。
查看各路由器的组播路由表。描述RPT建立过程。
3.6 使用组播源发送组播报文,组地址:224.1.1.1
3.7 查看各路由器的组播路由表。描述SPT建立过程。
确认组播流量的路径为组播源-R1-R2-R3-R4-PC1。
3.8 R4上恢复默认的switchover功能
再次查看各路由器的组播路由表。
确认当前组播流量的路径为组播源-R1-R2-R4-PC1。

具体过程
1.如图所示,配置各设备IP地址。
其中R3配置Loopback0:3.3.3.3/32
R1:
interface GigabitEthernet0/0/0
ip address 10.0.1.254 255.255.255.0
interface GigabitEthernet0/0/1
ip address 12.1.1.1 255.255.255.0
R2:
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
interface GigabitEthernet0/0/1
ip address 23.1.1.2 255.255.255.0
interface GigabitEthernet0/0/2
ip address 24.1.1.2 255.255.255.0
R3:
interface GigabitEthernet0/0/0
ip address 23.1.1.3 255.255.255.0
interface GigabitEthernet0/0/1
ip address 34.1.1.3 255.255.255.0
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
R4:
interface GigabitEthernet0/0/0
ip address 34.1.1.4 255.255.255.0
interface GigabitEthernet0/0/1
ip address 24.1.1.4 255.255.255.0
interface GigabitEthernet0/0/2
ip address 20.0.1.254 255.255.255.0

2.运行IGP
2.1 R1/2/3/4运行OSPF,进程1。
2.2 RID手动设置如下:
R1:1.1.1.1
R2:2.2.2.2
R3:3.3.3.3
R4:4.4.4.4
2.3 使用network命令宣告,通配符0.0.0.0
2.4 确认所有设备可以访问3.3.3.3。
R1:
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 10.0.1.254 0.0.0.0
network 12.1.1.1 0.0.0.0
R2:
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 12.1.1.2 0.0.0.0
network 23.1.1.2 0.0.0.0
network 24.1.1.2 0.0.0.0
R3:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 23.1.1.3 0.0.0.0
network 34.1.1.3 0.0.0.0
R4:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 20.0.1.254 0.0.0.0
network 24.1.1.4 0.0.0.0
network 34.1.1.4 0.0.0.0

3.R1/2/3/4运行PIM-SM
3.1 开启组播路由功能。
3.2 所有接口开启PIM-SM。
3.3 静态设置RP为3.3.3.3
R1/2/3/4
multicast routing-enable
pim
static-rp 3.3.3.3
R1:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
R2:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
interface GigabitEthernet0/0/2
pim sm
R3:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
R4:
interface GigabitEthernet0/0/0
pim sm
interface GigabitEthernet0/0/1
pim sm
interface GigabitEthernet0/0/2
pim sm

3.4 R4上关闭switchover功能。
R4:
pim
spt-switch-threshold infinity
#关闭自动切换SPT的功能,默认开启。
本实验提前关闭该功能主要是为了方便查看各设备组播路由表,研究RPT和SPT建立过程。

3.5 PC1加入组播组224.1.1.1,使用IGMPv2。
在这里插入图片描述
R4:
interface GigabitEthernet0/0/2
igmp enable
查看各路由器的组播路由表。描述RPT建立过程。
[R4]dis igmp group
在这里插入图片描述
[R4]dis pim routing-table

R4上的RP为3.3.3.3,根据单播路由表,找到RPF接口G0/0/0,作为组播流量上游接口。
另外,收到IGMP加组消息的接口G0/0/2作为下游接口。即:将来会从G0/0/0接口收到组
播,然后从G0/0/2转发出去。这就是(,G)组播路由表。
[R3]dis pim routing-table
R3的G0/0/1接口会收到来自R4的(*,G)Join消息,则把G0/0/1口作为组播流量的下游接口。
由于暂时没有组播源,所有没有上游接口。此时从RP到接收者的RPT建立完成。
另外,R1和R2此时没有任何组播路由表项,请自行查看。
3.6 使用组播源发送组播报文,组地址:224.1.1.1
3.7 查看各路由器的组播路由表。描述SPT建立过程。
确认组播流量的路径为组播源-R1-R2-R3-R4-PC1。
[R3]dis pim routing-table

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PIM协议原理与配置 的相关文章

  • IP数据包格式各字段详解说明

    1 版本 指IP协议的版本 为0100或0110 即IPv4和IPv6两种版本 通信双方使用的IP协议版本必须一致 2 首部长度 占 4 位 可表示的最大十进制数值是15 请注意 这个字段所表示数的单位是32位字 即0001表示1个32位字
  • 【负荷预测】基于神经网络的负荷预测和价格预测(Matlab代码实现)

    目录 1 概述 2 基于神经网络的负荷预测 Matlab实现 2 1 代码 2 2 结果 2 3 回归树模型的进一步改进 3 基于神经网络的价格预测 Matlab代码实现 4 阅读全文 Matlab代码 1 概述 这个例子演示了用MATLA
  • TCP快速重传机制

    一 快速重传机制 上一篇讲到了TCP 的超时重传 但是超时重传往往会带来许多微妙的问题 比如说 当一个报文段丢失时 会等待一定的超时周期然后才重传分组 增加了端到端的时延 当一个报文段丢失时 在其等待超时的过程中 可能会出现这种情况 其后的
  • VMWare虚拟机网络配置

    Bridged 桥接模式 桥接模式相当于虚拟机和主机在同一个真实网段 VMWare充当一个集线器功能 一根网线连到主机相连的路由器上 所以如果电脑换了内网 静态分配的ip要更改 图如下 NAT 网络地址转换模式 NAT模式和桥接模式一样可以
  • Dubbo快速入门

    文章目录 一 初识Dubbo 1 Dubbo是什么 2 Dubbo现状 3 Dubbo的故事 主要历程 二 RPC介绍 三 Dubbo工作原理 四 案例实操 项目编写 1 项目创建 2 服务提供者 producer 的开发 3 服务消费方
  • OSI七层模型和TCP/IP五层模型

    一 OSI七层模型 七层模型从下往上依次为物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 各层功能如图所示 应用层 与其它计算机进行通讯的一个应用 它是对应应用程序的通信服务的 例如 一个没有通信功能的自处理程序就不能执行通信的
  • 全国失信被执行人黑名单信息查询API接口

    接口地址 https api hackeus cn api shixin 请求协议 HTTP HTTPS 请求方式 GET POST 返回格式 JSON 请求示例 https api hackeus cn api shixin api ke
  • 基于ensp的校园无线网络仿真实验

    写在前面 本项目是我们大三的一堂实践课作业内容 之前发过一次但是瞬间反响很好所以怕被抄袭删掉了555 现在成绩也出了尘埃落定发出来和大货分享分享qwq 当然还是仅供学习参考 禁止洗稿噢 摘要 本论文研究了一个基于有线和无线网络的校园网项目的
  • ODBC连接ORACLE数据库的设置

    一 建立服务名1 选择 Net8 Configuration Assistant 选择 本地网络服务名配置 2 选择 添加 3 选择 Oracle 8i数据库或服务 4 输入服务名 此为远程数据库已经定制好的数据库服务名字 比如 ORCL
  • 超详细的计算机网络基础知识总结 第四章:网络层

    本文基于 王道计算机考研 计算机网络 其他文章 超详细的计算机网络基础知识 第一章 概述 超详细的计算机网络基础知识 第二章 物理层 超详细的计算机网络基础知识 第三章 数据链路层 超详细的计算机网络基础知识 第五章 传输层 超详细的计算机
  • TCP/IP网络编程 第五章:实现基于TCP的服务端/客户端(2)

    回声客户端的完美实现 在上一章中 我们提出了实现的回声客户端存在的问题 这里我们来解决一下 先给出对应的服务端和客户端代码 while str len read clnt sock message BUF SIZE 0 write clnt
  • 网络协议之ARP协议解析

    ARP协议简介 ARP Address Resolution Protocol 是个地址解析协议 最直白的说法是 在IP以太网中 当一个上层协议要发包时 有了该节点的IP地址 ARP就能提供该节点的MAC地址 OSI 模式把网络工作分为七层
  • 【JavaWeb】网络原理初识

    网络原理初识 计算机网络的历史 局域网和广域网 网络组件中的重要设备 网络通信基础 基本概念 协议分层 OSI七层模型 TCP IP五层 或四层 模型 封装和分用 发送方 接收方 三层转发和二层转发 计算机网络的历史 计算机最初是为了打仗而
  • 通讯编程001——Nodejs快速开发Modbus TCP Master

    本文介绍如何利用ModbusJs库快速开发Modbus TCP Master 相关源码请登录网信数智 wangxinzhihui com 下载 ModbusJs是一个基于Nodejs的Modbus TCP的开发库 目前支持的功能函数有 re
  • 数据结构与算法--用c语言建立队列以及其相关操作

    一 队列的定义和特点 队列与栈一样 也是一种特殊的线性表 与栈 先进后出 不同的是 队列服从 先进先出 也就是元素从队尾进入队列 从队头离开 如图所示 a1最先进入队列 因此最先从对头离开队列 然后是a2 以此类推 二 队列的相关操作及其代
  • 【Linux/C++:modebus通信示例】(带初习配置概括)

    以modbus RTU为例 模拟modbus简单通信原理的代码实现 首先需要配置串口 这里使用的为Configure Virtual Serial Port Driver虚拟串口调试工具 创建COM1 COM2虚拟端口 或另创建一对串口互作
  • Python+Requests模块session处理和SSL证书处理&关闭警告

    session处理 部分接口需要先登录网址 才能有权限进行调用 这时可以使用到session 具体操作是 先使用网站 的登录api进行登录 得到session后 然后用该session来请求其它的接口 示例代码 session obj re
  • javascript核心技术开发解密,javascript核心原理解析

    大家好 小编来为大家解答以下问题 javascript的核心组成部分有哪些 javascript的核心语言对象包括 今天让我们一起来看看吧 文章目录 前言 一 什么是 ECMAScript 1 1 ECMAScript 的三种具体表现 1
  • 【Git】解决fatal: unable to access..Failure when receiving data from the peer或者OpenSSL SSL_read: Connect

    今天拉取仓库的代码时 报错如下 fatal unable to access https github com Itfuture zifeiYu ZifeiChat git Failure when receiving data from
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网

随机推荐

  • Dart中List的常用方法概述及使用案例

    在Dart中 List是一种有序的集合 它提供了许多有用的方法来操作列表数据 Flutter使用Dart语言开发 所以在Flutter中依然适用 下面是List常用的方法概述及使用案例 length属性 List的length属性返回Lis
  • pandas的时间对象

    pandas时间处理对象 pandas中有个时间库 datautil 可以使用其中的方法把多种字符串时间格式转化为时间对象 import dateutil import pandas as pd a dateutil parser pars
  • git还原到某个版本

    1 tortoisegit还原 v2还原到v1 1 1 强制还原 git reset 如果使用这种方式还原到v1 将丢失还原到v1到v2之间的所有提交及日志 1 1 1 显示日志 有save1 save2两条提交记录 1 1 2 重置版本
  • Git的理解与使用

    文章目录 一 初识Git 1 1 分布式管理系统 1 2 Git的安装与配置 二 Git理论 2 1 四个工作区域 2 2 提交代码的简易流程 2 3 Git所管理文件的四种状态 三 Git命令 3 1 基础命令 git init git
  • hash函数应用(整理)

    评估hash函数优劣的基准主要有以下两个指标 1 散列分布性 即桶的使用率backet usage 已使用桶数 总的桶数 这个比例越高 说明分布性良好 是好的hash设计 2 平均桶长 即avg backet len 所有已使用桶的平均长度
  • iTween基础之Rotate(旋转角度)

    一 基础介绍 二 基础属性 原文地址 http blog csdn net dingkun520wy article details 50696489 一 基础介绍 RotateTo 旋转游戏
  • Java判断字符串是否为数字(正负、小数)

    需求 传来一个String类型的参数 需要判断该参数是否为数字 正负 正数 小数都要能判断 吗 如果是小数则保留2位小数 开始采用Character isDigit 方法来判断一个字符串是否为数字 只能判断全是数字的字符串 不能判断小数 负
  • Anaconda创建虚拟环境+Pycharm使用Anaconda创建的虚拟环境

    首先需要下载anaconda然后在搜索栏中搜索Anaconda Prompt anaconda 点击进入 进入到envs目录然后输入以下命令 conda create n to pack python 3 7 创建一个名为 to pack且
  • vue动态绑定class属性

    vue动态绑定class的方式 第一种 对象的方式 class iscolor boo 第一个参数iscolor为类名 第二个参数boo是一个变量 类型为一个boolean值 div scope row state div data ret
  • 三角形边长求高的c语言函数公式,三角形边长计算公式

    大写数字网今天精心准备的是 三角形边长计算公式 下面是详解 求三角形的边长公式 三角形的边长公式 1 在任何一个三角形中 任意一边的平方等于另外两边的平方和减去这两边的2倍乘以它们夹角的余弦 几何语言 在 ABC中 a b c 2bc co
  • js数组分类,一维数组转二维数组

    原始数组 var arrayFirst code 1 datas a网吧 code 1 datas b网吧 code 2 datas a酒店 code 2 datas b酒店 code 3 datas a学校 code 3 datas b学
  • Flume系统搭建和使用的一些经验总结-搭建篇

    对于很多公司来说 日志的收集和集中管理是一个必然要经历的阶段 我们公司在经历了一拖再拖之后 终于不得不开始搭建日志收集系统了 对于日志收集系统 我们的首选就是Flume 为何这么坚决呢 难道没有其他工具能做个这个事情么 当然有 不过 考虑到
  • 神经网络 01(介绍)

    一 神经网络 人工神经网络 Artificial Neural Network 简写为ANN 也简称为神经网络 NN 是一种模仿生物神经网络结构和功能的 计算模型 人脑可以看做是一个生物神经网络 由众多的神经元连接而成 各个神经元传递复杂的
  • 【夜莺监控方案】01-n9e-v5-server部署

    文章目录 前言 1 在线一键安装 不推荐 2 自主安装 推荐 官方安装脚本 2 1 mysql 2 2 prometheus 2 3 n9e server 2 4 启动和开机自启 2 5 web查看 3 配置LDAP 前言 相关文档如下 0
  • Python自制音乐下载器,实现听歌自由

    前言 今天发的就是最实用的文章 让你用Python实现听歌自由 不用再担心自己的钱包了 文章末尾名片可直接领取代码 代码实现 导入模块 import os import re from urllib import parse import
  • [人工智能-深度学习-75]:环境 - Windows配置Github、Gitee共存的Git环境

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122261638 目录 前言 前置条件
  • 获取response里的数据

    String out null try ServletOutputStream os servletResponse getOutputStream Field ob ReflectionUtils findField os getClas
  • VS2015/QT creator + Qt5.8.0

    PS 两个版本IDE都试过 VS的报错更详细 方便找bug QT creator的界面更可爱 输入时有绿色的Q弹的图标嘻嘻 QT版本 qt opensource windows x86 msvc2015 64 5 8 0 win10 vs2
  • 微信小程序实例系列

    实战 微信小程序 redux 在原生微信小程序的使用实例 微信小程序 weapp redux的使用文档 微信小程序 Promise then success fail 执行顺序的问题 微信小程序 监听页面停止滚动 微信小程序 CustomB
  • PIM协议原理与配置

    PIM协议原理 PIM Protocol Independent Multicast 协议无关组播 目前常用版本是PIMv2 PIM报文直接封装在IP报文中 协议号为103 PIMv2组播地址为224 0 0 13 在PIM组播域中 以组播