{"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\/da\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","title":{"rendered":"Udforsker VoIP-motoren Mediastreamer2. Del 8","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Materialet i artiklen er taget fra min <noindex><a rel=\"nofollow\" href=\"https:\/\/zen.yandex.ru\/id\/5e3f8e0751f5346faab4fc7a\">zen-kanal<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Udforsker VoIP-motoren Mediastreamer2. Del 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\">Strukturen af RTP-pakke<\/h2>\n<p><\/p>\n<p>I den forrige <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496490\/\">artikel<\/a><\/noindex> vi har ved hj\u00e6lp af <em>TShark<\/em> udf\u00f8rt optagelse af RTP-pakker, som vores modtager og transmitter udvekslede. I denne lektion vil vi farvel\u00e6gge pakkeelementerne i forskellige farver og tale om deres funktion. <\/p>\n<p><\/p>\n<p>Lad os se p\u00e5 den samme pakke, men nu med farvelagte felter og forklarende etiketter:<br \/>\n<img decoding=\"async\" alt=\"Udforsker VoIP-motoren Mediastreamer2. Del 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>I bunden af opstillingen er de bytes, der udg\u00f8r RTP-pakken, farvet, og den er i \u00f8vrigt nyttelasten af UDP-pakken (dets hoved er omkranset af en sort linje). Baggrundene er farvet for at markere bytes af RTP-hovedet, og den gr\u00f8nne farve fremh\u00e6ver datablokken, der indeholder nyttelasten af RTP-pakken. Dataene er pr\u00e6senteret i hexadecimal format. I vores tilf\u00e6lde er det et lydsignal komprimeret ved hj\u00e6lp af u-lov (\u03bc-lov), hvilket vil sige, at en pr\u00f8ve har en st\u00f8rrelse p\u00e5 1 byte. Da vi brugte standard sampling rate (8000 Hz), skal hver RTP-pakke indeholde 160 bytes nyttelast ved en pakke frekvens p\u00e5 50 Hz. Det vil vi se, n\u00e5r vi t\u00e6ller bytes i det gr\u00f8nne omr\u00e5de; der skal v\u00e6re 10 linjer. <\/p>\n<p><\/p>\n<p>If\u00f8lge standarden skal m\u00e6ngden af data i nyttelasten v\u00e6re et multiplum af fire, eller med andre ord skal det indeholde et helt antal fire-byte ord. Hvis det skulle ske, at din nyttelast ikke overholder denne regel, skal der tilf\u00f8jes bytes med nul-v\u00e6rdier til slutningen af nyttelasten og bit-feltet Padding (Udfyldning) skal s\u00e6ttes. Denne bit ligger i den f\u00f8rste byte af RTP-hovedet, og den er farvet i turkis. V\u00e6r opm\u00e6rksom p\u00e5, at alle bytes i nyttelasten har v\u00e6rdien 0xFF \u2014 det er, hvordan stilhed ser ud i u-lov format.<\/p>\n<p><\/p>\n<p>RTP-pakkens header best\u00e5r af 12 obligatoriske bytes, men i to tilf\u00e6lde kan den v\u00e6re l\u00e6ngere:<\/p>\n<p><\/p>\n<ul>\n<li>\n<p>N\u00e5r pakken b\u00e6rer et lydsignal modtaget fra blandingen af signaler fra flere kilder (RTP-str\u00f8mme), s\u00e5 findes der efter de f\u00f8rste 12 bytes i headeren en tabel med en liste over identifikatorer for kilderne, hvis nyttelast er blevet brugt til at skabe nyttelasten af denne pakke. Herudover er de laveste fire bits i den f\u00f8rste byte af headeren (feltet <em>Antal bidragende kildeidentifikatorer<\/em>) angiver antallet af kilder. St\u00f8rrelsen p\u00e5 feltet er 4 bit, s\u00e5ledes at tabellen kan indeholde op til 15 kilder. Hver af dem tager 4 byte. Denne tabel bruges ved organisering af konferenceopkald.<\/p>\n<p>\n<\/li>\n<li>\n<p>N\u00e5r overskriften har en extension. I dette tilf\u00e6lde s\u00e6ttes en bit i det f\u00f8rste byte af overskriften. <strong>X<\/strong>. I den udvidede overskrift, efter deltagerlisten (hvis der er nogen), placeres en overskrift for extension, der har st\u00f8rrelsen af et ord, efterfulgt af ordene for extension. Extension er et s\u00e6t bytes, som du kan bruge til at transmittere yderligere data. Standarderne specificerer ikke formatet af disse data \u2014 det kan v\u00e6re hvad som helst. For eksempel kan det v\u00e6re nogen ekstra indstillinger for en enhed, der modtager RTP-pakker. For visse anvendelser er der dog udviklet standarder for den udvidede overskrift. Det er f.eks. gjort for kommunikationsmidler i standarden <em>ED-137 (Interoperability Standards for VoIP ATM Components)<\/em>. <\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Lad os nu se n\u00e6rmere p\u00e5 felterne i overskriften. Nedenfor er et kanonisk billede med strukturen af RTP-overskriften, som jeg heller ikke kunne lade v\u00e6re med at farve i de samme farver.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Udforsker VoIP-motoren Mediastreamer2. Del 8\" src=\"\/wp-content\/uploads\/2020\/07\/b8839a56fbe4ee484c9d6b19714b541e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<strong>VER<\/strong> \u2014 versionsnummeret for protokollen (nuv\u00e6rende version 2);<\/p>\n<p><\/p>\n<p><strong>P<\/strong> \u2014 en flag, der s\u00e6ttes i situationer, hvor RTP-pakken suppleres med tomme bytes i slutningen;<\/p>\n<p><\/p>\n<p><strong>X<\/strong> \u2014 en flag for, at overskriften er udvidet;<\/p>\n<p><\/p>\n<p><strong>CC<\/strong> \u2014 indeholder antallet af CSRC-identifikatorer, der f\u00f8lger efter den faste overskrift (efter ordene 1..3), tabellen er ikke vist p\u00e5 billedet;<\/p>\n<p><\/p>\n<p><strong>M<\/strong> \u2014 markerer starten p\u00e5 en ramme eller tilstedev\u00e6relsen af tale i kanalen (hvis pause-detektoren anvendes). Hvis modtageren ikke har en pause-detektor, skal denne bit konstant v\u00e6re t\u00e6ndt;<\/p>\n<p><\/p>\n<p><strong>PTYPE<\/strong> \u2014 angiver formatet for nyttelasten;<\/p>\n<p><\/p>\n<p><strong>Sekvensnummer<\/strong> \u2014 pakkenummer, bruges til at genskabe r\u00e6kkef\u00f8lgen ved afspilning af pakker, da den faktiske situation kan v\u00e6re, at pakker n\u00e5r modtageren ikke i den r\u00e6kkef\u00f8lge, de blev sendt. Startv\u00e6rdien skal v\u00e6re tilf\u00e6ldig, dette g\u00f8res for at vanskeligg\u00f8re hackning, hvis RTP-str\u00f8mmen krypteres. Dette felt g\u00f8r det ogs\u00e5 muligt at opdage manglende pakker;<\/p>\n<p><\/p>\n<p><strong>Tidsstempel<\/strong> \u2014 tidsstempel. Tiden m\u00e5les i signalpr\u00f8ver, dvs. hvis pakken indeholder 160 pr\u00f8ver, vil tidsstemplet for den n\u00e6ste pakke v\u00e6re 160 h\u00f8jere. Startv\u00e6rdien for tidsstemplet skal v\u00e6re tilf\u00e6ldig;<\/p>\n<p><\/p>\n<p><strong>SSRC<\/strong> \u2014 identifikatoren for pakke kilden, den skal v\u00e6re unik. Det er bedst at generere den tilf\u00e6ldigt f\u00f8r starten af RTP-streamen.<\/p>\n<p><\/p>\n<p>Hvis du vil udvikle din egen RTP-pakke transmitter eller modtager, skal du flere gange overveje dine pakker for at forbedre ydeevnen. Jeg anbefaler, at du l\u00e6rer at bruge pakke filtrering i TShark, da det giver dig mulighed for kun at fange de pakker, som er af interesse for dig. I et milj\u00f8, hvor der er mange RTP-enheder p\u00e5 netv\u00e6rket, er dette meget v\u00e6rdifuldt. I TShark\u2019s kommandolinje angives filtreringsparametre med indstillingen \"-f\". Vi brugte denne indstilling, da vi \u00f8nskede at fange pakker fra port 8010:<br \/>\n<code>-f \"udp port 8010\"<\/code><br \/>\nFiltreringsparametre er i sin kerne et s\u00e6t kriterier, som den \"fangede\" pakke skal opfylde. Betingen kan kontrollere adresse, port, v\u00e6rdien af et bestemt byte i pakken. Betingelser kan kombineres med logiske operationer som \"OG\", \"ELLER\" osv. Dette er et meget kraftfuldt v\u00e6rkt\u00f8j.<\/p>\n<p><\/p>\n<p>Hvis du vil se dynamikken i \u00e6ndringerne af felter i pakkerne, skal du duplikere outputtet <em>TShark<\/em> til en fil, som vist i den tidligere artikel, ved hj\u00e6lp af at sende output <em>TShark<\/em> til indgangen <em>tee<\/em>. Derefter, n\u00e5r du \u00e5bner logfilen med <em>less, vim<\/em> eller et andet v\u00e6rkt\u00f8j, der kan arbejde hurtigt med store tekstfiler og udf\u00f8re s\u00f8gninger, vil du kunne finde alle nuancerne i felternes adf\u00e6rd i RTP-str\u00f8mmen.<\/p>\n<p><\/p>\n<p>Hvis du har brug for at lytte til signalet sendt af RTP-str\u00f8mmen, skal du bruge versionen <em>TShark<\/em> med et visuelt interface <em>Wireshark<\/em>. Gennem enkle musemanipulationer kan du lytte til det, se oscilloskopet af signalet. Men under \u00e9n betingelse \u2014 hvis det er kodet i formaterne u-law eller a-law.<\/p>\n<p><\/p>\n<p>I n\u00e6ste <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/496874\/\">artikel<\/a><\/noindex> vi vil lave et duplex samtaleapparat sammen. S\u00f8rg for at have et par headset og en samtalepartner.<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47L\u00e6rer VoIP-motoren Mediastreamer2. Del 8 | ProHoster","description":"Materialet i artiklen er taget fra min Zen-kanal.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/izuchaem-voip-dvizhok-mediastreamer2-chast-8","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/87043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=87043"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/87043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/87044"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=87043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=87043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=87043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}