GRE隧道协议

2023-11-04

一、GRE协议简介

GRE(General Routing Encapsulation ,通用路由封装)是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。此外 GRE协议也可以作为VPN的第三层隧道协议连接两个不同的网络,为数据的传输提供一个透明的通道。GRE 是在网络上建立直接点对点连接的一种方法,目的是简化单独网络之间的连接

要了解其工作原理,请想像一下汽车和渡轮之间的区别。汽车在陆地上行驶,而渡轮在水上行驶。汽车通常不能在水上行驶,但是可以将汽车装载到渡轮上。

在这个类比当中,地形类型好比是支持某些路由协议的网络,而车辆则好比是数据包。GRE 是一种将一种类型的数据包装载到另一种类型的数据包中的方式,以便第一个数据包可以穿越它通常无法穿越的网络,就像一种类型的运输工具(汽车)被装载到到另一种类型的运输工具(渡轮)上,以便穿越原本无法行驶的地形。如私网IP无法穿越公共网络,需要被装载到公网IP上,以便穿越公共网络。

例如,假设一家公司需要在位于两个不同办公室的局域网(LAN)之间建立连接。两个 LAN 都使用最新版本的 互联网协议 IPv6。但是,为了从一个办公网络到达另一个办公网络,流量必须通过一个由第三方管理的网络 — 该网络有些过时,仅支持较旧的 IPv4 协议。

借助 GRE,该公司可以将 IPv6 数据包封装在 IPv4 数据包中,然后便可通过此网络传输流量。回到那个类比,IPv6 数据包是汽车,IPv4 数据包是渡轮,而第三方网络则是水。

GRE主要有以下特点:

  • 机制简单,无需维持状态,对隧道两端设备的CPU负担小;

  • 本身不提供数据的加密,如果需要加密,可以与IPSec结合使用;

  • 不提供流量控制和QoS

二、 GRE报文格式

img

其中:

Payload (净荷): 系统接收到的需要封装和路由的原始数据报; Passenger Protocol(乘客协议):报文封装之前所属的协议称为乘客协议 Encapsulation Protocol(封装协议): 用来封装乘客协议的协议称为封装协议,这里的GRE便是一个封装协议,也成为运载协议(Carrier Protocol); Transport Protocol(传输协议):负责对封装后的报文进行转发的协议称为传输协议;不同于传输层协议。 GRE头部各字段含义:

 

 

三、GRE报文封装与解封装

以下图为例:

 

 

1、报文封装

Router A连接Group 1的接口收到X协议报文后,首先交由X协议处理; X协议检查报文头中的目的地址域来确定如何路由此包; 若报文的目的地址要经过Tunnel才能到达,则设备将此报文发给相应的Tunnel接口; Tunnel接口收到此报文后进行GRE封装,在封装IP报文头后,设备根据此IP包的目的地址及路由表对报文进行转发,从相应的网络接口发送出去。

2、报文解封装

Router B从Tunnel接口收到IP报文,检查目的地址; 如果发现目的地是本路由器,则Router B剥掉此报文的IP报头,交给GRE协议处理(进行检验密钥、检查校验和及报文的序列号等); GRE协议完成相应的处理后,剥掉GRE报头,再交由X协议对此数据报进行后续的转发处理。 随着报文的封装、解封装,会导致有效数据传输效率降低, 从而导致设备对GRE数据转发速率降低。

img

可以看出,从 host A 发出的包其实就是一个很普通的 IP 包,除了目的地址不直接可达外。该 GRE tunnel 的一端是建立在 router A上,另一段是建立在 router B上,所以添加外部的 IP 头是在 router A 上完成的,而去掉外面的 IP 头是在 router B上完成的,两个端点的 host 上几乎什么都不用做(除了配置路由,把发送到 10.0.2.0 的包路由到 router A)!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GRE隧道协议 的相关文章

  • 浅谈TCP/IP协议

    一 TCP IP协议 TCP 传输控制协议 IP 因特网互联协议 TCP IP 合称网络通讯协议 是Internet最基本的协议 Internet国际互联网络的基础 由网络层的IP协议和传输层的TCP协议组成 TCP IP 定义了电子设备如
  • TCP flag注释

    三次握手Three way Handshake 一个虚拟连接的建立是通过三次握手来实现的 1 B gt SYN gt A 假如服务器A和客户机B通讯 当A要和B通信时 B首先向A发一个SYN Synchronize 标记的包 告诉A请求建立
  • 以太坊json rpc

    Contents Hash List JSON RPC support HEX value encoding The default block parameter Curl Examples Explained JSON RPC meth
  • 以太坊的状态树 Merkle Patricia Tree

    Merkle Patricia Tree Merkle树 https www cnblogs com fengzhiwu p 5524324 html Merkle Tree 通常也被称作Hash Tree 顾名思义 就是存储hash值的一
  • 关于智能合约开发的真相

    就像 区块链 AI 和 云 这样的词语一样 智能合约 也是那些得到大量炒作的短语之一 毕竟 没有什么比不通过司法系统而让人们能够相信发生了什么更有意思的了 智能合约的承诺包括 自动 无须信任和公正地执行合约 在合约构建 合约执行和合约执行环
  • 区块链学习笔记13——ETH以太坊概述

    区块链学习笔记13 ETH以太坊概述 学习视频 北京大学肖臻老师 区块链技术与应用 笔记参考 北京大学肖臻老师 区块链技术与应用 公开课系列笔记 目录导航页 比特币和以太坊是两种最主要的加密货币 比特币被称为区块链1 0 以太坊被称为区块链
  • UniswapV2核心合约学习(3)——UniswapV2Pair.sol

    记得朋友圈看到过一句话 如果Defi是以太坊的皇冠 那么Uniswap就是这顶皇冠中的明珠 Uniswap目前已经是V2版本 相对V1 它的功能更加全面优化 然而其合约源码却并不复杂 本文为个人学习UniswapV2核心合约源码的系列文章的
  • 以太坊网络架构解析

    以太坊网络架构解析 版权 0x7F 知道创宇404区块链安全研究团队 https www cnblogs com southx p 9334639 html 0x00 前言 区块链的火热程度一直以直线上升 其中以区块链 2 0 以太坊为代表
  • 以太坊ERC-20协议详解

    区块链学习 https github com xianfeng92 Love Ethereum ERC20是以太坊定义的一个 代币标准 https github com ethereum EIPs blob master EIPS eip
  • 使用Go语言和以太坊智能合约交互

    尽管最近遇到了些麻烦 但以太坊仍然是区块链领域内智能合约的最大参与者 这似乎不会很快改变 在我看来 技术本身具有很大的潜力 是从学术的角度看很有意思 但正如上面提到的问题和之前的许多问题是区块链技术方面的 智能合约 特别是具有Solidit
  • 如何在私有链实现分叉

    待更新 比特币源码 https blog csdn net g2com
  • js连接web3,连接小狐狸metamask钱包,实现链不对后切换网络和创建网络

    直接上代码 我这里吧所有配置都改成正式的链56 一旦用户的小狐狸钱包现在的链不一致 就询问切换网络 没有就创建网络 网络切换成功后 收到监听 重新连接一下web3 就是重新调用一些connectWeb3这个方法 再连接合约 connectW
  • 同源策略与跨域

    前言 最近业务上前端同学多次联系说访问腾讯云cos资源的时候因为跨域的问题访问不到 大致看了下腾讯云关于设置跨域访问的教程 按照前端同学给的域名等选项就给配了 而且测试下来也是好的 但是呢一直不知道什么是跨域这里就做一个简单的学习记录 一
  • 以太坊智能合约各方法对应的签名编码

    erc20智能合约常见方法对应的签名编码 常见例如交易 transfer address uint256 编码为 web3 sha3 transfer address uint256 substring 0 10 gt 0xa9059cbb
  • 区块链技术实战学习路线图

    请大家前往深入浅出区块链主站 获取最新内容 本章的文章越来越多 本文是一个索引帖 方便找到自己感兴趣的文章 你也可以使用左侧的分类 标签及搜索功能 有新文章时会更新本文 建议大家加入收藏夹中 如果你觉得本站不错 欢迎你转发给朋友 引言 给迷
  • MQTT协议详解一

    首先给出MQTT协议的查看地址 http public dhe ibm com software dw webservices ws mqtt mqtt v3r1 html 当然也有PDF版的 百度一下 不过个人感觉还是官网上的字体和排版最
  • EOS智能合约安全开发终极指南

    EOS智能合约安全终极指南 当世界上最大的ICO EOS于2018年6月推出时 加密社区变得持怀疑态度 并且由于软件错误而被冻结了2天 但快进4个月 EOS今天占了以太网今天所做交易的两倍以上 通过免费和更快速交易的承诺 EOS最顶级的Da
  • 以太坊区块链学习之在私链上部署合约

    上一篇博客介绍了如何搭建私链并在私链上创建账户 挖矿 查看余额 本篇将介绍在私链上部署合约并与之交互 本篇开发环境为MacOS 10 12 建议读者使用macOS系统或者Ubuntu系统 第一步 进入geth客户端 启动私链 进入geth客
  • DNS使用TCP与UDP

    DNS同时占用UDP和TCP端口53是公认的 这种单个应用协议同时使用两种传输协议的情况在TCP IP栈也算是个另类 但很少有人知道DNS分别在什么情况下使用这两种协议 先简单介绍下TCP与UDP TCP是一种面向连接的协议 提供可靠的数据
  • 引介

    转载自 https ethfans org posts rlp encode and decode RLP编码和解码 RLP Recursive Length Prefix 递归的长度前缀 是一种编码规则 可用于编码任意嵌套的二进制数组数据

随机推荐

  • 【华为OD机试真题2023B卷 JAVA&JS】阿里巴巴找黄金宝箱(II)

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 阿里巴巴找黄金宝箱 II 知识点数组哈希表优先级队列 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地
  • 【2019最新原创,持续更新】树莓派3B/B+ windows10 ARM(完整win10桌面系统 非iot)安装教程-Raspberry Pi

    原标题 树莓派3B windows10ARM SD卡完美2分钟启动镜像 现全新改为教程帖 目前发帖时间在19年2月以前的教程基本已经失效或安装成功后非常不稳定 本教程无需手动输入一条命令 无需dg 完全图形化部署且系统可稳定运行 之前因为个
  • linux更改网关没有生效,linux服务器网关配了不立即生效

    弹性云服务器 ECS 弹性云服务器 Elastic Cloud Server 是一种可随时自助获取 可弹性伸缩的云服务器 帮助用户打造可靠 安全 灵活 高效的应用环境 确保服务持久稳定运行 提升运维效率 三年低至5折 多种配置可选了解详情
  • React生命周期中有哪些坑?如何避免?

    在讨论React 的生命周期的时候 一定是在讨论类组件 因为函数组件并没有生命周期的概念 它本身就是一个函数 只会从头执行到尾巴 其实生命周期只是一个抽象的概念 大部分人看到生命周期想到的往往都componentDidMount compo
  • Linux——进程间通信的常见方法(管道、信号、共享映射区、本地套接字)、管道的了解与简单用法

    进程间通信IPC的原理 常见的进程间通信方式有 管道 使用最简单 信号 开销最小 共享映射区 无血缘关系 本地套接字 最稳定 二 管道的特质与基本用法 内核借助环形队列机制 使用内核缓冲区实现 血缘关系间进程可用 创建并打开管道 int p
  • 数组指针和指针数组的区别

    数组指针 也称行指针 定义 int p n 优先级高 首先说明p是一个指针 指向一个整型的一维数组 这个一维数组的长度是n 也可以说是p的步长 也就是说执行p 1时 p要跨过n个整型数据的长度 如要将二维数组赋给一指针 应这样赋值 int
  • 通用视觉框架OpenMMLab实践,MMEditing工具包,windows10配置

    活动地址 CSDN21天学习挑战赛 1 MMEditing 面向图像编辑的工具包 支持图像修复 图像转译 图像修补 图像超分任务 2 检查自己pytorch的版本 pytorch和cuda安装配置可以参考这里 在python中输入 impo
  • 怎样成为一个好的程序员

    1 你需要精通面向对象分析与设计 OOA OOD 涉及模式 GOF J2EEDP 以及综合模式 你应该了解UML 尤其是class object interaction以及statediagrams 2 你需要学习Java语言的基础知识以及
  • Python爬虫从入门到精通:(16)线程池_Python涛哥

    线程池 我们暂时用自己的服务器进行爬取 Flask的基本使用 Flask的基本使用 环境安装 pip install flask 创建一个py源文件 详细代码看 FlaskServer py usr bin env python3 codi
  • git关联两个远程仓库,一个仓库(github)拉取代码,另一个仓库(gitlab)推送代码

    有这种情况 小伙伴们在github上下载的开源项目 该开源项目还在继续开发维护 然后自己下载下来进行二次开发 然后又要把项目推送自己的gitlab私服上 这个时候不得不本地代码关联两个远程仓库 接下来我将一步步讲解如何关联两个远程仓库 并拉
  • opencv-python结构化元素cv2.getStructuringElement()

    在使用opencv的过程中 我们经常需要各种各样的卷积核 如果是正方形的核还好说 但是有时候需要定义椭圆形或者十字形的核 我们就需要用到cv2 getStructuringElement 函数了 第一个参数表示核的形状 可以选择三种 矩形
  • 透视矩阵的推导 opengl

    由参数l r b t n f定义的透视投影矩阵的推导困惑了我差不多一个多礼拜 这几天几乎是天天都在思考这个问题 昨天晚上3点多钟我突然醒了 然后我又开始想这个问题 结果终于让我给想通了 于是我赶紧起床把这个思路记在了草稿纸上 还专门照了张照
  • 计算机485通讯原理,用RS-485设计的多机通信接口电路

    利用RS 485总线建立的多机通信网 具有可靠性高 硬件设计简单 控制方便 成本低廉等优点 它与计算机之间的通信可以采用多级分级通信模式 可方便地建立起设备网络 一 多机通信网原理图 利用RS 485总线建立的多机通信网原理图如下图所示 P
  • python-docx常用方法总结

    由于最近有任务需要自动生成word报告 因此学习了一些python docx的使用方法 在此总结 目前网上相关的资料不算太多 且大多数都很简单 有一些稍微复杂的需求往往找不到答案 很多想要的方法这个库似乎并没有直接提供 在git上看 这个包
  • java中equals方法重写详解(彻底搞定)

    首先上案例 public static void main String args String str1 abc String str2 abc String str3 new String abc new出来的新地址 System ou
  • 计算机网络中的应用层和传输层(http/tcp)

    目录 1 协议的通俗理解 1 1 理解协议 2 应用层 2 1 http协议 2 2 HTTP的方法 2 3 HTTP的状态码 2 4 HTTP常见Header 3 传输层 3 1 端口号 3 1 1 端口号范围划分 3 1 2 netst
  • ESP32 Arduino安装和烧录程序

    学习ESP32前先必需了解一下Arduino Arduino是指开源硬件 在以前开源一般指的是软件 源码公开 后来随着发展出现了开源硬件 开源硬件有了以后大家就可以在开源硬件上做出一些兼容 官方学习参考网址 https www arduin
  • 使用docker 数据卷怎么查看数据卷对应的容器内部目录

    docker inspect redis7703 grep Mounts A 20 说明 redis7703 是容器名称
  • Mysql计算相邻两两记录某个字段的最大差值

    计算相邻两两记录某个字段的最大差值 需求一个患者有多条病程记录 查询该患者的 最大检查间隔 即求两两记录的最大检查间隔 天数 注1 其中检查时间是 case Record表中的create time字段 其中user id是患者编号 注2
  • GRE隧道协议

    一 GRE协议简介 GRE General Routing Encapsulation 通用路由封装 是对某些网络层协议 如IP和IPX 的数据报文进行封装 使这些被封装的报文能够在另一网络层协议 如IP 中传输 此外 GRE协议也可以作为