2011-12-12 67 views

回答

1

在您的文件中搜索RFC3550中定義的RTP標頭。或者更好地使用pcap-filter,例如this wiki(查找「問:什麼是捕獲SIP和RTP包的好過濾器?」)。

+0

+1爲過濾器和-1爲檢查RTP標頭(它是不可能的,是爲不同的目的而設計的),所以= 0 :) –

+0

哈哈...很高興你解釋我你的非upvoting:D –

+3

然而,那RTP過濾器對RTP頭進行過濾。如果你想要這個可靠的,你必須解析SIP,或者使用任何呼叫控制協議,提取RTP信息 - SIP內部的SDP將傳送用於RTP的地址和端口,並查找與這些值匹配的數據包(這意味着你需要一個基本的呼叫狀態機來跟蹤呼叫) – nos

1

如果你想看到的Wireshark的RTP業務則:

  1. 選擇Analyze->顯示過濾器...
  2. 選擇 「UDP」,OK
  3. 任何UDP數據包用鼠標右鍵點擊選擇「Decode as ...」
  4. 從列表中選擇「RTP」,確定
  5. 現在您可以看到所有RTP數據包。

希望有所幫助。 :)

p.s.編輯注意到這是針對Wireshark的。感謝評論員指出了這一點!

+0

當問題根本沒有提及任何應用程序時,您似乎會指示特定的應用程序。 –

+0

感謝您指出。編輯,以確保這是明確的。 –

1

檢查@macs有關PCap過濾器的建議。如果這不能滿足您的需求(例如,您需要過濾掉特定SIP會話的RTP數據包),那麼沒有簡單的方法。您需要解析SIP消息,檢索RTP端口號,在特定時間段內從這些端口接收數據包,(可選)通過檢查這些數據包是否爲RTP(檢查其標頭中的magic number)來檢查這些數據包是否爲RTP

0

開源軟件提取一個PCAP文件中的RTP/RTCP包是:

從源代碼中可以查看理解所使用的方法。

我可以獲取sip數據包,但我無法區分其餘的RTP數據包 。

如果你能夠解碼SIP,那麼你可以找到(在INVITE消息中)SDP消息。如果您解碼它,您可以找到RTP「流」(和RTCP =>端口+ 1)的IP和端口。通過這些信息,您可以唯一地識別RTP和RTCP數據包。請記住,STUN協議通常包(帶有相同的IP-PORT)必須與RTP分開。 您必須考慮數據包捕獲的位置(網絡上下文和約束條件),您可能會考慮到NAT。