{"id":87043,"date":"2020-07-02T19:42:04","date_gmt":"2020-07-02T17:42:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8"},"modified":"2020-07-02T19:42:04","modified_gmt":"2020-07-02T17:42:04","slug":"izuchaem-voip-dvizhok-mediastreamer2-chast-8","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","title":{"rendered":"Esplorando il motore VoIP Mediastreamer2. Parte 8","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Il materiale dell'articolo \u00e8 tratto dal mio <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">canale Zen<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Esplorando il motore VoIP Mediastreamer2. Parte 8\" src=\"\/wp-content\/uploads\/2020\/07\/ddc5dba3a090dec9927b46a82dda760f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"struktura-rtp-paketa\">Struttura del pacchetto RTP<\/h2>\n<p><\/p>\n<p>Nel passato <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496490\/\">articolo<\/a><\/noindex> abbiamo utilizzato <em>TShark<\/em> per catturare i pacchetti RTP, che sono stati scambiati tra il nostro ricevitore e trasmettitore. In questo caso, coloreremo gli elementi del pacchetto in diversi colori e parleremo della loro funzione. <\/p>\n<p><\/p>\n<p>Diamo un'occhiata allo stesso pacchetto, ma gi\u00e0 con i campi colorati e con annotazioni esplicative:<br \/>\n<img decoding=\"async\" alt=\"Esplorando il motore VoIP Mediastreamer2. Parte 8\" src=\"\/wp-content\/uploads\/2020\/07\/a2ee8fb10bc6daa48dcd0bc9a8596fd7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Nella parte inferiore della lista sono colorati i byte che compongono il pacchetto RTP, che \u00e8 a sua volta il payload del pacchetto UDP (il suo intestazione \u00e8 evidenziata da una linea nera). I byte dell'intestazione RTP sono contrassegnati con sfondi colorati, mentre il blocco di dati, che contiene il payload del pacchetto RTP, \u00e8 evidenziato in verde. I dati sono presentati in formato esadecimale. Nel nostro caso, si tratta di un segnale audio compresso secondo la legge u (legge mu), cio\u00e8 ogni campione ha una dimensione di 1 byte. Poich\u00e9 abbiamo utilizzato il tasso di campionamento predefinito (8000 Hz), ad una frequenza di pacchetti di 50 Hz, ogni pacchetto RTP dovrebbe contenere 160 byte di payload. Questo \u00e8 ci\u00f2 che vedremo, contando i byte nell'area verde; dovrebbero essere 10 righe. <\/p>\n<p><\/p>\n<p>Secondo lo standard, la quantit\u00e0 di dati nel payload deve essere un multiplo di quattro, o in altre parole deve contenere un numero intero di parole di quattro byte. Se il tuo payload non rispetta questa regola, \u00e8 necessario aggiungere byte con valori nulli alla fine del payload e impostare il bit di Padding. Questo bit si trova nel primo byte dell'intestazione RTP, evidenziato in turchese. Si noti che tutti i byte del payload hanno il valore 0xFF: questo rappresenta il silenzio nel formato u-law.<\/p>\n<p><\/p>\n<p>L'intestazione del pacchetto RTP \u00e8 composta da 12 byte obbligatori, ma in due casi pu\u00f2 essere pi\u00f9 lunga:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>Quando il pacchetto trasporta un segnale audio ottenuto dalla mescolanza di segnali provenienti da pi\u00f9 fonti (flussi RTP), dopo i primi 12 byte dell'intestazione si trova una tabella con l'elenco degli identificatori delle fonti il cui payload \u00e8 stato utilizzato per creare il payload di questo pacchetto. In questo caso, nei quattro bit meno significativi del primo byte dell'intestazione (campo <em>Conteggio degli identificatori di sorgente contribuenti<\/em>) indica il numero di sorgenti. La dimensione del campo \u00e8 di 4 bit, pertanto la tabella pu\u00f2 contenere fino a 15 identificatori di sorgenti, ognuno dei quali occupa 4 byte. Questa tabella \u00e8 utilizzata per organizzare la videoconferenza.<\/p>\n<p>\n<\/li>\n<li>\n<p>Quando l'intestazione ha un'estensione. In questo caso, nel primo byte dell'intestazione viene impostato un bit <strong>X<\/strong>. Nell'intestazione estesa, dopo la tabella dei partecipanti (se presente), si trova l'intestazione dell'estensione, di dimensione pari a una parola, seguita dalle parole di estensione. L'estensione \u00e8 un insieme di byte che puoi utilizzare per trasmettere dati aggiuntivi. Lo standard non specifica il formato di questi dati - pu\u00f2 essere qualsiasi cosa. Ad esempio, potrebbero essere alcune impostazioni aggiuntive per il dispositivo che riceve i pacchetti RTP. Per alcune applicazioni, tuttavia, sono stati sviluppati standard per l'intestazione estesa. Questo \u00e8 il caso, ad esempio, per i mezzi di comunicazione nello standard <em>ED-137 (Standard di interoperabilit\u00e0 per i componenti VoIP ATM)<\/em>. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Esaminiamo ora i campi dell'intestazione in modo pi\u00f9 dettagliato. Di seguito \u00e8 riportata un'immagine canonica con la struttura dell'intestazione RTP, che ho anche colorato con gli stessi colori.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Esplorando il motore VoIP Mediastreamer2. Parte 8\" src=\"\/wp-content\/uploads\/2020\/07\/b8839a56fbe4ee484c9d6b19714b541e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>VER<\/strong> \u2014 numero di versione del protocollo (versione attuale 2);<\/p>\n<p><\/p>\n<p><strong>P<\/strong> \u2014 flag che viene impostato nei casi in cui il pacchetto RTP venga completato con byte vuoti alla fine;<\/p>\n<p><\/p>\n<p><strong>X<\/strong> \u2014 flag che indica che l'intestazione \u00e8 estesa;<\/p>\n<p><\/p>\n<p><strong>CC<\/strong> \u2014 contiene il numero di identificatori CSRC che seguono l'intestazione fissa (dopo le parole 1..3), che nella figura non \u00e8 mostrata;<\/p>\n<p><\/p>\n<p><strong>M<\/strong> \u2014 marcatore dell'inizio di un'istantanea o della presenza di voce nel canale (se viene utilizzato un rilevatore di pause nella voce). Se il ricevitore non contiene un rilevatore di pause nella voce, questo bit deve essere sempre impostato;<\/p>\n<p><\/p>\n<p><strong>PTYPE<\/strong> \u2014 indica il formato del payload;<\/p>\n<p><\/p>\n<p><strong>Sequence number<\/strong> \u2014 numero del pacchetto, utilizzato per ripristinare l'ordine di riproduzione dei pacchetti, poich\u00e9 \u00e8 comune che i pacchetti possano raggiungere il ricevitore in ordine diverso rispetto a come sono stati inviati. Il valore iniziale deve essere casuale, per complicare l'hacking se viene applicata la crittografia al flusso RTP. Inoltre, questo campo consente di rilevare le perdite di pacchetti;<\/p>\n<p><\/p>\n<p><strong>Timestamp<\/strong> \u2014 marca temporale. Il tempo \u00e8 misurato in campioni di segnale, ovvero se un pacchetto contiene 160 campioni, la marca temporale del pacchetto successivo sar\u00e0 maggiore di 160. Il valore iniziale della marca temporale dovrebbe essere casuale;<\/p>\n<p><\/p>\n<p><strong>SSRC<\/strong> \u2014 identificatore della sorgente del pacchetto, deve essere unico. \u00c8 meglio generarlo casualmente prima di avviare il flusso RTP.<\/p>\n<p><\/p>\n<p>Se stai sviluppando il tuo trasmettitore o ricevitore di pacchetti RTP, dovrai esaminare pi\u00f9 volte i tuoi pacchetti per migliorare le prestazioni. Ti consiglio di acquisire familiarit\u00e0 con l'uso della filtrazione dei pacchetti in TShark, che consente di catturare solo i pacchetti che ti interessano. In un contesto in cui decine di dispositivi RTP sono attivi sulla rete, questo \u00e8 molto prezioso. Nella riga di comando di TShark, i parametri di filtrazione vengono specificati con l'opzione \"-f\". Abbiamo utilizzato questa opzione quando volevamo catturare pacchetti dalla porta 8010:<br \/>\n<code>-f \"udp port 8010\"<\/code><br \/>\nI parametri di filtrazione sono fondamentalmente un insieme di criteri che il pacchetto \"catturato\" deve soddisfare. Le condizioni possono controllare l'indirizzo, la porta, il valore di un byte specifico nel pacchetto. Le condizioni possono essere unite tramite operazioni logiche come \"E\", \"O\" e cos\u00ec via. Uno strumento molto potente.<\/p>\n<p><\/p>\n<p>Se desideri visualizzare la dinamica delle modifiche nei campi dei pacchetti, \u00e8 necessario duplicare l'output <em>TShark<\/em> in un file, come mostrato nell'articolo precedente, utilizzando il passaggio dell'output <em>TShark<\/em> all'input <em>tee<\/em>. Quindi, aprendo il file di log con <em>less, vim<\/em> o un altro strumento in grado di gestire rapidamente enormi file di testo e di eseguire ricerche di stringhe, potrai determinare tutti i dettagli sul comportamento dei campi nei pacchetti nel flusso RTP.<\/p>\n<p><\/p>\n<p>Se hai bisogno di ascoltare il segnale trasmesso dal flusso RTP, dovrai utilizzare la versione <em>TShark<\/em> con interfaccia visiva <em>Wireshark<\/em>. Con alcune semplici operazioni del mouse, potrai ascoltare e vedere l'oscillogramma del segnale. Ma a una condizione: deve essere codificato nel formato u-law o a-low.<\/p>\n<p><\/p>\n<p>Nella prossima <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496874\/\">articolo<\/a><\/noindex> creeremo insieme un dispositivo di comunicazione duplex. Procurati un paio di cuffie e un interlocutore.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496666\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 RTP-\u043f\u0430\u043a\u0435\u0442\u0430 \u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TShark \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0437\u0430\u0445\u0432\u0430\u0442 RTP-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0448\u0438 \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u0447\u0438\u043a. \u041d\u0443 \u0430 \u0432 \u044d\u0442\u043e\u0439 \u043c\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0441\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0430\u043a\u0435\u0442\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0438\u0445 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0430\u043a\u0435\u0442, \u043d\u043e \u0443\u0436\u0435 \u0441 \u043f\u043e\u0434\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044f\u043c\u0438 \u0438 \u0441 \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u043c\u0438 \u043d\u0430\u0434\u043f\u0438\u0441\u044f\u043c\u0438: \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87044,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-02T17:42:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-02T17:42:04+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Esploriamo il motore VoIP Mediastreamer2. Parte 8 | ProHoster","description":"Il materiale dell'articolo \u00e8 stato preso dal mio canale Zen.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0437\u0443\u0447\u0430\u0435\u043c VoIP-\u0434\u0432\u0438\u0436\u043e\u043a Mediastreamer2. \u0427\u0430\u0441\u0442\u044c 8 | ProHoster","og:description":"\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0437\u044f\u0442 \u0441 \u043c\u043e\u0435\u0433\u043e \u0434\u0437\u0435\u043d-\u043a\u0430\u043d\u0430\u043b\u0430.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-02T17:42:04+00:00","article:modified_time":"2020-07-02T17:42:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87043","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:59:56","updated":"2022-10-07 20:48:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=87043"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/87043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/87044"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=87043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=87043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=87043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}