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. 【leetcode刷题笔记】Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  2. 通过nginx搭建hls流媒体服务器

    通过录像文件模拟直播源,通过rtmp协议推送到nginx服务器 nginx 配置文件 增加 rtmp { server { listen 1935; application hls { live on ...

  3. CH5103 [NOIP2008]传纸条[线性DP]

    给定一个 N*M 的矩阵A,每个格子中有一个整数.现在需要找到两条从左上角 (1,1) 到右下角 (N,M) 的路径,路径上的每一步只能向右或向下走.路径经过的格子中的数会被取走.两条路径不能经过同一 ...

  4. Error Domain=NSURLErrorDomain Code=-1202,Https服务器证书无效

    错误:“此服务器的证书无效.您可能正在连接到一个伪装成“www.xxxxxx.com”的服务器, 这会威胁到您的机密信息的安全 原因:安全证书是自建证书,没有得到认证. 解决方法: 1.导入NSURL ...

  5. Oracle 12c 新特性之 temp undo

    Oracle 12c R1 之前,临时表生成的undo记录是存储在undo表空间里的,通用表和持久表的undo记录也是类似的.而在 12c R12 的临时 undo 功能中,临时 undo 记录可以存 ...

  6. 洛谷P4721 【模板】分治 FFT(生成函数+多项式求逆)

    传送门 我是用多项式求逆做的因为分治FFT看不懂…… upd:分治FFT的看这里 话说这个万恶的生成函数到底是什么东西…… 我们令$F(x)=\sum_{i=0}^\infty f_ix^i,G(x) ...

  7. java基础知识(2)---语法基础

    二:java语法基础: 1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名 ...

  8. shell入门-uniq去重复和tee重定向

    命令:uniq 选项:-c 显示重复数量 说明:去重复,不sort多个功能,显示几个重复 命令:tee 说明:重定向加上双重输出 [root@wangshaojun ~]# cat 2.txt1222 ...

  9. BluetoothFindNextRadio 函数

    BOOL BluetoothFindNextRadio( HBLUETOOTH_RADIO_FIND hFind, HANDLE* phRadio ); BluetoothFindNextRadio找 ...

  10. chef语法和案例

    1. 添加用户 $ vim create_user.rb -----------------------------------> user 'charlie' do //创建一个uid为88的 ...