2012-12-09 87 views
2

假設有一個SIP客戶端在100.0.0.100:5059監聽。SIP客戶端應該向INVITE發送回覆?

它從10.0.0.101:5060收到一個UDP數據包,裏面帶有某些標頭的INVITE。例如:

  • Contact: <sip:100.0.0.102:5060>
  • Record-Route: <sip:100.0.0.103:5060>(第一個這樣的報頭的)
  • Route: <sip:100.0.0.104:5060>
  • Via: <sip:100.0.0.105:5060>(第一個這樣的報頭)

它應該在哪裏發送 「ACK」, 「Tryinng」,「對話建立」,「BYE」等東西? 100.0.0.what? (背景:試圖將「整個SIP在單個TCP連接中」封裝,將SIP中看到的所有地址轉換爲自身,但獲得「Request Timeout」,「Loop detected」,「Relaying frobidden」最後只有15秒......可能是因爲包裝器做錯了什麼......爲什麼在頭文件和應用程序/ sdp中有這麼多令人困惑的IP地址?)。

回答

0

RFC 3261 section 18.2.2告訴你該怎麼做。在算法的第三步是應用的一個:

o Otherwise (for unreliable unicast transports), if the top Via 
    has a "received" parameter, the response MUST be sent to the 
    address in the "received" parameter, using the port indicated 
    in the "sent-by" value, or using port 5060 if none is specified 
    explicitly. If this fails, for example, elicits an ICMP "port 
    unreachable" response, the procedures of Section 5 of [4] 
    SHOULD be used to determine where to send the response. 
    o Otherwise, if it is not receiver-tagged, the response MUST be 
    sent to the address indicated by the "sent-by" value, using the 
    procedures in Section 5 of [4]. 

[4]here

通過TCP接收請求更簡單:您可以通過打開的連接發送請求。否則,如果存在最上面的Via的參數received,或者如果不存在該標頭的sent-by標記,則打開TCP連接到IP地址。如果該嘗試失敗,則必須回溯到上述RFC 3263中的算法。

+0

哪些客戶端能夠向域發送邀請? – Thufir

相關問題