SIP里面的To和From字段是用来显示请求的方向,而不是消息的方向,方向是从请求方指向服务方。

上图显示了两个启用了SIP的设备之间的 SIP 消息交互。 这两个设备可以是 SIP 电话、 手持设备、 掌上电脑或手机。 它假定两个设备已经连接到 IP 网络比如互联网,并且已经知道彼此的 IP 地址。
主叫方Tesla通过发送的一条SIP INVITE给被叫方Marconi来启动信息交互。 在 这条INVITE请求消息中包含了关于主叫方请求的会话或呼叫类型方面的细节。 它可以是一个简单的语音 (音频) 会话、类似于视频会议的多媒体会话或者它可能是一个游戏会话。
这条INVITE 消息包含以下内容:
INVITE sip:marconi@radio.org SIP/2.0
Via: SIP/2.0/UDP lab.high-voltage.org:5060;branch=z9hG4bKfw19b
Max-Forwards: 70
To: G. Marconi <sip:Marconi@radio.org>
From: Nikola Tesla <sip:n.tesla@high-voltage.org>;tag=76341
Call-ID: 123456789@lab.high-voltage.org
CSeq: 1 INVITE
Subject: About That Power Outage...
Contact: <sip:n.tesla@lab.high-voltage.org>
Content-Type: application/sdp
Content-Length: 158
v=0
o=Tesla 2890844526 2890844526 IN IP4 lab.high-voltage.org
s=Phone Call
c=IN IP4 100.101.102.103
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
因为SIP消息是基于文本编码的协议,所以这使得SIP消息看起来像UDP数据报在以太网上传输那样的在线传输。
INVITE消息中列出来的区域被称为头部区域。
它们都有着这样的形式:
头标记:值 CRLF。
第一行被称为开始行,该行标记了一种称为INVITE的方法,后面跟着的是请求的URI(Request-URI),最后是SIP版本号码2,它们之间使用空格来加以区分。SIP消息的每一行都用过CRLF来终结。请求的URI是SIP URI的一种特殊形式,它指明了请求要被发送到的资源,它也被称作请求目标。
第二行的第一个字段是VIA,
每一个SIP设备产生或者转发一条SIP消息的时候都会在Via字段里面加上自己的地址
,一般都是可以通过DNS解析的IP地址。Via字段包含了SIP版本 2.0,紧跟一个“/”,之后的UDP表示通过UDP进行传输,然后接着一个空格,接着是主机名或者IP地址,接着分号,最后是端口值。在上面的这个例子中是通用的SIP端口号5060。SIP的传输采用TCP、UDP、TLS和SCTP。端口号将在章节后面些的内容进行描述。
Branch参数是一个传输标记符。针对这条SIP信息的后续响应可以被相互关联上就是因为它们包含一样的传输标记。
下一行的头标记是Max-Forwards,它被初始化为一个整数值,每个SIP服务器在接受和转发这个请求的过程中都会增加这个值,这个将简化环回检测。
下一行就是To和From行了,它们标识了SIP请求的发起者和目标。如同本例一样,在名字标签被使用的情况下,SIP URI就被放在了括弧内,它将被使