目录
第一章:SIP简介
1. sip协议
会话发起协议,应用层的信令控制协议,独立于传输层。SIP是一种基于文本的协议,它的语法和消息非常类似于HTTP协议,不同之处在于SIP不仅可以用TCP,也可以用UDP封装。
2. sip体系结构
UAC(用户代理客户端):启动SIP信令的客户端或终端
UAS(用去代理服务器):响应来自UAC的SIP信令的服务器
UA(用户代理):可以同时充当UAC或UAS的逻辑实体,如SIP端点(IP电话、ATA、软电话等)
代理服务器、重定向服务器和注册服务器
3.呼叫简单流程
4. 注销登记
expires:过期时间,头字段为0
contact:寻找话机地址
via:由用户名和完全限定的域名组成。
via告诉其他元素向何处发送响应,而contact告诉其他元素向何处发送将来的请求。
3. SIP注册过程
注册与用户代理的过程相关联的五个基本流。
消息流 | 描述 |
---|---|
register(401)->200 OK | 成功的新注册 |
register->200 OK | 联系人列表的更新 |
请求当前联系人列表 | |
注销登记 | |
注册不成功 |
4. SIP服务器类型
4.1 代理服务器
SIP代理模式下,所有SIP信令都经过SIP代理。这种行为将有助于诸如计费之类的流程,并且是迄今为止最常见的选择。缺点是在会话建立期间由服务器在所有SIP通信中间引起的开销。不管SIP服务器的角色如何,即使服务器作为SIP代理工作,RTP分组也将直接从一个端点到达另一个端点。
RTP:实时传输数据,传输流媒体数据。
负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前12个字节的含义是固定的,而负载则可以是音频或者视频数据。
4.2 重定向服务器
在这种模式下,SIP服务器是非常可伸缩的,因为它不保存事务的状态。用于需要高可伸缩性但不需要对呼叫计费的情况。
4.3 B2BUA服务器
用于隐藏网络的拓扑,用于支持有缺陷的客户端,这些客户端无法基于记录路由正确地路由SIP请求。
5. SIP请求消息类型
register:注册用户并更新位置表
invite:会话建立
ack:确认邀请
bye:终止现有会话
cancel:取消挂起的注册
6. SIP对话流
6.1 方法和请求URL
包含消息的当前目的地,通常由代理操纵以路由请求。它是SIP请求中最重要的字段。
6.2 via
这包含userA将等待接收对此请求的响应的地址,还包含一个名为分支的参数,用于标识此事务。via报头将最后一个SIP跳定义为IP、传输和特定于事务的参数。
6.3 to
包含最初选择的目标中的名称,to报头字段不用于路由数据包。
6.4 发件人from
此字段包含名称和指示呼叫方ID的SIP URI。此标头字段具有一个标记参数,该参数包含由IP电话添加到URI的随机字符串。其用于识别目的。
6.5 Call-ID
包含通过随机字符串的组合生成的用于该呼叫的全局唯一标识符,并且它可以包含UAC的主机名或IP地址。
6.6 CSeq
CSeq或命令序列包含一个整数和一个方法名。CSeq随着SIP对话中的每个新请求而递增。
6.7 contact
通常由用户名和完全限定的域名组成。通常在此字段中使用IP地址,via头域告诉其他元素向何处发送响应,而Contact告诉其他元素向何处发送将来的请求。
6.8 max-forwards
用于限制请求在到达其目的地的路径中所允许的跳数。
6.9 内容类型&内容长度
- 包含消息描述正文
- 包含消息正文的字节计数
顺序如下
- 接收代理invite请求并向用户A发送100trying,指示代理接收到invite并正在转发请求。这允许用户A的电话关联所发送的INVITE请求。
- 代理A通过咨询DNA服务器(NAPTR和SRV记录)来定位代理B,以找到哪个服务器负责SIP域SIPB,转发INVITE请求。
- 代理B接收INVITE请求,并以100 Trying应答响应代理A。
- 代理B向自己的未知数据库查询用户B的地址,然后将由自己的地址的另一Via报头字段添加到INVITE请求,将其转发到用户B的IP地址。
- 用户B的电话接收到INVITE请求并开始振铃。手机会发送一个180Ringing应答来响应
- 此消息通过两个代理以相反方向路由回来。每个代理使用via报头字段来确定将响应发送到何处,并从顶部移除自己的via报头
- 当用户A的电话接收到180Ringing消息时,它开始回铃,通知用户呼叫正在另一侧振铃。
- 用户B接听电话,电话发送200ok的响应,200ok消息包含指定解码器、端口和与会话有关的描述。
7. 查找SIP服务器
端口:服务所在的TCP或UDP端口
目标:提供服务的计算机的规范主机名
SRV记录的配置通常用于提供SIP服务器的故障转移和负载共享。
SIP服务:包括呼叫转移、呼叫接听、呼叫保持等。确保网络中所有的组件都支持某些特定的RFC
SIP服务用来提供电话服务,不支持包含域和字母数字字符的SIP地址的情况下存在问题。
8. RTP协议(实时协议)
RTP协议负责数据的实时传输音频和视频等,使用UDP协议。
该协议传输要求:序列号,时间戳,转发数据包而不重传,来源是别,内容识别,同步。
9. 解码器
编解码器是能够编码或解码数字流的算法。RTP协议中描述的内容通常由编解码器编码。每个编解码器都有特定的用途。
10. 会话描述协议(SDP)
用于在用户代理之间协商会话参数。媒体细节、传输地址和其他媒体相关信息使用SDP协议在用户代理之间交换。
用来描述多媒体会话的应用层控制协议,为会话通知和会话邀请和其他形式的多媒体会话提供了多媒体会话描述,SDP是一个基于文本的协议。
11. SIP协议与OSI模型
OSI | SIP |
---|---|
应用层 | opensips |
表示层 | G.729/G711/GSM/Speex |
会话层 | SIP/SIPS |
传输层 | UDP/TCP/SCTP/TLS/RTP/SRTP/RTCP |
网络层 | IP |
数据链路层 | Frame_Relay/ATM/PPP/Ethermet |
物理层 | Ethernet/v.35/RS-232/xDSL |
12. SIP代理
负责注册用户并保持,整个SIP路由和信令由SIP代理处理,负责呼叫转发、白/黑名单、快速拨号等的最终用户服务。媒体相关分组直接从用户代理客户机、服务器和PSTN网关路由。
PSTN
公共交换电话网,PSTN是一种以模拟技术为基础的电路交换网络。
PSTN可以由两部分组成,一部分是交换系统;一部分是传输系统,交换系统由电话交换机组成,而传输系统由传输设备和线缆组成。