AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

vvv

作者: 作者的头像   jyslx ,  2024-12-02 23:55:01 ,  所有人可见 ,  阅读 3


0


sip协议

SIP是一种应用层协议,全称叫会话初始协议,是英文Session initialization Protocol缩写

SIP URL

sip协议是在ip网络中,基于ip来实现通讯,sip只建立会话面,而不建立用户面,这个需要和其他的应用层协议协同工作,使用sip协议进行通讯需要在ip网络中创建Sip账号(URL)来唯一标识

sip:user@domain:port;params?headers
参数 含义
sip: 表示这个URL的SIP协议,还有sips加密协议
user sip对象的用户标识符,可以是用户名,电话号,邮箱地址
@ 分割用户标识符和域名
domain sip对象所属的域名或ip地址,一般是sip服务器的地址
port(可选) 服务器的端口,默认的sip使用5060(无加密)或5061(加密)
params(可选) 指定附加参数,指定sip传输使用的协议transport=(UDP,TCP,TLS),指定请求方法method =(INVITE,REFISTER):,指定SIP用户的类型user=(phone)
headers(可选) headers 用于指定SIP头部参数,以问号(?)开始,多个参数用&分隔 常见的头部参数有: ttl:Time-to-live,表示消息的生存时间。 maddr:Multicast地址。 method:指定请求的SIP方法(如INVITE、REGISTER等)。 lr:表示该请求是一个路由请求。

SIP系统由4种元素组成:用户代理、代理服务器、重定向服务器以及注册服务器

请求消息

SIP请求消息包含以下几个主要部分:

  1. 请求行(Request Line)
  2. 请求头(Request Headers)
  3. 空行(Blank Line)
  4. 消息体(Message Body)(可选)

1. 请求行(Request Line)

请求行是SIP消息的第一行,包含以下三个元素:

  • 方法(Method):SIP请求的类型,表示要执行的操作,如INVITE、REGISTER、BYE等。
  • 请求URI(Request-URI):表示请求的目标URI,通常是用户代理(UA)或者SIP服务器的地址。
  • SIP版本(SIP Version):标明使用的SIP协议版本,通常为SIP/2.0。

例如:

INVITE sip:alice@atlanta.com SIP/2.0

这行表示发起一个INVITE请求,目标是alice@atlanta.com,并且使用的是SIP 2.0协议。


2. 请求头(Request Headers)

INVITE sip:alice@atlanta.com SIP/2.0
To: <sip:alice@atlanta.com>
From: <sip:bob@biloxi.com>;tag=client2
Call-ID: 1234567890
CSeq: 1 INVITE
Max-Forwards: 70
Contact: <sip:bob@biloxi.com>
Content-Type: application/sdp
Content-Length: 139

请求头部包含了与该请求相关的各种信息,包括发送者、接收者、请求的参数、认证信息等。SIP请求头的格式为键值对,每个键值对以冒号分隔,多个请求头之间以换行符分隔。常见的SIP请求头包括:

  • Via:用于记录SIP请求经过的代理服务器路径以及响应返回路径。它帮助确保消息能够正确路由,并避免消息循环。
  • Max-Forwards:用于限制SIP请求能够通过的最大代理数量,防止消息在网络中无限转发。

  • To:目标地址,表示请求的接收者。通常为To头和From头一起配对,表示消息的发送和接收双方。

  • From:请求发起方的地址,通常包含发起方的标签(tag),用来标识该请求发起者。
  • Call-ID:标识请求的会话ID,所有属于同一个会话的消息必须具有相同的Call-ID。
  • CSeq(Sequence):请求的序列号。它由请求的类型(如INVITE、BYE)和递增的计数值组成。
  • Contact:包含请求发起方的联系方式,通常用于响应消息发送回发起方。
  • Content-Type:表示消息体的类型(如SDP、XML等)。如果请求消息包含消息体,通常需要指定此字段。
  • Content-Length:消息体的长度。若请求消息没有消息体,此字段为0。
  • Authorization:当请求需要身份验证时,会包含Authorization头,指明用于身份验证的凭证。
  • User-Agent:包含发送请求的客户端(UA)或代理的详细信息(通常是客户端的软件版本信息)。

3. 空行(Blank Line)

请求头和消息体之间有一个空行。该空行是为了分隔头部和消息体。通常是一个简单的换行符(\r\n)。


4. 消息体(Message Body)

消息体是SIP请求的可选部分,它包含了与请求相关的实际内容。例如,在INVITE请求中,消息体通常包含会话描述协议(SDP),以告知对方如何设置多媒体会话。对于REGISTER请求,消息体可能包含注册信息。

会话描述协议(SDP,Session Description Protocol)

它用于描述多媒体会话的详细信息,如使用的媒体类型、编解码器、传输方式、端口等。

v=0
o=alice 2890844526 2890844526 IN IP4 192.0.2.3
s=Session SDP
c=IN IP4 192.0.2.4
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000

常见的请求方法及其消息体内容:

  1. INVITE:

  2. 用于发起会话。消息体通常包含SDP(Session Description Protocol),描述会话的媒体信息(如音频、视频、编码格式等)。

示例:INVITE sip:alice@atlanta.com SIP/2.0(消息体包含SDP)

  1. BYE:

  2. 用于结束会话。通常没有消息体,但可能携带与会话相关的标识符(如Call-ID)。

  3. REGISTER:

  4. 用于注册SIP客户端到SIP服务器。消息体通常包含注册信息(如注册的URI、认证信息等)。

  5. ACK:

  6. 用于确认接收到INVITE请求的响应。消息体通常为空,或包含确认信息。

  7. OPTIONS:

  8. 用于查询远程设备的功能(例如,是否支持某种编解码器)。消息体通常为空。

  9. SUBSCRIBE:

  10. 用于订阅某种状态信息。消息体包含订阅请求的详细信息。


SIP 请求消息示例

INVITE请求示例:

INVITE sip:alice@atlanta.com SIP/2.0
To: <sip:alice@atlanta.com>
From: <sip:bob@biloxi.com>;tag=client2
Call-ID: 1234567890
CSeq: 1 INVITE
Max-Forwards: 70
Contact: <sip:bob@biloxi.com>
Content-Type: application/sdp
Content-Length: 139

此示例中的INVITE请求是由bob@biloxi.com发起的,目标是alice@atlanta.com,并且会话使用SDP进行描述。消息体中的SDP包含了媒体会话的详细信息,如音频流的IP地址和端口号、编码格式等。


常见SIP请求方法简介

  1. INVITE:用于发起、更新或邀请对方参与会话。
  2. BYE:用于结束会话。
  3. REGISTER:用于注册SIP客户端到SIP服务器。
  4. ACK:用于确认接收到INVITE的响应。
  5. OPTIONS:查询远程设备的能力。
  6. SUBSCRIBE:用于订阅远程状态信息。
  7. NOTIFY:用于通知订阅者有关状态的变化。
  8. CANCEL:用于取消已经发出的请求。
  9. PRACK:用于确认对非2xx响应的可靠传输。

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息