
SIP协议详解:从会话初始到消息体结构
一、SIP协议简介
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。广泛应用于CS(Circuit Switched,电路交换)、NGN(Next Generation Network,下一代网络)以及IMS(IP Multimedia Subsystem,IP多媒体子系统)的网络中,支持语音、视频、数据等多媒体业务。SIP协议类似于HTTP,可以减少应用的开发时间。
二、SIP的两种会话模式
在SIP IM通信应用中,存在两种主要的会话模式:Session Model和Pager Model。
1. Session Model:适用于消息体内容大于1300字节的情况。其会话建立过程包括主叫方发起邀请、代理服务器转发邀请、被叫方响应、会话建立、会话终止等步骤。
2. Pager Model:适用于消息体不大于1300字节的情况。采用MESSAGE方法进行通信,MESSAGE方法本身并不建立Dialog。
三、SIP消息体结构
SIP消息体结构与HTTP协议结构相似,由三部分组成:请求行(request-line)或状态行(status-line)、消息头(header)和正文(body)。
1. 请求行:包括Method、Request-URI和SIP-Version。
2. 状态行:由SIP-Version、Status-Code和Reason-Phrase组成。
3. 消息头:包含多个Header字段,如Call-ID、From、To、Via、Max-Forwards等。
四、SIP消息举例
1. MESSAGE消息(Pager Model)
User1发送MESSAGE请求到代理服务器。
代理服务器转发User1的MESSAGE请求给用户2。
用户2回复200 OK给代理服务器。
代理服务器转发200 OK回复给User1。
2. REGISTER消息
非鉴权注册消息:用户端发送REGISTER消息到服务器,服务器回复200 OK确认注册成功。
鉴权注册消息:用户端首次发送注册消息时,服务器返回401 Unauthorized提示需要鉴权信息。用户端带上鉴权信息重新注册,服务器验证通过后返回200 OK。
通过以上的介绍,我们可以了解到SIP协议的基本原理和会话过程。在实际应用中,SIP协议为多媒体通信提供了高效、灵活的解决方案。客户端设备IP地址为192.168.2.161,向服务器IP地址192.168.2.89发送注册请求信息。该注册请求使用SIP协议,并通过UDP进行传输。下面是该请求的详细信息:
设备向服务器发送REGISTER消息,以注册SIP服务。该请求中的关键信息包括:设备通过端口号8021与服务器通信,请求的最大转发次数为70次。还包含了设备标识符信息(如从标签和呼叫ID等)。该请求也指定了允许的设备操作,如INVITE、MESSAGE等。用户的用户代理信息也包含在其中,该代理是一个基于RTC协议的设备,版本号为1.2.4949。注册事件和允许的事件类型也已明确指定。该请求没有包含任何内容长度信息。
服务器收到请求后,由于缺少必要的鉴权信息,向客户端返回了401 Unauthorized错误消息。该消息包含了服务器需要的鉴权信息类型(Digest),并要求客户端重新发送带有正确鉴权信息的注册请求。消息中还包含了一些用于验证的信息,如nonce值等。
客户端收到服务器的回复后,通过Authorization头字段携带了所需的鉴权信息(如用户名和密码),重新发送注册请求。新的请求中包含了一个新的呼叫ID和注册序列号(由原先的1变为现在的2)。该请求也包含了先前服务器返回的nonce值和其他鉴权参数。这些信息用于验证客户端的身份和授权其访问SIP服务。还包含了设备的有效期信息(Expires)。
服务器收到新的注册请求后,将验证其中的鉴权信息是否正确。如果验证成功,服务器将向客户端发送一个确认消息(SIP/2.0 200 OK),表示注册成功并接受设备的访问请求。确认消息中包含了与原始请求相同的许多字段信息,同时指定了设备可以在服务器问的时间长度(Expires)。如果验证失败,服务器将继续发送401 Unauthorized消息要求重新认证。
