第一章 SIP 协议主要消息1.1 SIP 消息分类SIP 协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。SIP 协议将 Server 和 UserAgent 之间的通讯的消息分为两类:请求消息和响应消息。请求消息:客户端为了激活特定操作而发给服务器的 SIP 消息,包括 INVITE、ACK、BYE、CANCEL、OPTION 和 UPDATE 消息。SIP 请求的 6 种方法:1、邀请(INVITE)——邀请用户加入呼叫2、确认(ACK)——确认客户机已经接收到对 INVITE 的最终响应3、可选项(OPTIONS)——请求关于服务器能力的信息4、再见(BYE)——终止呼叫上的两个用户之间的呼叫5、取消(CANCEL)6、注册(REGISTER)——提供地址解析的映射,让服务器知道其它用户的位置响应消息:服务器向客户反馈对应请求的处理结果的 SIP 消息,包括 1xx、2xx、3xx、4xx、5xx、6xx 响应1.2 SIP 消息结构请求消息和响应消息都包括 SIP 消息头字段和 SIP 消息体字段;SIP 消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;SIP 消息体主要用来描述本次会话具体实现方式;1.3 消息格式1.3.1 请求消息格式SIP 请求消息的格式,由 SIP 消息头和一组参数行组成,如图 1-1 所示。通过换行符区分命令行和每一条参数行。命令名称对端 URI 协议版本Call-id:值via:值From:值To:值Contact:值Cseq 值Content-Length 值Max-Forward 値Content-Type 值WhiteSpaceSDP消息图 1-1SIP 请求消息结构注意:参数行的顺序不是固定的。对应的参数解释错见误!未找到引用源。。消息体定义:Call-ID:头字段是用来将消息分组的唯一性标识From:头字段是指示请求发起方的逻辑标识,它可能是用户的注册地址。From 头字段包含一个 URI 和一个可选的显示名称CSeq:头字段用于标识事务并对事务进行排序。它由一个请求方法和一个序列号组成,请求方法必须与对应的请求消息类型一致Max-Fowords:头字段限定一个请求消息在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳,这个值就被减一。如果在请求消息到达目的地之前该值变为零,那么请求将被拒绝并返回一个 483(跳数过多)错误响应消息。Via:头字段定义 SIP 事务的下层(传输层)传输协议,并标识响应消息将要被发送的位置。只有当到达下一跳所用的传输协议被选定后,才能在请求消息中加入 Via 头字段值。expires:参数指出了...