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的主要内容,如果未能解决你的问题,请参考以下文章

5GC基础自学系列 | 5GC协议系列之N2接口NGAP

5GC基础自学系列 | 5GC协议系列之GTP-U

5GC基础自学系列 | 汇总

5GC基础自学系列 | 5GC基础之网络切片

5GC基础自学系列 | 5GC基础之5GC网络架构及网元

5GC基础自学系列 | 5GC基础之移动性管理