对于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 ...
随机推荐
- 远程工具(SSH Secure)连接Centos出现中文乱码问题的解决办法
问题原因 使用远程工具进行连接时,如果linux有中文文件或目录,显示时会出现乱码,原因是linux编码是UTF-8,而远程工具默认是当前系统本地编码即GBK.所以解决方案是统一两者编码就OK了,但是 ...
- ASLR
@author:dlive ASLR address space layout randomization 微软从windows vista/windows server 2008(kernel ve ...
- python基础===拆分字符串,和拼接字符串
给定某字符,只需要保留其中的有效汉字或者字母,数字之类的.去掉特殊符号或者以某种格式进行拆分的时候,就可以采用re.split的方法.例如 ============================== ...
- ThoughtWorks代码挑战——FizzBuzzWhizz游戏 通用高速版(C/C++ & C#)
最早看到这个题目是从@ 程序媛想事儿(Alexia) 的 最难面试的IT公司之ThoughtWorks代码挑战——FizzBuzzWhizz游戏 开始的,然后这几天陆陆续续有N个小伙伴发表了自己的文章 ...
- 构建最基础的Spring项目及所需要的jar包
1.Spring 框架由6个模块组成 上图是spring4的结构图,不同版本结构略有差异,但模块都是相同的. 2.Core Container 核心容器 容器是Spring的核心部分,Core Con ...
- mac 安装mongodb与常用操作
1.安装 brew update brew install mongodb 2.启动mongo mongod --config /usr/local/etc/mongod.conf 3.启动 mong ...
- 深入理解计算机系统项目之 Shell Lab
博客中的文章均为meelo原创,请务必以链接形式注明本文地址 Shell Lab是CMU计算机系统入门课程的一个实验.在这个实验里你需要实现一个shell,shell是用户与计算机的交互界面.普通意义 ...
- scrapy 学习笔记2
本章学习爬虫的 回调和跟踪链接 使用参数 回调和跟踪链接 上一篇的另一个爬虫,这次是为了抓取作者信息 # -*- coding: utf-8 -*- import scrapy class Myspi ...
- Typecho-反序列化漏洞学习
目录 Typecho-反序列化漏洞学习 0x00 前言 0x01 分析过程 0x02 调试 0x03 总结 0xFF 参考 Typecho-反序列化漏洞学习 0x00 前言 补丁: https://g ...
- bzoj 1100
思路:好脑洞啊... 把边和角转化为字符串,然后用反串跑kmp... #include<bits/stdc++.h> #define LL long long #define fi fir ...