Domanda

Sto usando SharpPcap che è costruito su WinPCap per catturare il traffico UDP. Il mio obiettivo finale è quello di catturare i dati audio da H.323 e salvare quelle conversazioni telefoniche come file WAV. Ma prima cosa che viene prima - ho bisogno di capire che cosa i miei pacchetti UDP attraversano il NIC.

SharpPcap fornisce una classe UdpPacket che mi dà l'accesso alla PayloadData del messaggio. Ma sono sicuro di cosa fare con questi dati. Si tratta di una matrice Byte [] e non so come fare per determinare se si tratta di un pacchetto RTP o RTCP.

Googled questo argomento, ma non c'è molto là fuori. Ogni aiuto è apprezzato.

È stato utile?

Soluzione

Guarda le definizioni per RTP e RTCP pacchetti in RFC 3550 :

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

I non riprodurre la leggenda per tutto quanto sopra - è piuttosto lungo - ma dare un'occhiata a Sezione 5.1 .

Con questo in mano vedrete non c'è molto che si può fare per determinare se a pacchetto contiene RTP / RTCP. Meglio di tutti sarebbe quello di annusare, come altri utenti hanno suggerito, i Media Stream negoziazione. Secondo migliore sarebbe qualche corrispondenza sort've reticolo su una sequenza di pacchetti: i primi due bit saranno 10, seguito dal successivo due bit è costante, seguito dai bit da 9 a 15 è costante, quindi 16 -> 31 incremento, e così via.

Altri suggerimenti

Vorrei guardare i rivelatori dei pacchetti in Wireshark, in grado di decodificare i protocolli più comuni disponibili.

Credo che hai bisogno di guardare ai pacchetti SIP che vengono prima i pacchetti RTP.

una discussione su questo tema sul sito Pcap.Net .

Se communucations sono fatte su RTSP, date un'occhiata alla porta UDP che è negoziato al momento della configurazione.

la porta UDP vi dirà se si tratta di RTP o RTCP (anche la pena notare che la RTP è fatto solitamente sopra i numeri di porta pari e RTCP su dispari).

Infine, se si sta comunicando tramite RTSP si può prendere l'elenco dei numeri payload dal file SDP dal descrivere e quindi controllare il tipo di payload nell'intestazione RTP a dire il codec è necessario per decodificare il carico utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top