对于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 ...
随机推荐
- C#技术分享【PDF转换成图片——11种方案】
1.[iTextSharp.dll],C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片. DLL和源码 下载地址:http://downloa ...
- ZebraDatepicker中文显示
解决方法:①<script type="text/javascript" src="xx.js" charset="UTF-8"> ...
- 安装Https证书
安装证书 IIS 6 支持PFX格式证书,下载包中包含PFX格式证书和密码文件.以沃通证书为例: 文件说明: 1. 证书文件214083006430955.pem,包含两段内容,请不要删除任何一段内容 ...
- python多线程下载文件
从文件中读取图片url和名称,将url中的文件下载下来.文件中每一行包含一个url和文件名,用制表符隔开. 1.使用requests请求url并下载文件 def download(img_url, i ...
- BootStarp的form表单的基本写法
代码如下: <!DOCTYPE html> <html> <head> <title>BootStrap的基础入门</title> < ...
- CentOS6.9下安装MariaDB10.2.11
yum groupinstall -y "Development Tools" yum install -y cmake openssl-devel zlib-devel yum ...
- AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ
#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include &l ...
- c++ primer 4 数组和指针
类比的思想学习数组和指针,c++提供类似于vector和迭代器的低级复合类型——数组和指针.与vector相似,数组可以保存某一种类型的一组对象:而他们的区别在于,数组的长度固定,数组一经创建就不允许 ...
- Codeforces Round #278 (Div. 1) B - Strip dp+st表+单调队列
B - Strip 思路:简单dp,用st表+单调队列维护一下. #include<bits/stdc++.h> #define LL long long #define fi first ...
- AOSP编译
AOSP编译 1 编译环境Win10系统安装VMplayer14,主机16G内存,I3-4170 ,虚拟机ubuntu-16.04.1-desktop-amd64,12G内存. 2 软件安装sudo ...