sip怎样会话发起

联启 网络工具 15

本文目录导读:

sip怎样会话发起-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 核心流程概览:
  2. 详细步骤(涉及组件:UAC, Proxy, Registrar, UAS)
  3. 简化时序图(文本版)
  4. 核心概念补充
  5. 总结一句话:

SIP(Session Initiation Protocol,会话发起协议)是一种用于建立、修改和终止多媒体会话(如语音、视频、即时消息)的信令协议,其核心会话发起流程通常包括 用户定位、能力协商、会话建立 等步骤。

以下是 SIP 会话发起的基本流程(以最常见的用户A呼叫用户B为例):

核心流程概览:

  1. 用户A代理服务器 发送 INVITE 请求。
  2. 代理服务器 寻找 用户B 的位置(通过DNS、注册服务器等)。
  3. 用户B 振铃,并回复 180 Ringing(振铃)
  4. 用户B 接听,回复 200 OK(包含其媒体能力,如支持的编解码)。
  5. 用户A 收到200 OK后,回复 ACK 确认。
  6. RTP/SRTP媒体流 开始直接(或通过中继)在A和B之间传输。

详细步骤(涉及组件:UAC, Proxy, Registrar, UAS)

注册阶段(可选,但通常需要)

  • 用户B 启动时,会通过 REGISTER 请求向 注册服务器(Registrar) 注册自己的当前IP地址和端口。
  • 注册服务器将其地址绑定到SIP URI(如 sip:b@example.com)。

用户A发起呼叫(INVITE)

  • 用户A(UAC,User Agent Client)构造一个 INVITE 请求,包含:
    • 请求行INVITE sip:b@example.com SIP/2.0
    • 头域From: <sip:a@example.com>, To: <sip:b@example.com>, Call-ID: 12345@a-pc
    • 消息体(SDP,Session Description Protocol):描述A希望接收的媒体格式(如:音频用G.711编码,IP:192.168.1.10,端口:5004)。
  • 请求被发送到A的出站代理服务器(Outbound Proxy)。

代理服务器路由与查询

  • 代理服务器 收到INVITE后:
    • 检查请求,进行鉴权(如401/407挑战)。
    • 通过 DNS位置服务(从Registrar获取)查询用户B当前在哪儿。
    • 将INVITE转发到用户B的IP地址。

用户B收到请求并振铃(100 Trying & 180 Ringing)

  • 用户B的终端(UAS) 收到INVITE后:
    • 立即回复 100 Trying(临时响应,表示已收到请求,正在处理)。
    • 开始振铃,回复 180 Ringing(临时响应,表示正在提示用户)。
  • 这些响应会沿原路返回给用户A,用户A听到回铃音。

用户B接听(200 OK)

  • 当用户B接听电话时,终端回复 200 OK 最终响应。
  • 200 OK的消息体(SDP)描述了B的媒体能力(音频使用G.711编码,IP:192.168.1.20,端口:4000)。

用户A确认(ACK)

  • 用户A收到200 OK后,回复 ACK 请求(注意:ACK是直接发往用户B的,或通过代理,但通常通过代理简单转发)。
  • 关键点:此时SIP信令会话建立完成,双方知道了对方的IP、端口和编码。

媒体流传输

  • 根据协商好的IP、端口和编码,用户A和用户B开始通过 RTP(实时传输协议)SRTP(安全实时传输协议) 直接建立音频/视频流。
  • 注意:媒体流通常不经过SIP代理服务器,而是点对点的(除非使用B2BUA或媒体中继如TURN服务器)。

会话终止(BYE)

  • 任何一方挂断时(如用户A),发送 BYE 请求。
  • 对方回复 200 OK,会话结束。

简化时序图(文本版)

用户A (UAC)          代理服务器 (Proxy)        用户B (UAS)
    |                        |                     |
    |---- INVITE (SDP A) -->|                     |
    |                        |--- INVITE (SDP A)->|
    |<-- 100 Trying --------|                     |
    |                        |<--- 180 Ringing ---|
    |<-- 180 Ringing -------|                     |
    |                        |<--- 200 OK (SDP B)|
    |<-- 200 OK (SDP B) ----|                     |
    |--- ACK (通常直接) ---->|---- ACK ----------->|
    |                        |                     |
    |<======= RTP 媒体流 (语音/视频) ==========>|   // 点对点
    |                        |                     |
    |---- BYE ------------->|----- BYE ---------->|
    |                        |<--- 200 OK --------|
    |<-- 200 OK ------------|                     |

核心概念补充

  • SDP (Session Description Protocol):不是SIP本身的协议,而是消息体,用于协商媒体类型(音频/视频)、编解码器(G.711, H.264)、IP地址、端口等,它“嵌入”在INVITE和200 OK中。
  • 请求与响应:SIP使用基于文本的请求(INVITE, ACK, BYE, REGISTER, CANCEL, OPTIONS, SUBSCRIBE, NOTIFY, REFER, INFO, UPDATE, PRACK)和响应(100-699)。
  • 代理服务器:路由信令,可以是无状态(不记录对话状态)或有状态(记录,更常见)。
  • B2BUA (Back-to-Back User Agent):严格来说不是标准的SIP代理,它作为两个对话的端点,常用于NAT穿透、录音、转接(如FreeSWITCH, Asterisk)。
  • 注册:使用REGISTER请求将SIP URI绑定到当前IP地址和端口,以便被找到。

总结一句话:

SIP发起会话就是:呼叫方发INVITE(说“我们通话吧,我用这些编码”),被叫方振铃后回复200 OK(说“好,我用这些编码”),呼叫方回ACK确认,然后双方用协商好的媒体参数直接开始对话。

标签: SIP

抱歉,评论功能暂时关闭!