Skip to main content

20. 头字段 (Header Fields)

本章描述了SIP消息中使用的所有标准头字段。头字段遵循HTTP/1.1头字段的一般形式和语法规则。

头字段概述

SIP头字段可以分为以下几类:

  • 通用头字段: 适用于请求和响应
  • 请求头字段: 仅在请求中使用
  • 响应头字段: 仅在响应中使用
  • 实体头字段: 描述消息体

主要头字段参考表

必需头字段

头字段类型说明
Call-ID通用唯一标识呼叫的标识符
CSeq通用命令序列号
From通用发起者地址
To通用接收者地址
Via通用传输路径
Max-Forwards请求跳数限制

常用头字段

头字段类型说明
Contact通用直接联系地址
Content-Length实体消息体长度
Content-Type实体消息体类型
Expires通用过期时间
Record-Route请求/响应记录路由路径
Route请求强制路由路径

头字段详细说明

20.1 Accept

类型: 请求
说明: 指示UAC可接受的媒体类型

20.2 Accept-Encoding

类型: 请求
说明: 指示可接受的内容编码

20.3 Accept-Language

类型: 请求
说明: 指示首选语言

20.4 Alert-Info

类型: 请求/响应
说明: 指定要渲染的替代铃声

20.5 Allow

类型: 响应
说明: 列出UA支持的方法

20.6 Authentication-Info

类型: 响应
说明: 提供认证的相互认证信息

20.7 Authorization

类型: 请求
说明: 包含用户代理的认证凭证

20.8 Call-ID

类型: 通用(必需)
说明: 唯一标识一组消息的全局唯一标识符
示例: Call-ID: [email protected]

20.9 Call-Info

类型: 通用
说明: 提供关于呼叫者或被叫者的附加信息

20.10 Contact

类型: 通用
说明: 提供用于联系UA的URI
用途:

  • 在INVITE中指定会话的直接路由
  • 在REGISTER中提供绑定
  • 在3xx响应中提供重定向地址

20.11 Content-Disposition

类型: 实体
说明: 描述消息体的处理方式

20.12 Content-Encoding

类型: 实体
说明: 指示应用于消息体的编码

20.13 Content-Language

类型: 实体
说明: 描述消息体的语言

20.14 Content-Length

类型: 实体(必需当有消息体时)
说明: 指示消息体的大小(字节)
示例: Content-Length: 349

20.15 Content-Type

类型: 实体
说明: 指示消息体的媒体类型
示例: Content-Type: application/sdp

20.16 CSeq

类型: 通用(必需)
说明: 序列号和方法名
示例: CSeq: 4711 INVITE

20.17 Date

类型: 通用
说明: 消息发起的日期和时间

20.18 Error-Info

类型: 响应
说明: 提供关于错误的额外信息的URI

20.19 Expires

类型: 通用
说明: 消息内容过期的相对时间
用途:

  • REGISTER: 注册有效期
  • INVITE: 会话有效期

20.20 From

类型: 通用(必需)
说明: 指示请求发起者的逻辑身份
包含: 显示名称、URI、tag参数
示例: From: Alice <sip:[email protected]>;tag=1928301774

20.21 In-Reply-To

类型: 请求
说明: 枚举此呼叫引用或返回的Call-ID

20.22 Max-Forwards

类型: 请求(必需)
说明: 限制请求可以转发的次数
默认值: 70
示例: Max-Forwards: 70

20.23 Min-Expires

类型: 响应
说明: 在423响应中指示最小过期间隔

20.24 MIME-Version

类型: 通用
说明: 指示MIME版本
固定值: MIME-Version: 1.0

20.25 Organization

类型: 通用
说明: 标识发出请求或响应的组织

20.26 Priority

类型: 请求
说明: 指示请求对客户端的紧急程度
: emergency, urgent, normal, non-urgent

20.27 Proxy-Authenticate

类型: 响应(407)
说明: 包含代理服务器的认证挑战

20.28 Proxy-Authorization

类型: 请求
说明: 允许客户端标识自己(或其用户)到需要认证的代理

20.29 Proxy-Require

类型: 请求
说明: 列出代理必须支持的选项

20.30 Record-Route

类型: 请求/响应
说明: 由代理插入以强制路由路径
用途: 确保后续请求经过同一代理集

20.31 Reply-To

类型: 请求
说明: 提供应该联系的URI

20.32 Require

类型: 请求
说明: 列出UAS必须支持的选项

20.33 Retry-After

类型: 响应
说明: 指示服务何时可用
用于: 503, 404, 413, 480, 486, 600, 603

20.34 Route

类型: 请求
说明: 提供请求必须遵循的路由路径

20.35 Server

类型: 响应
说明: 包含关于UAS处理请求的软件信息

20.36 Subject

类型: 请求
说明: 提供会话主题的简要摘要

20.37 Supported

类型: 通用
说明: 列出UA支持的扩展

20.38 Timestamp

类型: 请求
说明: 描述UAC何时发送请求

20.39 To

类型: 通用(必需)
说明: 指定请求的逻辑接收者
包含: 显示名称、URI、tag参数
示例: To: Bob <sip:[email protected]>;tag=a6c85cf

20.40 Unsupported

类型: 响应(420)
说明: 列出请求中不支持的功能

20.41 User-Agent

类型: 请求
说明: 包含关于发起请求的UAC的信息

20.42 Via

类型: 通用(必需)
说明: 指示请求和响应经过的路径
包含: 协议版本、传输、主机、分支参数
示例: Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds

20.43 Warning

类型: 响应
说明: 携带关于消息状态或转换的额外信息

20.44 WWW-Authenticate

类型: 响应(401)
说明: 包含UAS的认证挑战


头字段分类

按功能分类

身份和路由:

  • Call-ID, From, To, Via, Contact
  • Route, Record-Route

认证和安全:

  • Authorization, Proxy-Authorization
  • WWW-Authenticate, Proxy-Authenticate
  • Authentication-Info

内容描述:

  • Content-Type, Content-Length
  • Content-Encoding, Content-Language
  • Content-Disposition

协议控制:

  • CSeq, Max-Forwards, Expires
  • Require, Proxy-Require, Supported
  • Allow, Accept

用户信息:

  • Subject, Priority, Organization
  • User-Agent, Server

头字段紧凑形式

某些头字段有紧凑形式以减少消息大小:

完整形式紧凑形式
Call-IDi
Contactm
Content-Encodinge
Content-Lengthl
Content-Typec
Fromf
Subjects
Supportedk
Tot
Viav

示例:

完整形式:
Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
From: Alice <sip:[email protected]>;tag=1928301774
To: Bob <sip:[email protected]>
Call-ID: [email protected]

紧凑形式:
v: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds
f: Alice <sip:[email protected]>;tag=1928301774
t: Bob <sip:[email protected]>
i: [email protected]

头字段使用规则

必需头字段(所有请求/响应)

  • Call-ID
  • CSeq
  • From
  • To
  • Via

请求特定必需头字段

  • Max-Forwards

消息体相关

  • Content-Type(当有消息体时推荐)
  • Content-Length(当有消息体时必需,或流式传输时)

重要头字段详解

Via头字段

作用: 记录请求路径,用于路由响应

组成部分:

  • 协议版本 (SIP/2.0)
  • 传输协议 (UDP/TCP/TLS/SCTP)
  • sent-by (主机:端口)
  • 分支参数 (branch)
  • received参数 (服务器添加)
  • rport参数 (NAT穿越)

示例:

Via: SIP/2.0/UDP pc33.atlanta.com:5060;branch=z9hG4bK776asdhds
Via: SIP/2.0/TCP proxy1.example.com;branch=z9hG4bKnashds7;received=192.0.2.1

Contact头字段

作用: 提供直接联系URI

用途:

  • INVITE: 建立直接媒体路径
  • REGISTER: 提供注册绑定
  • 3xx响应: 提供重定向地址

参数:

  • expires: 绑定有效期
  • q: 优先级 (0.0-1.0)

示例:

Contact: <sip:[email protected]:5060>;expires=3600
Contact: <sip:[email protected]>;q=0.7;expires=3600
Contact: "Bob" <sip:[email protected]>;methods="INVITE,ACK,BYE"

Record-Route头字段

作用: 强制后续请求经过代理

使用场景:

  • 代理需要保持在对话路径上
  • 防火墙穿越
  • 监控/记账需求

示例:

Record-Route: <sip:proxy1.example.com;lr>
Record-Route: <sip:proxy2.example.com;lr>,<sip:proxy1.example.com;lr>

关键要点

  1. 必需头字段: Call-ID, CSeq, From, To, Via, Max-Forwards
  2. 紧凑形式: 减少消息大小,主要用于无线网络
  3. Via路径: 记录请求路径,用于响应路由
  4. Contact: 提供直接联系地址,避免通过代理
  5. Record-Route: 强制对话内请求经过相同代理
  6. 认证头字段: Authorization, WWW-Authenticate等用于安全
  7. 内容头字段: 描述消息体的类型、长度、编码
  8. 扩展性: Require, Supported, Allow支持协议扩展

本章小结:

第20章详细定义了SIP协议中使用的44个标准头字段。这些头字段涵盖了身份标识、路由控制、内容描述、认证安全等各个方面。理解这些头字段的含义和使用规则对于正确实现SIP应用至关重要。必需头字段(Call-ID, CSeq, From, To, Via, Max-Forwards)必须出现在所有消息中,而其他头字段根据消息类型和用途选择性使用。