概述:

***(简单说一下,不重点讲述啦)
GPRS 隧道协议 (GTP) 是一种隧道协议,用于 GPRS、UMTS、LTE 和 5G 网络。它分为两个独立的协议:GTP-C 和 GTP-U。GTP-C用于GPRS核心网络中,用于不同网络节点之间的信令。GTP-U 用于承载用户数据。

GTP 消息头

  • GTP-C和GTP-U协议使用的GTP头是变长度的。GTP头的最小长度是8个字节。有三个标志用来指示三个可选字段是否使用:PN标志,S标志和E标志。PN标志用于指示是否使用N-PDU可选字段;S标志用于指示是否使用GTP序号;E标志用于指示是否使用扩展头可选字段,使用这个标志可以使将来对本规范进行扩展时不需使用另外的版本号。假如设置了三个标志中的任一个,GTP头的长度至少是12个字节,且接收者应处理相应的字段。发送者应把所有未使用的位置零,接收者不处理未用字段。
    GTP-C和GTP-U对GTP头某些字段的使用是不同的。
    必选字段:

- 版本号(Version):3bit,这个字段用于确定GTP协议的版本。
- 协议类型(PT):这个位用于区分GTP(PT置为’1’)和GTP’(PT置为’0’)协议。
扩展头标志(E):这个标志置’1’表示有下一个扩展头字段。置’0’表示没有下一个扩展头字段,或有但不必解释。
序号标志(S):这个标志置’1’表示有序号字段。置’0’表示要么没有序号字段,要么有但不必做出解释。在GTP-C消息中S标志应置’1’。
N-PDU编号标志(PN):这个标志置’1’表示有N-PDU编号字段。置’0’表示要么没有N-PDU编号字段,要么有但不必做出解释。这个标志仅对GTP-U有意义。正因为如此,GTP-C不使用这个标志,GTP-C的接收实体应忽略此标志。
消息类型:这个字段指出GTP消息的类型。有效的GTP-C和GTP-U消息类型值后续再讲。
长度:这个字段指出以字节为单位的净荷长度,即分组中除了GTP头的必选部分外剩余部分的长度(即除去前面的8个字节)。序号、N-PDU编号或任何扩展头应作为净荷部分考虑,即包含在长度计数中。
隧道端点标识符(TEID):这个字段清楚地标识了对端的GTP-U或GTP-C协议实体中的隧道端点。由GTP隧道的对端本地分配TEID值,供GTP隧道的发起方使用。通过GTP-C(在Iu接口上使用RANAP消息)消息在隧道的两个端点间交换TEID值。
Sequence number::2字节,对T-PDU进行编码,可用于用户面排序,重传等目的

可选字段
序号:这个字段在GTP-U中是可选的。对GTP-C控制面消息,序号用于事务标识。通过GTP-U隧道传输时,如果必须保护传输顺序,用次字段对T-PDU进行编号,且每传输一个T-PDU就增加序号值。
N-PDU标号:这个字段在SGSN间的路由区更新过程中和某些系统间切换过程(如2G和3G无线接入网间切换)中使用。当MS和SGSN间的通讯工作在确认模式下时,使用这个字段协调它们间的数据传输。这个字段的确切意义取决于使用场合。如GSM/GPRS到GSM/GRPS,这个字段就是SNDCP N-PDU编号。
下一个扩展头类型:这个字段定义在G-PDU中紧接着这个字段的扩展头的类型。

Octets       8   7   6   5   4   3   2   1
1       版本号 协议类型    (*) E   S   PN
2       消息类型
3       长度(1st Octet)
4       长度 (2nd Octet)
5       隧道端点标识符TEID(1st Octet)
6       隧道端点标识符TEID(2nd Octet)
7       隧道端点标识符TEID(3rd Octet)
8       隧道端点标识符TEID(4th Octet)
9       序号(1st Octet)1) 4)
10      序号(2nd Octet)1) 4)
11      N-PDU编号2) 4)
12      下一个扩展头类型3) 4)

(*) 这个位是空位应置零,接收者不解释。

  1. 仅当S标志置’1’才解释这个字段。
  2. 仅当PN标志置’1’才解释这个字段。
  3. 仅当E标志置’1’才解释这个字段。
  4. S, PN, E标志中任何一个或多个被置’1’时就应出现这个字段。

GTP扩展头的格式在图3中描述。应以四字节为单位定义扩展头长度。下一个扩展头类型字段定义紧接着这个扩展头的下一个扩展头的类型。如果紧接着的不是扩展头,这个字段应置为’0’。

Octets 1    扩展头长度
2 - m       扩展头内容
m+1        下一个扩展头类型(*)

图3. 扩展头格式略图
() 假如紧接着没有扩展头应把这个字段置为’0’。
扩展头的长度应以4字节长度单位定义, 如m+1 = n
4个字节,n是正整数。
下一个扩展头类型字段的第7、8位定义接收方应怎样处理不认识的扩展头类型。除了标记为”不要求解释”外,接收方应解释’下一个扩展头’字段(用扩展头长度字段标识扩展头在G-PDU中的位置)。
接收方在接收到标记为’要求解释’的不认识的扩展头时,应按如下规则处理:

  • 假如带不认识的扩展头消息是请求消息,就发送一个响应消息,原因值置为”不认识的必选扩展头”。
  • 给GTP PDU的发起者发送’支持的扩展头通告’消息。
  • 在错误日志中登记。

GTP-C 的简单头部

关于GTPv1协议解析相关推荐

  1. synopsys PCIE IP协议解析

    synopsys PCIE IP协议解析 1.Overview Core支持单个Pcie内核的Loopback功能,该功能主要为了做芯片验证,以及在没有远程接收器件的情况下完成自己的回环.同时,Cor ...

  2. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  3. wireshark协议解析器 源码分析 封装调用

    源码分析 Wireshark启动时,所有解析器进行初始化和注册.要注册的信息包括协议名称.各个字段的信息.过滤用的关键字.要关联的下层协议与端口(handoff)等.在解析过程,每个解析器负责解析自己 ...

  4. wireshark协议解析器原理与插件编写

    工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...

  5. SGS 0.9.7 协议解析

    SGS as客户端发送数据规则: sgs 是0.9.7版 协议规则:  包头3个字节: 包大小(2个字节),命令(1个字节)  数据包  注意:包大小=命令+ 数据包 的大小 登陆命令:   命令是: ...

  6. 简易HTTP协议解析

    首先介绍一些必要的知识点. TCP协议为操作系统底层协议,能够保证应用层获取到完整的.顺序一直的包序列.但TCP不提供具体的分包,需要上层协议自己解决.TCP发送给上层协议的数据是一个没有意义的字符串 ...

  7. 视音频数据处理入门:UDP-RTP协议解析

    ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...

  8. 公网传输技术之SRT协议解析(上)

     点击上方"LiveVideoStack"关注我们 作者:张博力 编辑:Alex ▼扫描下图二维码或点击阅读原文▼ 了解音视频技术大会更多信息 " 摘  要:SRT协议( ...

  9. 修改wireshark协议解析规则

    不同的协议有不同的解码器,wireshark尝试为每个包尝试找到正确的解码器,特定的情况有可能会选择错误的解码器. 1.使用了其它协议的标准端口,被错误解码,使用udp的80端口发送数据被当作QUIC ...

  10. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

最新文章

  1. 电脑USB的超奇怪问题
  2. 《数据结构与算法》实验报告——二叉树的遍历
  3. 第一个Canvas实例-钟表
  4. EntityFramework Core 健康检查
  5. java显示长度和第一个字符_从Java字符串中以长度1的字符串返回的第一个字母的最佳方法是什么?...
  6. 删数问题(信息学奥赛一本通-T1321)
  7. CocosCreator休闲游戏发布到字节跳动平台
  8. 思维导图的种类及应用,思维导图教程
  9. python-将图片存储到pdf中
  10. 计算机系统盘制作,一步步教你怎样制作U盘电脑系统,以后电脑装系统不求人...
  11. 电驴怎么显示服务器列表,(转)如何更新电驴服务器列表(eMule Server List)
  12. 星巴克与阿里巴巴合作咖啡外卖
  13. 微信代码错误:40164,加入白名单仍不起作用。
  14. ospf多区域原理和配置
  15. day 19 C# 窗体金额换算
  16. JS toFixed(2) 返回 -0.00
  17. 聊天机器人发展及应用技术解析
  18. Diango:Django基础
  19. [Java大厂必备面试题] 点滴促就辉煌, 每日三题【Day5】:基础篇2
  20. 我们常说祝你一切顺利,实际上,顺利的状态是危险的,因为顺利意味着怠惰和懒于思考,是会让人失去奋斗的意志,丧失竞争力。

热门文章

  1. 银联支付证书下载及导出流程(带图)
  2. Vue开发者工具 安装
  3. 逆radon变换matlab,Radon变换及其Matlab代码实现
  4. 泛型编程 - 学习/实践
  5. 算法图解:像小说一样有趣的算法入门书
  6. linux addr2line使用手册,addr2line 命令使用方法
  7. 三维扫描3D打印在创客教育中的实际应用
  8. 区块链安全入门与实战
  9. 微信小程序点击事件传递参数
  10. ora01033是什么错误linux,ora-01033错误的解决办法