EIGRP在与邻居路由器进行通信时,使用以下7种不同类型的数据包:
Hello包
确认包
更新包
查询包
响应包
SIA查询包
SIA响应包
更新包,查询包,响应包,SIA查询包和SIA响应包也称为可靠数据包,因为EIGRP会确保它们传输成功且顺序正确。
1.有用的EIGRP数据包
可以使用show ip eigrp traffic来查看路由器上发送和接收到的所有EIGRP数据包的统计信息。
.png)
接下来详细介绍每一种EIGRP数据包
2.Hello
—旦管理员在路由器的某个接口上启用了EIGRP.它就会周期性地发送Hello包。这些 Hello消息能够用来识別邻居.确认邻居的配置是否合适(属于相同IP 子网、使用相同AS 号、K值和认证.如果配置了的话).还是用作邻居之间的存活确认机制。EIGRP Hello包 的目的组播组地址是:在IPv4中为224.0.0.10.在IPv6中为FF02:: A。如果邻居是工程师静态配置的.那么EIGRP会将Hello包以单播的形式发送到那个明确配置的邻居地址。默认的Hello间隔是5杪;在NBMA接口上.当带宽设置为1544 kbit/s及以下时.默认的Hello间 隔是60杪。EIGRP Hello包的操作码是5.不需要确认。
3.确认包
EIGRP确认(ACK)包用来确认接收到的EIGRP数据包,从而实现EIGRP数据包的可靠传输。对于更新包、査询包、响应包、SIA査询包和SIA响应包来说,需要用ACK作为确认,确认包总是以单播形式发送。根据数据包的格式规定,EIGRP ACK本质上就是没有内容 (没有TLV)的Hello包,只携带图8-3中展示的通用EIGRP数据包头部,确认号字段为非零的值,具体设置为需要确认的可靠数据包的序列号。ACK包的操作码与Hello包一样,都是5。
再次注意之前展示的EIGRP数据包头部,每个头部中都包含确认号字段。在EIGRP中,任何以单播形式传输的可靠数据包中都可以携带一个确认号。如果路由器既需要向一 个邻居发送一个单播可靠数据包,同时又需要确认之前从这个邻居那里收到的可靠数据包,它就可以在要发送的这个可靠数据包的确认号字段中,写入接收到的可靠数据包的序列号,而无须单独发送一个ACK包。对于携带有非零确认号的单播可靠数据包,接收方会根据它的实际类型进行处理,也会将它当作ACK包进行处理。
EIGRP对于确认号字段的使用,与TCP非常类似:在TCP会话建立后,每个TCP分段中可以同时在负戟中包含数据,在头部的确认号字段中包含确认信息。如果TCP分段的发送方需要向对方发送数据,它会在这个TCP分段中包含上次接收到的字节的确认信息(加1)。 如果它不需要向对方发送任何数据,它就会发送不携带内容的TCP分段头部,其中记录了 正确的确认信息。EIGRP的做法基本上是一样的:如果路由器需要向同一个邻居发送ACK包和可靠数据包,它可以将确认号写入可靠数据包的确认号字段中,无需发送单独的ACK包。 如果路由器不需要向邻居发送任何可靠数据包,而只需要发送确认包,EIGRP会选择能够携带空内容的数据报类型来承戟这个确认号,显然它会使用Hello包;因此单独的ACK包实际上就是没有任何TLV的Hello包,其中只设置了确认号字段。需要注意的是,ACK包实际 上只包含EIGRP数据包头部,这一点与TCP使用分段头部和空负戟来传输确认信息是一样的。
—定要记住这一点,除了可靠数据包外,EIGRP只能使用那些以单播形式发送的数据包来承载确认号。在组播可靠数据包中携带确认号是没有任何意义的,因为这种数据包是发送给多台路由器的,而确认信息本身只与一个邻居发送的一个数据包相关。
4.更新包
EIGRP的更新包中包含路由信息的更新.用来传输目的地的可达性信息。更新包可以是单播数据包.也以是组播数据包。使用组播还是单播来发送更新包的规则总结如下。
•在建立新邻接关系的过程中.新发现的邻居之间是以单播形式发送更新包的。在特殊环境中.如果在短时间内.EIGRP在一个多访问接口上检测到了多个新邻居.它可能会选择使用组播.以便高效地发送更新包(比如.DMVPN[动态多点VPN]网络中的中心路由器启动后.检测到了几十或上百个分支路由器)。在邻接关系建立阶段.选择以 何种形式(单播或组播)发送更新包的方法并没有公开。最终的选择只与初始化同步阶段的工作效率有关.并不会影响邻居间交换的实际信息。
•路由器完全同步后.之后的更新包都是以组播形式发送的。
•如果某个邻居没有对收到的更新包进行确认.EIGRP以单播形式.向未响应的邻居重传更新包。
•在点到点接口上.对于工程师静态配置的邻居.EIGRP总是以单播形式向其发送更新包。
更新包的传输是可靠的.因为它们总是需要确认.如果在特定时间段内没有收到确认信息.EIGRP就会重传未确认的更新包。更新包的操作码是1。
5.查询包
EIGRP使用查询包让邻居参与到寻找去往某目的地的工作中。与更新包类似,查询包的传输也是可靠的。查询包可以是单播数据包,也可以是组播数据包;默认情况下,在只连接动态邻居的多访问接口上.ElGRP以组播形式发送查询包。如果在特定时间段内没有收到某个邻居的确认信息,ElGRP就会以单播形式向这个未响应的邻居重传这个查询包。 在连接静态配置邻居的点到点接口上.ElGRP总是以单播形式发送查询包。需要注意的是, 虽然邻居必须发送ACK包,来对自己接收到的查询包进行确认,但这个ACK包中并不包含对这个查询消息的响应,而是只确认自己收到了这个查询包。下面介绍的响应包是用作这 目的的。EIGRP查询包的操作码是30
6.响应包
EIGRP使用响应包来对查询包做出响应,其中包含发送方去往该目的地的当前距离,这个距离是依照触发了查询包的拓扑变化重新计算过的。响应包总是以单播形式发送给查询包发送者的,同时它的传输也是可靠的。EIGRP响应包的操作码是4。
7.SIA查询包和SIA响应包
这两个数据包类型是在弥散计算过程中使用的,用来确认那些还未对查询包发出响应包的邻居是否确实可达,是否还在忙于相应的弥散计算。SIA查询包用来询问某个邻居. 它是否还在处理最初的查询包。如果邻居仍然可达,并且仍在对SIA查询中指定的目的地 进行弥散计算,那这个邻居会马上以SIA响应包作为回应。这样一来,定义了弥散计算可以持续多长时间的计时器会被重置.为计算提供更多的时间。SIA查询包和SIA响应包都是以单播形式发送的,它们的传输都是可靠的。SIA查询包的操作码是10. SIA响应包的操作码是11。
- EIGRP-5-EIGRP数据包格式
EIGRP数据包直接承戟在IP数据包中.协议号为88.EIGRP数据包的最大长度取决于具体接口上的最大IP MTU设置——通常完整IP数据包为1500字节.其中1480字节可以用于 EIGRP数据包. ...
- 用Java代码实现拦截区域网数据包
起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路: 正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...
- C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全
简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...
- sk_buff封装和解封装网络数据包的过程详解
转自:http://www.2cto.com/os/201502/376226.html 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...
- 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)
UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...
- android应用安全——(数据抓包)跟踪监控android数据包
转载博客:http://blog.csdn.net/xyz_lmn/article/details/8808169 web开发中Chrome.IE.firefox等浏览器都自带提供了插件帮助开发者跟踪 ...
- Linux iptables原理--数据包流向
Iptable与Netfilter 在上一篇文章 linux iptables常用命令--配置一个生产环境的iptables 我们知道iptables有好几个表,如raw,mangle,nat,fil ...
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
- Charles 如何抓取https数据包
Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...
随机推荐
- 【leetcode刷题笔记】LRU Cache
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- Java基础 之 System.getProperty()方法
Java基础 之 System.getProperty()方法大全 public static void main(String[] args) { System.out.println(" ...
- PLSQL Developer安装、配置、连接oracle数据库
0.资源准备 1) PLSQL Developer安装包(由于安装包超过10M,无法上传,请自行下载) 2) instantclient_11_2安装包(由于安装包超过10M,无法上传,请自行下载) ...
- 标准模板库(STL)学习指南之priority_queue优先队列
转载自CSDN博客:http://blog.csdn.net/suwei19870312/article/details/5294016 priority_queue 调用 STL里面的 make_h ...
- Guava手记
Cache Guava的Cache封装的功能比较全面,但是很多地方和设想的不太一样,最明显的就是RemovalListener,它并不是invalid之后就会被调用,因为在调用Cache的invali ...
- jexus入门
参考:https://www.linuxdot.net/bbsfile-3084 一.Jexus简介:Jexus web server for linux 是一款基于.NET兼容环境,运行于Linux ...
- @JsonProperty 注解
是Jackson注解.fastjson有可以用. 作用在字段或方法上,用来对属性的序列化/反序列化,可以用来避免遗漏属性,同时提供对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书 ...
- tar 排除某个目录
tar -zcvf tomcat.tar.gz --exclude=tomcat/logs --exclude=tomcat/libs tomcat
- MS SQL 取分组后的几条数据
SELECT uploaddate ,ptnumber ,instcount FROM ( SELECT ROW_NUMBER() OVER( PARTITION BY uploaddate ORDE ...
- c# 创建缩略图
/// <summary> /// 创建缩略图 /// </summary> /// <param name="srcFileName">< ...