SIP响应消息和头字段

简介: SIP响应消息和头字段

响应消息格式如下:


              Response=Status-Line

                                *(general-header

                                 I response-header

                                 I entity-header)

                                 CRLF

                                              [message-body]


      状态行(Status-Line)以协议版本开始,接下来是用数字表示的状态码(Status-Code)及相关的文本说明,最后以回车键结束,各个元素间用空格字符(SP)间隔,除了在最后的CRLF序列中,这一行别的地方不许使用回车或换行字符。


       Status-Line=SIP-version SP Status-Code SP Reason-Phrase CRLF

       SIP协议中用三位整数的状态码(StatusCode)和原因码(Reason Code)来表示对请求做出的回答。状态码用于机器识别操作,原因短语(Reason-Phrase)是对状态码的简单文字描述,用于人工识别操作。其格式如下:


Status-Code=Ixx(Informational)

                     I 2xx (Success)

                     I 3xx (Redirection)

                     I 4xx (Client-Error)

                     I 5xx (Server-Error)

                     I 6xx (Global-Failure)

                     I  extension-code


     状态码的第一个数字定义响应的类别,在SIP/2.0中第一个数字有6个值,定义如下:

     • 1xx(Informational):请求已经收到、继续处理请求。

     • 2xx(Uccess):行动已经成功地收到,理解和接受。

     • 3xx(Redirection):为完成呼叫请求,还须采取进一步的动作。

     • 4xx(ClientError):请求有语法错误或不能被服务器执行。客户机需修改请求,然后再重发请求。

     • 5xx(ServerError):服务器出错,不能执行合法请求。

     • 6xx(GlobalFailure):任何服务器都不能执行请求。

     其中,Ixx响应为暂时响应(Provisionalresponse),其他响应为最终响应(FinalResponse)o

SIP消息头字段


      SIP协议的消息头定义与HTTP在语法规则和定义上很相似。每个头字段都遵循以下格式:首先是字段名(Field Name),字段名不分大小写,后面是冒号;然后是字段值,字段值与冒号间可有多个前导空格(LWS)。其格式如下:


             message-header = field-name":"[field-value]CRLF

field-name           = token

             field-value            = *(field-contentILWS)


通用消息头(GeneralheadeT)


      通用头字段适用于请求消息和响应消息,包含的字段有:

      general-header=Accept

                                I Accept-Encoding

                                I Accept-Language

                                I Call-ID

                                I Contact

                                I CSeq

                                I Date

                                I Encryption

                                I Expires

                                I From

                                I Organization

                                I Record-Route

                                I Timestamp

                                I To

                                I User-Agent

                                I Via

     

接下来,介绍通用头字段中各字段的含义:

      • Accept,Accept-Encoding和Accept-Language字段用于客户机在请求消息中给出其可接受的响应的媒体类型、编码方式以及描述语言。用于服务器在415响应(请确认)中表明其可理解的请求消息的媒体类型、编码方式以及描述语言。

      • Call-ID字段:用于惟一标识特定邀请或某个客户机的注册请求,一个多媒体会议可产生多个Call-ID不同的呼叫。

      • Contact字段:给出一个URL,用户可以与此URL建立进一步的通信。

      • Cseq字段:用于标识服务器发出的不同请求,若Call-ID值相同,那么Cseq值必须各不相同。

      • Date字段:反映首次发出请求或响应消息的时间,重发的消息与原先的消息有相同的Data字段值。

      • Encryption字段:表明内容经过了加密处理,这种加密为端到端的加密。

      • Expire字段:它给出消息内容截止的日期和时间。

      • From字段:所有消息中都必须有From字段,此字段给出请求的发起者。

      • Organization字段:它给出发出请求或响应消息的实体所属的组织的名称。

      • Record-Route字段:它给出一个全局可到达的Request-URI,用于标识代理服务器。

      • Time-Stamp字段:给出客户机向服务器发出请求的时间。

      • To字段:所有消息中都必须有To字段,此字段给出请求的目的收方。

      • User-Agent字段:含有与发起请求的用户代理客户机有关的信息。

      • Via字段:它给出请求消息迄今为止经过的路径。

相关文章
|
Java 数据库 Maven
根据请求中接收到的主动协商头字段,目标资源没有用户代理可以接受的当前表示
今天使用ssm框架搭建了一个项目,测试一个插入的接口结果返回406,但是数据库插入成功了,报错406是因为返回的结果接口无法解析。
831 0
|
1月前
|
存储 缓存 监控
|
数据库
SIP 协议消息应答代码解释详录
SIP 协议消息应答代码解释详录
|
9月前
|
XML JSON JavaScript
JsonRPC协议详解(协议介绍、请求示例、响应示例)
RPC(远程过程调用)是一种用于实现分布式系统中不同进程或不同计算机之间通信的技术。它允许我们像调用本地函数一样调用远程计算机上的函数,使得分布式系统的开发变得更加简单和高效。 JsonRPC是一种基于JSON(JavaScript Object Notation)的轻量级远程过程调用协议。与其他RPC协议相比,JsonRPC使用简单的文本格式进行通信,易于阅读和编写,广泛应用于Web服务和分布式系统中。
683 0
|
11月前
|
网络协议 索引
HTTP/2 协议(帧、消息、流简单的抓包分析)
HTTP/2 协议(帧、消息、流简单的抓包分析)
472 0
|
监控 网络协议 网络架构
什么是SIP请求和SIP响应?
什么是SIP请求和SIP响应?
|
缓存 算法
HTTP协议中的ETag头字段如何实现快速判断资源是否变化?
HTTP协议中的ETag头字段如何实现快速判断资源是否变化?
170 0
|
网络协议 安全 应用服务中间件
网络-http协议学习笔记(消息结构、请求方法、状态码等)
网络-http协议学习笔记(消息结构、请求方法、状态码等)
134 0
网络-http协议学习笔记(消息结构、请求方法、状态码等)
|
缓存 安全 前端开发
如何判断请求是否发送成功以及获取请求中的数据
如何判断请求是否发送成功以及获取请求中的数据
723 0
如何判断请求是否发送成功以及获取请求中的数据