GRE(Generic Routing Encapsulation,通用路由封装)简介
来源:互联网 发布:华为软件开发流程 编辑:程序博客网 时间:2024/05/18 04:27
1、简介
GRE(Generic Routing Encapsulation,通用路由封装)协议是对某些网络层协议(如IP 和IPX)的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议(如IP)中传输。
在大多数常规情况下,系统拥有一个有效载荷(或负载)包,需要将它封装并发送至某个目的地。首先将有效载荷封装在一个 GRE 包中,然后将此 GRE 包封装在其它某协议中并进行转发。此外发协议即为发送协议。当 IPv4 被作为 GRE 有效载荷传输时,协议类型字段必须被设置为 0x800 。当一个隧道终点拆封此含有 IPv4 包作为有效载荷的 GRE 包时, IPv4 包头中的目的地址必须用来转发包,并且需要减少有效载荷包的 TTL 。值得注意的是,在转发这样一个包时,如果有效载荷包的目的地址就是包的封装器(也就是隧道另一端),就会出现回路现象。在此情形下,必须丢弃该包。当 GRE 包被封装在 IPv4 中时,需要使用 IPv4 协议 47 。
GRE采用了Tunnel(隧道)技术,是VPN(Virtual Private Network)的第三层隧道协议。Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。
2、报文格式
GRE 封装后的报文格式为:
[Delivery header(Transport protocol)]——[GRE header(Fncapsulation protocol)]——[Payload header(Passenger potrocol)]
需要封装和传输的数据报文,称之为净荷(Payload),净荷的协议类型为乘客协议(Passenger Protocol)。系统收到一个净荷后,首先使用封装协议(Encapsulation Protocol)对这个净荷进行GRE 封装,即把乘客协议报文进行了“包装”,加上了一个GRE 头部成为GRE 报文;然后再把封装好的原始报文和GRE 头部封装在IP 报文中,这样就可完全由IP 层负责此报文的前向转发(Forwarding)。通常把这个负责前向转发的IP 协议称为传输协议(Delivery Protocol 或者Transport Protocol)。
根据传输协议的不同,可以分为GRE over IPv4 和GRE over IPv6 两种隧道模式。
3、封装和解封装过程
一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经过加封装与解封装两个过程:封装过程和解封装过程。
3.1 封装过程
3.2 解封装过程
参考文献:百度百科和百度文库
- GRE(Generic Routing Encapsulation,通用路由封装)简介
- GRE:通用路由封装(GRE: Generic Routing Encapsulation)
- CCNA实验三十六 GRE(通用路由封装)
- 浅析GRE协议(通用路由封装协议)
- GRE通用路由封装协议学习笔记
- GRE——通用路由封装
- GRE:通用路由封装--网络大典
- 封装(Encapsulation)、
- java笔记-封装(Encapsulation)
- 封装(encapsulation)的好处
- 封装 Encapsulation
- 为何要用封装(Encapsulation)
- java的封装特性(Encapsulation)
- C++重要性质01:封装(Encapsulation)
- Java - Encapsulation封装(面向对象1-封装)
- C++ Encapsulation(封装)
- java之封装 Encapsulation
- RabbitMQ (四) 路由选择 (Routing)
- 【代码大全】第17章 不常见的控制结构
- “OVERRIDE”: 未知重写说明符
- Windows Event 的各个相关函数解释 及 简单例子一个
- 【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
- 【代码大全】第18章 表驱动法
- GRE(Generic Routing Encapsulation,通用路由封装)简介
- 位图Bitmap
- 【代码大全】第19章 一般控制问题
- 新的开始 新的征程
- POJ-3680-Intervals
- 最优间隔分类、原始/对偶问题、SVM对偶—斯坦福ML公开课笔记7
- 【代码大全】第20章 软件质量概述
- 【代码大全】第21章 协同构建
- 【代码大全】第22章 开发者测试