博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GRE(Generic Routing Encapsulation,通用路由封装)简介
阅读量:4186 次
发布时间:2019-05-26

本文共 1137 字,大约阅读时间需要 3 分钟。

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 解封装过程

参考文献:百度百科和百度文库

你可能感兴趣的文章
更新pip版本至最新
查看>>
Python str.ljust方法:字符串左对齐排版
查看>>
Linux下安装pyenv
查看>>
virsh查询虚拟机列表
查看>>
右上三角矩阵的压缩(Python实现)
查看>>
Linux man 命令:查询命令使用手册
查看>>
CentOS配置静态ip
查看>>
Jinja2条件控制
查看>>
Linux /usr/src/kernels 缺失内核源码解决方案
查看>>
Git分支管理
查看>>
查看MySQL支持的字符集
查看>>
常见Linux目录
查看>>
在CLI中打印表格----gotable使用介绍
查看>>
Python str rjust方法
查看>>
CentOS7 安装MySQL
查看>>
Linux cd 命令 ----切换目录
查看>>
MySQL校对集
查看>>
左下三角矩阵压缩(Python)
查看>>
Go发送电子邮件
查看>>
Linux ls命令
查看>>