EIGRP在与邻居路由器进行通信时,使用以下7种不同类型的数据包:
 
Hello包
确认包
更新包
查询包
响应包
SIA查询包
SIA响应包
 
更新包,查询包,响应包,SIA查询包和SIA响应包也称为可靠数据包,因为EIGRP会确保它们传输成功且顺序正确。
 
1.有用的EIGRP数据包
 
可以使用show ip eigrp traffic来查看路由器上发送和接收到的所有EIGRP数据包的统计信息。
 
接下来详细介绍每一种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-6-EIGRP数据包的更多相关文章

  1. EIGRP-5-EIGRP数据包格式

    EIGRP数据包直接承戟在IP数据包中.协议号为88.EIGRP数据包的最大长度取决于具体接口上的最大IP MTU设置——通常完整IP数据包为1500字节.其中1480字节可以用于 EIGRP数据包. ...

  2. 用Java代码实现拦截区域网数据包

    起因: 吃饭的时间在想如果区域网内都是通过路由器上网,那如何实现拦截整个区域网的数据包,从而实现某种窥探欲. 思路:      正常是通过电脑网卡预先设置或分配的IP+网关对路由器进行通讯,比如访问百 ...

  3. C# TCP socket发送大数据包时,接收端和发送端数据不一致 服务端接收Receive不完全

    简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的TCP Socket (异步方式) C# 的tcp Socket设置自定义超时时间 C# TCP ...

  4. sk_buff封装和解封装网络数据包的过程详解

    转自:http://www.2cto.com/os/201502/376226.html 可以说sk_buff结构体是Linux网络协议栈的核心中的核心,几乎所有的操作都是围绕sk_buff这个结构体 ...

  5. 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)

    UDP数据包长度 UDP数据包的理论长度 udp数据包的理论长度是多少,合适的udp数据包应该是多少呢?从TCP-IP详解卷一第11章的udp数据包的包头可以看出,udp的最大包长度是2^16-1的个 ...

  6. android应用安全——(数据抓包)跟踪监控android数据包

    转载博客:http://blog.csdn.net/xyz_lmn/article/details/8808169 web开发中Chrome.IE.firefox等浏览器都自带提供了插件帮助开发者跟踪 ...

  7. Linux iptables原理--数据包流向

    Iptable与Netfilter 在上一篇文章 linux iptables常用命令--配置一个生产环境的iptables 我们知道iptables有好几个表,如raw,mangle,nat,fil ...

  8. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  9. Charles 如何抓取https数据包

    Charles可以正常抓取http数据包,但是如果没有经过进一步设置的话,无法正常抓取https的数据包,通常会出现乱码.举个例子,如果没有做更多设置,Charles抓取https://www.bai ...

随机推荐

  1. Agc011_C Squared Graph

    传送门 题目大意 给定$n$个点$m$条边的简单图(无重边无自环),将有序点对$\{a,b\}$作为新的点,新产生的$n^2$个点中对于两个点,$\{a,b\},\{x,y\}$,当且仅当原图中存在边 ...

  2. ACM学习历程—HDU5586 Sum(动态规划)(BestCoder Round #64 (div.2) 1002)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 题目大意就是把一段序列里面的数替换成f(x),然后让总和最大. 首先可以计算出初始的总和,以及每 ...

  3. java枚举学习enum

    java 1.5以后才出现enum的关键字 所有的enum类都继承自Enum类,所以enum类无法再继承其他的类,可以实现接口,枚举类出了不能被继承其余的与普通类的特性一致, 枚举类的构造函数只能自己 ...

  4. 找工作-——网络IO

    网络层 主要任务是把网络协议数据单元或分组从源计算机经过适当的路径发送到目的地计算机.从源计算机到目的计算机可能要经过若干个中间节点,这需要在通信子网中进行路由选择. 网络层与数据链路层有很大的差别, ...

  5. xml schema 中如何定义类似Map的结构

    利用xs:unique关键字.在xs:element里添加unique节点,任意命名,然后用xs:selector来选择需要唯一的域, xs:field 里指定特定的字段. 例如:定义所有Item里的 ...

  6. Spring 3.1新特性之四:p命名空间设置注入(待补充)

    https://www.ibm.com/developerworks/cn/java/j-lo-jparelated/ http://www.ibm.com/developerworks/cn/jav ...

  7. 杂项-Log:log4net

    ylbtech-杂项-Log:log4net log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等) ...

  8. 阻止文件不被上传到iCloud

    转自:http://blog.csdn.net/a921800467b/article/details/38386787 http://www.cocoachina.com/bbs/read.php? ...

  9. Cypress USB3014 C++DLL 导入问题

    VS2017编译cpp工程出现问题 硬件型号:芯片版本 Cypress FX3 USB3014(和芯片无关)) 重现步骤: 1.解压 FX3_SDK_Windows_v1.3.3.exe 2.VS20 ...

  10. ruby on rails 环境搭建步骤

    1.安装ruby ruby的下载页面一个版本有3样要下载的,帮助文件和安装文件.还有一个mingw. 安装时抛出make出错信息就是由于没有安装mingw引起的 到下载页http://rubyforg ...