GTP(GPRS Tunnelling Protocol)协议

article/2025/11/7 16:55:12
GTP(GPRS Tunnelling Protocol协议GPRS 骨干网中在GSNs 之间(如 SGSN 和 GGSN)提供协议信道,所有的 PTP 分组数据协议的PDUs 应由GTP 协议进行封装。
GTP概述
GTP 协议应用在SGSN 和GGSN 之间,为各个移动台( MS) 建立GTP 通道,GTP 通道是 GPRS服务节点( GSN) 之间的安全通道,两个 主机可通过该通道交换数据。

  SGSN 从 MS 接收 数据包,并在 GTP 包头中对其进行封装,然后才通过GTP 通道将其转发到 GGSN。GGSN 接收这些数据包时,先将它们解封,然后转发到外部 主机

  GTP 数据包包头含有Sequence Number字段,Sequence Number向GGSN(接收 GTP 数据包的GGSN) 指示数据包的顺序。

  在 PDP 环境激活阶段,发送端GGSN 向接收端GGSN 发送的第一个G-PDU 的序列号值是零 (0) ,发送端 GGSN 为其随后发送的每个 G-PDU 增加序列号值,G-PDU序列号值达到 65535 时,重置为零。

  一般情况下,接收端 GGSN 会校验所接收的数据包中的序列号,接受端GGSN拿自身的 计数器序列号和所接收的数据包中的序列号进行比较,如果这两个序号匹配上了,则 GGSN 转发该数据包,如果它们不匹配,则GGSN 丢弃该数据包。

  GTP 标准,可以参考 3GPP的技术规范:

  3GPP TS 09.60 v6.9.0 (2000-09)

  3GPP TS 29.060 v3.8.0 (2001-03)

  3GPP TS 32.015 v3.9.0 (2002-03)
协议内容
GTP 协议分为GT-C,GTP-U和GTP’协议。其中,GTP-C是 信令控制协议,GTP-U是封装用户数据协议,GTP’是计费相关的协议。

  GTP协议头部格式如下:


  说明如下:version:版本号,目前基本都是1,即gtp v1版本;

  protocol type:1为GTP’,0为GTP-C或GTP-U。

  next extension header:seq:n-pdu number:

  根据文档,这三个标示位分别指示gtp 头部是否含有next extension header项,sequence number项和n-pdu number项。但根据我对现网的数据分析,事实好像并非如此。

  此三个bit位,只要有一个置位,这三项都同时存在。

  Teid据说是很重要的字段,目前对该字段的认识不足,需进一步研读 3gpp协议。受高人指点,具体是3GPP TS 23.060和3GPP TS 29.060。

  Total length:gtp封装数据的长度,不包括gtp头部的基本长度,但包括gtp选项的长度,即:上面的next extension header,sequence number项和n-pdu number项的长度是包括在这个Total length之中的。 如果next extension header不为0,则下面还有extension header,直到extension header的nextextension header项为0。Next extension header格式如下:


  Extension header的长度必须为4的倍数。

  Gtp-C协议的根据不同的类型(type),其编码格式都不相同。常见的比较重要的三个type为:imsi,msisdn和apn。

  Imsi和msisdn的 编码格式有些类似。

  Apn的全称是Access Point Name,通常分为两部分,一部分为网络标示(ni),一部分为运营商标示(oi)。有些apn只有一部分。

  APN的格式如下:




  其中,type占一个字节,为0x83;

  apn length占用两个字节,为网络字序,包括该字段后的apn项的长度;

  ni长度,一个字节,ni的长度;

  oi长度,一个字节,标示OI长度。
工作原理
当我们使用手机上 wap网站,或者上 internet时,在sgsn和ggsn之间发生什么样的信令?我们的数据是通过怎么的手段传输到 互联网上的呢?

  Wap网和internet不同,wap网是一个半封闭半开放的 网络,而internet是一个开放的网络。

  从拨号方式上,对于 中国移动来说,wap用户的 apn为cmwap,internet用户的apn为cmnet。

  从网络连接方式上,手机上wap网站时,其实是通过运营商的wap 网关代理请求访问wap网站,而手机上internet时,访问的方式是通过运营商的 防火强NAT转换请求网站。

  从七层协议上来说,wap网站早期使用专用的 wml协议,wap 1.2协议之前,目前的wap 2.0支持 xhtml协议,可以说,wap和internet之间的差距在减小,甚至有逐渐融合的趋势。Xhtml与html差距不大,只是语法更加严格而已。

  下面解释一下用户拨号时,sgsn与ggsn之间的信令过程:

  首先,sgsn发送一个create pdp content request向ggsn;

  然后,ggsn返回create pdp content response给sgsn,说明该用户是否成功接入 gprs网络,如果成功接入,分配地址给该用户,否则,说明原因;

  最后,用户获得 ip地址,接入网络。

  在create pdp content request报文中,有以下三个重要的内容项:

  imsi:用户全球唯一标示msisdn:

  用户全球电话号码标示apn:标示用户接入的网络

  在create pdp content response报文,如果成功,则包含分配给用户的 ip地址
相关术语
APN

  Access Point Name,接入点名称,在GGSN中用于标识一个指定的外部 网络和一种服务的ISP,在SGSN中可根据APN通过 DNS域名解析得到与此APN对应的GGSN地址。APN可以分为APN以及wild card APN, wild card APN是指运营商允许用户使用给定的PDP类型的上下文接入任何网络,用“*”表示;常规APN包括两部分:网络标识(NI, Network Identifier)和运营商标识(OI, Operator Identifier)。NI最长63字节,OI最长37字节,不区分大小写。

   TEID

  Tunnel Endpoint Identifier,GTPv1的概念,用于表示一条隧道(PDP),分为数据面TEID(TEID(U))和控制面TEID(TEID(C)),由SGSN和GGSN自己分配。

   NSAPI

  Network Service Access Point Identifier,和TEID(C)或IMSI一起用于标示同一用户激活的不同上下文,范围[0,15],其中0~4系统保留,因此对于一个用户(UE)而言,最多可以建立11条隧道。

   TIDGTPv0的概念,由IMSI+NSAPI构成,和TEID作用相同。

   TFT

  TFT(Traffic Flow Template)是 GSN在接收或转发用户数据时,用于区分二次激活的 PDP上下文,TFT唯一的标识了同一TEID或同一PDP Address下的不同的PDP上下文。

  当同一个TEID或PDP Address下只有一个活跃的PDP上下文时,不需要为该PDP上下文指定一个TFT,因为所有下行的数据都直接通过该上下文对应的隧道传输。

  当同一个TEID或PDP Address下有多个活跃的PDP上下文时,那么就需要为每一个PDP上下文指定一个TFT,GGSN接收到发送给MS的G-PDU时,将使用该TFT来对应G-PDU传输时应该使用的PDP上下文。

  如果在二次激活时,所有该PDP地址下的PDP上下文都已经被分配了一个TFT,那么这一次的二次激活就可以无需再指定一个TFT。即,对应同一个TEID或PDP地址下的不同的PDP上下文,要么全都有各自的TFT,要么,只能有一个PDP上下文没有TFT。


http://chatgpt.dhexx.cn/article/iLG1lGLl.shtml

相关文章

移动互联网新协议 GTP 中被曝多个高危漏洞,影响4G和5G 用户

聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 Positive Technologies 公司上周发布报告《2020年 LTE 和5G 网络中的漏洞》指出,移动网络运营商 (MNOs) 使用的当代通信协议中被曝多个高危漏洞,可被用于…

GPRS核心网-GTP-C协议解析

GPRS隧道协议(GTP)是3GPP标准定义的隧道协议,用于在3G /4G/5G网络中承载通用分组无线服务(GPRS)。 GTP用于在服务网关(S-GW)和分组数据网络网关(P-GW)以及S-GW和移动性管…

网络协议 终章 - GTP 协议:复杂的移动网络

前面都是讲电脑上网的情景,今天我们就来认识下使用最多的移动网络上网场景。 移动网络的发展历程 你一定知道手机上网有 2G、3G、4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是:用 2G 看 txt,用 3G 看 jpg&…

gtp传输java_一种GTP数据包传输方法、相关装置及存储介质与流程

本申请实施例涉及通信领域,尤其涉及一种GTP数据包传输方法、相关装置及存储介质。 背景技术: 通用分组无线服务隧道协议(General Packet Radio Service Tunnelling Protocol,GTP)是一种用于传输分组数据的通信协议。目前,己使用的GTP协议可被分为通用分组无线服务(General …

GTP协议

GTP协议 (2010-08-27 17:20:54) 转载▼ 标签: 杂谈 分类: 计算机网络 摘要:本文分析GPRS的GSN之间的GTP协议,阐述GTP协议的含义及用法。 关键词:GPRS GTP 协议 一、 引言 在GPRS系统的GSN(GPRS Support …

GTP协议格式分析

点击上方↑↑↑蓝字 [ 协议分析与还原 ] 关注我们 “ 分析GTP协议。” 本文对比较枯燥的协议资料进行学习,有需要可继续阅读,找到自己关注的知识点,暂时无需要可直接拉到文末表示阅读结束,让微信记下热爱学习的你的痕迹。 如果说T…

关于GTPv1协议解析

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

GTP-U协议总结

1、​参考资料 3gpp TS 29.060 V17.1.0-GPRS Tunnelling Protocol (GTP) TS 29.281 V17.1.0-GPRS Tunnelling Protocol User Plane (GTPv1-U) 2、GTP协议 GTP(GPRS隧道协议(GPRSTunnelingProtocol)),可以分解成三种独立的协议&#xff0…

【5G核心网】 GTP协议

GTP 可以提供移动性的功能。 使用 GTP,网络的终端能够在网络中移动位置,各个端点集之间可以建立多个隧道,从而根据业务不同可以提供不同的 Qos,可以隐藏 IP,安全性更高。 1. 定义概念 GTP-U Message: GTP-U&#xff…

GTP协议的分析

一、 引言 在GPRS系统的GSN(GPRS Support Node,包括SGSN和GGSN)之间采用GTP(GPRS Tunnel Protocol)协议,GTP在整个GPRS协议栈中起着举足轻重的作用,GTP协议承载在TCP或UDP协议之上,分…

JS JQuery添加、替换、删除元素class属性

1、先声明一个div和两个class样式&#xff0c;用来测试&#xff1a; <html><head><meta charset"utf-8"><title></title><script src"https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><s…

jquery动态添加和删除class属性

在用jquery时&#xff0c;遇到一个问题&#xff0c;就是如何动态得添加和删除class的属性&#xff0c;下面是我的解决代码&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio…

用jQuery的.addClass()方法给元素加class

Target Elements by Class Using jQuery 你看到我们是怎么给所有的按钮做弹回效果了吗&#xff1f;我们用 $("button")来选中按钮&#xff0c;然后用.addClass("animated bounce")给按钮加CSS class。 你只需要用jQuery的.addClass()方法&#xff0c;就可…

js 关于动态添加class样式的学习

如果&#xff0c;我这里有一个需求。如下的页面代码 <body> <input type"button" value"红" id"btn1"/> <p id"p1"> 2016年圣诞前的一个星期天下午&#xff0c;我推开窗&#xff0c;加州明媚的阳光洒在街道上&…

jQuery通过id属性来获取元素,通过.addClass()方法来添加class.

Target Elements by ID Using jQuery 你还可以根据id属性来获取元素 首先用$("#target3")来选择id为target3的button元素。 注意&#xff0c;就像CSS一样&#xff0c;在id的名字前加上 #。 然后使用jQuery的.addClass()方法来添加 animated和fadeOutclass. 例如…

js给元素添加class样式

图中&#xff0c;左侧和右侧都需要添加不同的class类样式 结构&#xff1a; <div class"left"><div class"img_bg leftOne" click"clickLeft(企业文化)">企业文化</div><div class"img_bg leftTwo" click"…

jq获取和设置标签的css样式、jq给标签增加或移除class属性

1、jQuery获取和设置标签的css样式 jQuery既可以直接获取标签的css样式&#xff0c;也可以设置样式&#xff0c;包括行内、内部、外部样式&#xff1b;思路&#xff1a;先要选取这个标签&#xff0c;然后再获取或者设置样式&#xff1b;获取css属性&#xff1a; console.log(…

JavaScript给元素添加class属性

注意&#xff1a;element.classList.remove()、element.classList.add() — ie9及以下不兼容 // 移除div的class属性 obj.classList.remove(active);// 添加class属性值 // 方式一 obj.className new active;// 方式二 // obj.className new active;// 方式三&#xff1a;属…

jq中的addClass()方法与样式冲突

添加类样式方法 addClass()&#xff1a;向被选元素添加指定的类名 注意&#xff1a;该方法仅仅只是在原有基础上添加属性&#xff0c;不会覆盖已存在的 class 属性 提示&#xff1a;如需添加多个类&#xff0c;使用空格分隔类名 一、添加一个class属性 <style>.div {wid…

Dubbo原理简单分析

1.Dubbo原理分析 alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo、hsf),jms消息服务(napoli、notify),KV数据库(tair)等。 这个框架/工具/产品在实现的时候,都考虑到了容灾,扩展,负载均衡,于是出现一个配置中心(ConfigServer)的东西…