5GC基础自学系列 | 5GC协议系列之SBI接口HTTP2
Posted COCOgsta
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5GC基础自学系列 | 5GC协议系列之SBI接口HTTP2相关的知识,希望对你有一定的参考价值。
视频来源:51学通信《5G核心网基础、协议与信令流程》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,谢谢支持!
附上汇总贴:5G基础自学系列 | 汇总
主要内容
介绍SBI接口的协议HTTP2特点
介绍HTTP2协议与HTTP 1.1t协议的优势对比
- 多路复用、头压缩、服务推送、二进制传输等
介绍HTTP 2协议基本概念、帧结构
HTTP 2协议的主要方法与举例
SBI接口Restful风格介绍
5GC中SBI接口资源API介绍与举例
5G协议总览
HTTP版本演进
HTTP2 vs HTTP1.1暨主要优势
HTTP 2和HTTP 1.1的相同点:
- 继承了HTTP 1.1的大部分业务功能和方法(如GET、POST等)
- 都支持明文或加密形式(即HTTPs) 传输。
- 但在传送效率上有很大提升。
HTTP2和HTTP 1.1的不同点:
HTTP2协议基本概念和关系
帧:HTTP/2数据通信的最小单位, 指HTTP/2中逻辑上的HTTP消息。例如请求和响应等,消息由一个或多个帧组成。
流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。
连接:即TCP连接。通过TCP三次握手建立。
HTTP2协议之帧格式
- Length(24) :帧数据部分的长度, 不包括头部,头部长度固定为9字节(24+8+8+1+31=72位)
- Type(8) :区分帧数据存储的是Header还是Body,HTTP/2新定义了一些其它Type, 可参考RFC 7540
- Flags(8) :共8位, 每位都起标记作用。每种不同的Frame Type都有不同的Frame Flags
- R(1):保留位
- Stream Identifier:流ID。流的标识。ID为0的流用于初始化
HTTP2协议的数据传送暨多路复用
HTTP/2采用二进制格式传输数据, 而非HTTP 1.x的文本格式,二进制协议解析起来更高效。
HTTP/1的请求和响应报文, 都是由起始行, 首部和实体正文(可选) 组成,各部分之间以文本换行符分隔。
HTTP/2将请求和响应数据分割为更小的帧传送。多个帧之间可以乱序发送,根据帧首部的流标识可以重新组装。
Wireshark过滤HTTP2流实战
本例通过服务器的IP地址(因为我这个pcap访问了很多http 2网站)+ (http 2.stream id==1)这两个条件,就把属于这个ID为1的流的请求/响应消息对过滤出来了。
HTTP2特性之:服务器推送
服务端可以在发送页面html时主动推送其它资源, 而不用等到浏览器解析到相应位置, 发起请求再响应。例如服务端可以主动把JS和CSS文件推送给客户端, 而不需要客户端解析HTML时再发送这些请求。
HTTP 2专门定义了PUSH_PROMISE帧类型用于推送数据给客户端
HTTP2特性之:头压缩
HTTP 2采用HPACK有效的压缩HTTP头部字段。而HTTP 1.1头部字段未压缩
原理:维护一份字典索引表,实际传输时只传输对应索引
如2表示method=GET,5表示path=/index.html等。
HTTP2数据部分之JSON
HTTP 2的数据部分通过DATA帧携带, 采用JSON的格式来传送用户数据。
JSON(javascript Object Natation) 特点:
- 一种轻量级的数据交换格式、和XML一样,基于纯文本的数据格式
- 可以表达String、Number、Boolean、数组、甚至对象等数据
- 采用键值(Key-Value)对的形式表示数据。
JSON基本语法:
- 对象用 包含一系列无序的Key-Value键值对表示, 其中Key和Value之间用冒号分割, 每个key-value之间用逗号分割。
- 允许数据嵌套。嵌套用的数组用方括号[]表示。
举例:
5GC中的HTTP会话
常见方法:
- POST:新建
- PUT/PATCH:更新
- GET:获取
- DELETE:删除
常见状态码:
- 1xx - Informational
- 2xx - Successful
- 200 OK-[GET] :服务器成功返回用户请求的数据。
- 201 CREATED-[POST/PUT] :用户新建或修改数据成功。
- 204 NO CONTENT-[DELETE] :用户删除数据成功。
- 400 INVALID REQUEST-[POST/PUT] :用户发出的请求有错误。
- 401 Unauthorized:表示用户没有权限
- 403 Forbidden:表示用户得到授权(与401错误相对) , 但是访问是被禁止的。
- 404 NOTFOUND:用户发出的请求的是不存在的记录。
- 500 INTERNAL SERVER ERROR-:服务器错误
- 3xx - Redirection
- 4xx - Client Error
- 5xx - Server Error
数据部分:
- JSON来携带(键值对形式)
- 只有GET或POST方法时才会返回
SBI接口使用的Restful API概述
虽然5GC和互联网很多网站都使用了HTTP 2, 但有着很大的不同。最大的不同就是SBI接口上HTTP 2遵循Restful的API格式。
REST(Representational State Transfer) :是一种架构风格或模式,符合以下特点的就可以叫REST风格或RESTful:
- 网络上的所有事物都被抽象为资源, 每个资源对应一个唯一的资源标识URI
- 通过HTTP协议(1.1或2均可)方法作连接器对资源进行操作
- 对资源的任何操作不改变资源标识URI
- 所有的服务器操作都是无状态的
注:
- 资源包括:图片、文本、声音或者是UDM里签约数据。
- 资源API举例:
/nudm-sdm/v1/imsi-4600x123456789/am-data表示某用户的接入管理签约数据
/nudm-sdm/v1/imsi-4600x123456789/sm-data表示某用户的会话管理签约数据
5GC中的资源URI的结构
一个资源唯一对应一个URI
5GC SBI资源API结构在29501中定义, 格式是:
apiRoot/apiName/apiVersion/apiSpecificResourceUriPart ,其中:
- apiRoot:http(s)://host(:port)
- apiName: API的名字。也就是是SBI服务的名字, 如namf-comm
- apiVersion: 版本号。如v1
- apiSpecificResourceUriPart: 资源部分。
资源API举例:
举例:SMF的资源URI结构
SMF的资源API在29502中定义。
以上是关于5GC基础自学系列 | 5GC协议系列之SBI接口HTTP2的主要内容,如果未能解决你的问题,请参考以下文章