sip与sdp

sip协议基础
会话初始协议(seesion initiation protocol)是一个控制发起,修改和终结交互式多媒体会话的信令协议。
sip是一个基于文本的协议。http请求与sip请求:


http:
GET /index.html HTTP/1.1
SIP:
INVITE sip:seven@freeswitch.org.cn SIP/2.0

在http请求中,GET指明一个获取资源的动作,/index.html则是资源的地址,最后HTTP/1.1是协议版本号;而在SIP中,INVITE表示发起一次呼叫请求,[email protected]为请求的地址,第三部分的sip/2.0也是版本号。

sip与sdp_第1张图片

sip和sdp:

Sip负责建立和释放会话,一般来说,会话会包含相关的媒体,如视频和音频。媒体数据是有sdp描述的。Sdp一般不单独使用,他与sip配合使用时会放到sip协议的征文(boby)中。
会话建立时,需要媒体协商,双方才能确定对方的媒体能力以及交换媒体数据。(这就是sdp的工作)
sip与sdp_第2张图片

一个空行把sip头和sip正文部分隔开。
主要介绍一下sdp的内容:
1 v=:Version ,表示协议的版本号
2 o=: Origin,表示源。值域中各项的含义依次是username(用户名),sess-id(会话ID),sess-version(会话版本号),nettype(网络类型),addrtype(地址类型),unucast-address(单播地址)。
3 s=:Session Name,表示本sdp所描述的session的名称
4 c=:Connection Data 链接数据。其中值域中以空格分配的两个字段分贝是网络类型和网络地址,以后的RTP流就会发到该地址上。
5 b=:Badwidth type,带宽类型
6 t=:Timing ,起止时间,0表示无限
7 m=:audio Media Type,媒体类型。audio表示音频,50452表示音频端口号,RTP/AVR是传输协议;后面是支持的Codec类型,与RTP流中的PayloadType(载荷类型)相对应,在这里分别是8,0,98和101,8和0分别代表PCMA和PCMU,他们属于静态编码,大于95的编码都属于动态编码,需要在后面使用“a=rtpmap”进行说明。
8 a=: Attributes,属性。 它用于描述上面的音频的属性。如本例中98代表8000hz的ILBC编码,101代表RFC2833dtmf事件。a=sendrecv表示该媒体流可用于收和发,其他的还有sendonly(仅收),recvonly(仅发)和inactive(不收不发)
9 v=:Video,视频。
媒体流的协商过程称为soa。通俗的讲,他首先由一方提供支持的codec类型,由另一方选择。


Sip承载:http使用tcp承载的,而sip则支持tcp和udp承载。我们常见的sip都是用udp承载的,由于udp是面向无连接的,在大并发量的情况下与tcp相比较可也减少开销。但超出了ip层窗口的大小,在经过路由器的时候可能会被拆包,造成消息可能丢失,乱序,这时候就是用tcp.

你可能感兴趣的:(sip)