对于GTPv1协议头部的解析
参考ETSI EN 301 347
GTP是GPRS Tunnelling Protocol 的简称。GTP分为GTPv0(已经淘汰),GTPv1 和GTPv2。下面,介绍的是GTPv1。
GTPv1里面有GTP和GTP',其中GTP上面可以承载信令数据(控制信息)和传输数据,GTP'的主要是用作计费,下面讲的将是GTP。
GTP的头部
GTP的头部占用固定的20字节,承载信令的数据包和承载传输数据的数据包共同使用这一个头部。下图是GTP头部的图解,后面将会一一说明其中各个标志的含义。

1:PT(Protocol Type)。协议类型,表示的是这个消息是不是GTP消息。当PT为1的时候表示的是GTP消息,当PT为0的时候表示的是GTP'消息。
2:Version。如果PT为1(表示的是GTP消息),那么这些bit将会全部是0,用来表示GTP的第一个版本,GTPv1。当PT为0的时候,另做处理。
3:Spare1。这些bit没有被使用,发送的时候全部置1,接收的时候被忽略。
4:SNN。表示SNDCP N-PDU 位是否被包含进来。
5:Message Type。表示GTP的消息类型。
6:Length。表示除了GTP头部以外,数据部分的长度,以字节为单位。
7:Sequence Number。是信令数据的传输标志,是传输数据增加的序列号。
8:SNDCP N-PDU。SNDCP N-PDU用于SGSN间路由区更新过程,为了协调MS和SGSN之间的数据传输。
9:TID(Tunnel identifier)。指出了MM和PDP的上下文。
10:Flow Label。唯一的指定一个GTP流。
作为信令的头部使用
- SNN位被置为0
-Message Type应当是唯一的值,用来表示不同的信令消息。
-SNDCP N-PDU 在信令信息当中没有被使用到,发送方置为255即0xff,接收方忽略。
-TID 和 Flow Label 根据不同的信令信息有不同的使用方法,不详细介绍。
当用作信令信息的时候,数据包的格式如下图所示:为头部+信息元

下面分析一个具体的数据包:
一个控制信令的数据包的整体数据如下:

展开GTP协议如下:

作为传输消息头部的使用
T-PDU 的含义是一个原生的数据包,比如IP数据包,在GTP隧道传输的时候是载荷信息。
-SNN flag。当该位为1的时候,那么SNDCP N-PDU将会被包含进来。
-Message Type。 应当被置为255即0xff
-Sequence Number 。这个值用来被决定是否接受一个T-PDU。
-SNDCP N-PDU。当SNN位为0的时候,它的值应该是255即0xff,当SNN为1时,用在旧的SGSN通知新的SGSN给T-PDU分配N-PDU码。
-Flow Label。标识T-PDU属于哪个流。
-TID 包含T-PDU属于哪个隧道的隧道标识符。
一个承载了HTTP协议的GTP数据包:

GTP数据包头里面的数据:

对于GTPv1协议头部的解析的更多相关文章
- 对于GTPv2协议头部的解析
参考3GPP TS 29.060 GTP的头部是可变的,GTP-C(control)和GTP-U(user)共同使用一个头部. GTP Header头部: -Version 用来标识GTP协议的版本, ...
- HTTP协议头部与Keep-Alive模式详解
HTTP协议头部与Keep-Alive模式详解 .什么是Keep-Alive模式? 我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器 ...
- WIFI知识累计之802.11协议radiotap头解析方法
radiotap官方网站:http://www.radiotap.net/Radiotap 该网站详细介绍了radiotap的各个字段的长度和介绍,并包含解析代码项目地址,该文就在此网站的基础编写一些 ...
- UDP协议疑难杂症全景解析
转载:http://blog.csdn.net/dog250/article/details/6896949 UDP协议疑难杂症全景解析 2011-10-22 19:26 2989人阅读 评论(4) ...
- TCP/IP协议头部结构体(网摘小结)(转)
源:TCP/IP协议头部结构体(网摘小结) TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #de ...
- CAP 一致性协议及应用解析
https://mp.weixin.qq.com/s/26x8O1bRzurl84e3nM6TTA CAP 一致性协议及应用解析 原创: 有赞技术 有赞coder 1周前 文 | 云开 on 用户中心 ...
- TCP/IP协议头部结构体
TCP/IP协议头部结构体(转) 网络协议结构体定义 // i386 is little_endian. #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) ...
- 简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good
2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29) TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更 ...
- Ethernet IP TCP UDP 协议头部格式
The Ethernet header structure is shown in the illustration below: 以太网头部14 bytes Destination Source L ...
随机推荐
- Mysql储存过程5: while
循环结构 while create procedure name() begin while 条件 do SQL语句 end while; end$ create procedure aa6() be ...
- itext 生成pdf文件添加页眉页脚
原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...
- flask基础之安装和使用入门(一)
前言 Flask框架作为一个python极简化的web框架,它不像Django那样的重型,非常适合快速开发一些小型的应用.本人用flask开发了几个项目之后,慢慢研究flask底层的一些原理,开始一步 ...
- http之100-continue
[http之100-continue] 1.http 100-continue用于客户端在发送POST数据给服务器前,征询服务器情况,看服务器是否处理POST的数据,如果不处理,客户端则不上传POST ...
- Keras自定义评估函数
1. 比较一般的自定义函数: 需要注意的是,不能像sklearn那样直接定义,因为这里的y_true和y_pred是张量,不是numpy数组.示例如下: from keras import backe ...
- HDU 5936 朋友
题意为给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根. 当一方操作时,他们需要先选择一个不为根的点,满足该点到其父亲的边权为1; 然后 ...
- VI编辑,配置文件
1,VI编辑 vi 分为3种模式 1>一般模式: [Ctrl + f ] 下一页 [Ctrl + b ] 上一页 [n+ enter] 向下移动n行 eg:2 ...
- leetcode 之trap water(8)
这题不太好想.可以先扫描找到最高的柱子,然后分别处理两边:记录下当前的局部最高点,如果当前点小于局部最高点,加上, 反则,替换当前点为局部最高点. int trapWater(int A[], int ...
- 欧拉回路&欧拉通路判断
欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次, 称这条回路为欧拉回路.具有欧拉回路的图成为欧拉图. 判断欧拉通路是否存在的方法 ...
- wxPython 画图板
终于开始Python学习之旅了,姑且以一个“画图板”小项目开始吧.放慢脚步,一点一点地学习. 1月28日更新 第一次遇到的麻烦便是“重绘”,查了好多资料,终于重绘成功了. #-*- encoding: ...