日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIP消息路由

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIP消息路由 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文通過一個(gè)完整的SIP呼叫實(shí)例解釋SIP頭部的一些常見字段,在對(duì)這些字段的解釋的同時(shí)也闡述了SIP消息的路由過程。下圖是呼叫的消息流示意圖和所有的消息頭部(因?yàn)镾DP和消息路由無關(guān),故在此省略):

???????????????????? atlanta.com? . . . biloxi.com

???????????????? .????? proxy????????????? proxy???? .

?????????????? .????? ?????????????????????????????????.

?????? Alice's? . . . . . . . . . . . . . . . . . . . .? Bob's

????? softphone??????????????????????????????????????? SIP Phone

???????? |??????????????? |??????????????? |??????????????? |

???????? |??? INVITE F1?? |??????????????? |??????????????? |

???????? |--------------->|??? INVITE F2?? |??????????????? |

???????? |? 100 Trying F3 |--------------->|??? INVITE F4?? |

???????? |<---------------|? 100 Trying F5 |--------------->|

??????? ?|??????????????? |<-------------- | 180 Ringing F6 |

???????? |??????????????? | 180 Ringing F7 |<---------------|

???????? | 180 Ringing F8 |<---------------|???? 200 OK F9? |

???????? |<---------------|??? 200 OK F10? |<---------------|

???????? |??? 200 OK F11? |<---------------|??????????????? |

???????? |<---------------|??????????????? |??????????????? |

???????? |?????????????????????? ACK F12??????????????????? |

???????? |------------------------------------------------->|

???????? |????????????? ?????Media Session????????????????? |

???????? |<================================================>|

???????? |?????????????????????? BYE F13??????????????????? |

???????? |<-------------------------------------------------|

???????? |???????????????????? 200 OK F14?????????????????? |

???????? |------------------------------------------------->|

???????? |????????????????????????????????????????????????? |

?

F1 INVITE Alice -> atlanta.com proxy

?

INVITE sip:bob@biloxi.com SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

Max-Forwards: 70

To: Bob <sip:bob@biloxi.com>

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

F2 100 Trying atlanta.com proxy -> Alice

?

SIP/2.0 100 Trying

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Content-Length: 0

F3 INVITE atlanta.com proxy -> biloxi.com proxy

?

INVITE sip:bob@biloxi.com SIP/2.0

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

Max-Forwards: 69

To: Bob <sip:bob@biloxi.com>

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

F4 100 Trying biloxi.com proxy -> atlanta.com proxy

?

SIP/2.0 100 Trying

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Content-Length: 0

F5 INVITE biloxi.com proxy -> Bob

?

INVITE sip:bob@192.0.2.4 SIP/2.0

Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

Max-Forwards: 68

To: Bob <sip:bob@biloxi.com>

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:alice@pc33.atlanta.com>

Content-Type: application/sdp

Content-Length: 142

F6 180 Ringing Bob -> biloxi.com proxy

?

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

?;received=192.0.2.3

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F7 180 Ringing biloxi.com proxy -> atlanta.com proxy

?

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F8 180 Ringing atlanta.com proxy -> Alice

?

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

Contact: <sip:bob@192.0.2.4>

CSeq: 314159 INVITE

Content-Length: 0

F9 200 OK Bob -> biloxi.com proxy

?

SIP/2.0 200 OK

Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1

?;received=192.0.2.3

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

F10 200 OK biloxi.com proxy -> atlanta.com proxy

?

SIP/2.0 200 OK

Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1

?;received=192.0.2.2

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

F11 200 OK atlanta.com proxy -> Alice

?

SIP/2.0 200 OK

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8

?;received=192.0.2.1

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 INVITE

Contact: <sip:bob@192.0.2.4>

Content-Type: application/sdp

Content-Length: 131

F12 ACK Alice -> Bob

?

ACK sip:bob@192.0.2.4 SIP/2.0

Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9

Max-Forwards: 70

To: Bob <sip:bob@biloxi.com>;tag=a6c85cf

From: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 314159 ACK

Content-Length: 0

F13 BYE Bob -> Alice

?

BYE sip:alice@pc33.atlanta.com SIP/2.0

Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10

Max-Forwards: 70

From: Bob <sip:bob@biloxi.com>;tag=a6c85cf

To: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 231 BYE

Content-Length: 0

F14 200 OK Alice -> Bob

?

SIP/2.0 200 OK

Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10

From: Bob <sip:bob@biloxi.com>;tag=a6c85cf

To: Alice <sip:alice@atlanta.com>;tag=1928301774

Call-ID: a84b4c76e66710

CSeq: 231 BYE

Content-Length: 0

1. SIP消息頭部主要字段:

·???????? Request-URIRequest消息的第一行中method后面緊跟的部分就是Request-URI(本例中的sip:bob@biloxi.com)該值在消息經(jīng)過Proxy之后就有可能發(fā)生變化,變成消息路徑中Next HopURI

·???????? To包含的是最終用戶的Public address,消息無論被Proxy多少次該值都不會(huì)改變。當(dāng)最終用戶開始回應(yīng)第一個(gè)Response消息時(shí)(比如本例中的180 Ring)會(huì)在To中加上本地唯一的一個(gè)tag值。

·???????? From包含Request消息發(fā)起者的URI,也不會(huì)被Proxy改變;在生成Reqeust消息時(shí)就會(huì)在后面加上一個(gè)本地唯一的tag值。

·???????? Call-Id:用來標(biāo)識(shí)一個(gè)唯一的Session,整個(gè)Session期間的所有消息的Session-Id都是相同的。

·???????? Max-Forwards:消息可被轉(zhuǎn)發(fā)的最大次數(shù),每經(jīng)過一個(gè)Proxy,該值就會(huì)被減一。

·???????? CSeq:該屬性由一個(gè)整數(shù)和一個(gè)method名字兩部分組成;整數(shù)部分的作用是用來對(duì)同一個(gè)Session中的Request消息進(jìn)行排序的;從第一個(gè)Invite消息發(fā)出后,隨后的所有Request消息(ACK和Cancel除外)中的CSeq值都依次加一。比如Alice與Bob的通話過程中Alice想修改會(huì)話的一些屬性,于是她便發(fā)起第二個(gè)Invite消息,這個(gè)Invite消息中的CSeq就需要加一;在比如Alice給Bob發(fā)送了一個(gè)Invite消息,而Bob發(fā)回的200 OK發(fā)生延時(shí),于是Alice又發(fā)送第二個(gè)Invite消息,此時(shí)對(duì)第一個(gè)Invite消息的200 OK到達(dá),Alice根據(jù)200 OK中的CSeq便可以知道這是對(duì)第一個(gè)Invite消息的應(yīng)答。Request消息Cancel和Ack中的CSeq和與之對(duì)應(yīng)的Invite消息中的CSeq值是一致的。

·???????? Via:該屬性記錄了消息的路由。Request消息被生成的時(shí)候只有一個(gè)Via,那就是本地的URI,此后消息每經(jīng)過一個(gè)Proxy,Proxy都會(huì)在消息中插入一個(gè)Via記錄下自己的URI。當(dāng)最終用戶發(fā)揮Response消息時(shí),會(huì)從Request消息中拷貝所有的Via,然后按照反序進(jìn)行路由,每經(jīng)過一個(gè)Proxy,該P(yáng)roxy就會(huì)將包含自己URI的Via刪除,這樣當(dāng)Response消息最終到達(dá)Request發(fā)起端的時(shí)候就只剩下一個(gè)Via了。

·???????? Contact:該屬性包含了用戶可以被直接找到的一個(gè)URI,Request發(fā)起方會(huì)在Request消息中加入該值,接收方會(huì)在第一個(gè)Response(該例中的180 Ring)中加入該值。利用這個(gè)URI,此后再發(fā)起Request消息時(shí)就直接發(fā)送到對(duì)方了,而無需經(jīng)過Proxy,比如本例中的F12 ACK消息,由于之前通過交換Contact值,Alice知道如何能直接找到Bob,于是在第一行的SIP-URI中填上Bob所提供的Contact值,將ACK消息直接發(fā)送給Bob而無需經(jīng)過Proxy,注意To中仍然是原先的值。

·???????? Route and Record-Route:這兩個(gè)屬性都是有Proxy加入的;上面提到Contact屬性可以讓隨后的Reqeust消息繞過Proxy而直接發(fā)給最終用戶。有時(shí)候處于安全或者其他方面的原因,Proxy希望所有的消息都必須經(jīng)過Proxy,那么這時(shí)候Proxy就需要在經(jīng)過它的第一個(gè)Request消息中插入該屬性記錄自己的URI,這樣此后的Request消息就必須按照該屬性中指定的路徑路由。

?

2. 對(duì)以上幾個(gè)頭部屬性簡(jiǎn)單概括一下:

·???????? SIP-URI是一個(gè)Hop-to-Hop的屬性,所以有可能被Proxy改變;

·???????? From和To屬性在消息的路由過程中一直保持不變;它們?cè)赗equest消息中確定,此后對(duì)端發(fā)來的所有Response消息的From和To都是原樣拷貝Request消息中的From和To;

·???????? Via是用來幫助Response消息進(jìn)行路由的,Contact是用來供隨后的Request消息進(jìn)行路由的。

參考資料:

1.? “RFC 3261”- Section 4,Section 12,Section 17,Section 24;

2.? “SIP Demystified”- Chapter 4, Chapter 5;

總結(jié)

以上是生活随笔為你收集整理的SIP消息路由的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。