áá±á¬ááºážáá«ážá á¡ááŒá±á¬ááºážá¡áá¬ááᯠáá»áœááºá¯ááºáá¶á០áá°áá«áááºá
RTP á¡áá¯ááºáá»á¬ážááá¯ááœá²ááŒááºážá áááºááŒá¬ááẠTShark ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
áá±á¬ááºáá¯á¶ážá
á€áá±á¬ááºážáá«ážááœááºá RTP áááá¯ááá¯áá±á¬ááᯠá¡áá¯á¶ážááŒá¯á á¡áá¶á¡áá»ááºááŒáá¯ááºááœáŸáá·áºááŸá¯ááᯠáááºáááºáá±á·áá¬áá«áááºá ááááŠážá áœá¬á áá»áœááºá¯ááºááá¯á·áá ááºážáááºáá»áŸá±á¬ááºááœáŸá¬ááᯠtransmitter ááŸáá·áº receiver áá áºáá¯á¡ááŒá Ạááá¯ááºážááŒá¬ážááŒá®áž network traffic analysiser ááá¯á¡áá¯á¶ážááŒá¯á RTP stream ááᯠá á áºáá±ážáááºážááᯠáá±á·áá¬ááŒáá«á áá¯á·á
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠRTP áá¯ááºááœáŸáá·áºááŸá¯á¡ááœáẠáá¬áááºááŸáááŒá®áž áááºááá·áºáááá¯ááááºááŒááºá ááºáá»á¬ážááᯠááá¯ááá¯ááŸááºážáááºážá áœá¬ ááááŒááºááá¯ááºá á±áááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·á mstest6.c ááá¯ááºááᯠtransmitter ááŸáá·áº receiver á¡ááœáẠáá®ážááŒá¬ážááœááºáááºáá±á¬ áááá¯ááááºááŸá áºáá¯á¡ááŒá Ạááá¯ááºážááŒá¬ážáá¬ážáá«áááºá ááááááá¯ááºááœáẠáá»áœááºá¯ááºááá¯á·áá±á«áºáá«áááºá mstest_common.cáá«áááºááá·áº ááœáŸááºááŒá¬ážáá»ááºááᯠá¡áá¯á¶ážááŒá¯á áááºážááᯠtransmitter ááŸáá·áº receiver ááá¯á·á áá»áááºáááºáá±ážáááº-
/* Ѐайл mstest_common.c ÐбÑОе ÑÑМкÑОО ÐŽÐ»Ñ Ð¿ÐµÑеЎаÑÑОка О пÑОеЌМОка. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
define PCMU 0
/*---------------------------------------------------------*/
/* ЀÑМкÑÐžÑ ÑегОÑÑÑаÑОО ÑОпПв пПлезМÑÑ
МагÑÑзПк. */
void register_payloads(void)
{
/* РегОÑÑÑОÑÑеЌ ÑÐžÐ¿Ñ ÐœÐ°Ð³ÑÑзПк в ÑаблОÑе пÑПÑОлей. ÐПзЎМее, пП ОМЎекÑÑ Ð²Ð·ÑÑПЌÑ
Оз загПлПвка RTP-пакеÑа Оз ÑÑПй ÑаблОÑÑ Ð±ÑÐŽÑÑ ÐžÐ·Ð²Ð»ÐµÐºÐ°ÑÑÑÑ Ð¿Ð°ÑаЌеÑÑÑ
МагÑÑзкО, МеПбÑ
ПЎОЌÑе ÐŽÐ»Ñ ÐŽÐµÐºÐŸÐŽÐžÑÐŸÐ²Ð°ÐœÐžÑ ÐŽÐ°ÐœÐœÑÑ
пакеÑа. */
rtp_profile_set_payload (&av_profile, PCMU, &payload_type_pcm8000);
}
/*---------------------------------------------------------*/
/* ÐÑа ÑÑМкÑÐžÑ ÑПзЎаМа Оз ÑÑМкÑОО create_duplex_rtpsession() в audiostream.c ЌеЎОаÑÑÑОЌеÑа2. */
static RtpSession *create_rtpsession (int loc_rtp_port, int loc_rtcp_port, bool_t ipv6, RtpSessionMode mode)
{
RtpSession *rtpr; rtpr = rtp_session_new ((int) mode);
rtp_session_set_scheduling_mode (rtpr, 0);
rtp_session_set_blocking_mode (rtpr, 0);
rtp_session_enable_adaptive_jitter_compensation (rtpr, TRUE);
rtp_session_set_symmetric_rtp (rtpr, TRUE);
rtp_session_set_local_addr (rtpr, ipv6 ? "::" : "0.0.0.0", loc_rtp_port, loc_rtcp_port);
rtp_session_signal_connect (rtpr, "timestamp_jump", (RtpCallback) rtp_session_resync, 0);
rtp_session_signal_connect (rtpr, "ssrc_changed", (RtpCallback) rtp_session_resync, 0);
rtp_session_set_ssrc_changed_threshold (rtpr, 0);
rtp_session_set_send_payload_type(rtpr, PCMU);
/* ÐП ÑЌПлÑÐ°ÐœÐžÑ Ð²ÑклÑÑаеЌ RTCP-ÑеÑÑОÑ, Ñак как ÐœÐ°Ñ Ð¿ÑлÑÑ ÐœÐµ бÑÐŽÐµÑ ÐžÑпПлÑзПваÑÑ
еÑ. */
rtp_session_enable_rtcp (rtpr, FALSE);
return rtpr;
}
ááᯠáá®ážááŒá¬áž transmitter ááá¯ááºá
/* Ѐайл mstest6.c ÐЌОÑаÑÐŸÑ Ð¿ÑлÑÑа ÑпÑÐ°Ð²Ð»ÐµÐœÐžÑ (пеÑеЎаÑÑОка). */
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/msrtp.h>
#include "mstest_common.c"
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* СПзЎаеЌ ÑкзеЌплÑÑÑ ÑОлÑÑÑПв. */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
/* СПзЎаеЌ ÑОлÑÑÑ ÐºÐŸÐŽÐµÑа. */
MSFilter *encoder = ms_filter_create_encoder("PCMU");
/* РегОÑÑÑОÑÑеЌ ÑÐžÐ¿Ñ ÐœÐ°Ð³ÑÑзкО. */
register_payloads();
/* СПзЎаеЌ RTP-ÑеÑÑÐžÑ Ð¿ÐµÑеЎаÑÑОка. */
RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);
rtp_session_set_remote_addr_and_port(tx_rtp_session,"127.0.0.1", 7010, 7011);
rtp_session_set_send_payload_type(tx_rtp_session, PCMU);
MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);
ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, tx_rtp_session);
/* СПзЎаеЌ ОÑÑПÑМОк ÑакÑПв - ÑОкеÑ. */
MSTicker *ticker_tx = ms_ticker_new();
/* СПеЎОМÑеЌ ÑОлÑÑÑÑ Ð¿ÐµÑеЎаÑÑОка. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* ÐПЎклÑÑаеЌ ОÑÑПÑМОк ÑакÑПв. */
ms_ticker_attach(ticker_tx, voidsource);
/* ÐаÑÑÑаОваеЌ ÑÑÑÑкÑÑÑÑ, ÑпÑавлÑÑÑÑÑ Ð²ÑÑ
ПЎМÑÐŒ ÑОгМалПЌ геМеÑаÑПÑа. */
MSDtmfGenCustomTone dtmf_cfg;
dtmf_cfg.tone_name[0] = 0;
dtmf_cfg.duration = 1000;
dtmf_cfg.frequencies[0] = 440;
/* ÐÑЎеЌ геМеÑОÑПваÑÑ ÐŸÐŽÐžÐœ ÑПМ, ÑаÑÑПÑÑ Ð²ÑПÑПгП ÑПМа ÑÑÑаМПвОЌ в 0. */
dtmf_cfg.frequencies[1] = 0;
dtmf_cfg.amplitude = 1.0;
dtmf_cfg.interval = 0.;
dtmf_cfg.repeat_count = 0.;
/* ÐÑгаМОзÑеЌ ÑОкл ÑкаМОÑÐŸÐ²Ð°ÐœÐžÑ ÐœÐ°Ð¶Ð°ÑÑÑ
клавОÑ. ÐвПЎ ÐœÑÐ»Ñ Ð·Ð°Ð²ÐµÑÑаеÑ
* ÑОкл О ÑабПÑÑ Ð¿ÑПгÑаЌЌÑ. */
char key='9';
printf("ÐажЌОÑе клавОÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ, заÑеЌ ввПЎ.n"
"ÐÐ»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐœÐžÑ Ð¿ÑПгÑÐ°ÐŒÐŒÑ Ð²Ð²ÐµÐŽÐžÑе 0.n");
while(key != '0')
{
key = getchar();
if ((key >= 49) && (key <= 54))
{
printf("ÐÑпÑавлеМа кПЌаМЎа: %cn", key);
/* УÑÑаМавлОваеЌ ÑаÑÑПÑÑ Ð³ÐµÐœÐµÑаÑПÑа в ÑППÑвеÑÑÑвОО Ñ
* кПЎПЌ МажаÑПй клавОÑО. */
dtmf_cfg.frequencies[0] = 440 + 100*(key-49);
/* ÐклÑÑаеЌ звÑкПвПй геМеÑаÑÐŸÑ c ПбМПвлеММПй ÑаÑÑПÑПй. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM, (void*)&dtmf_cfg);
}
/* УклаЎÑваеЌ ÑÑеЎ в ÑпÑÑÐºÑ ÐœÐ° 20ÐŒÑ, ÑÑÐŸÐ±Ñ ÐŽÑÑгОе ÑÑеЎÑ
* пÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ Ð¿ÐŸÐ»ÑÑОлО вÑÐµÐŒÑ ÐœÐ° ÑабПÑÑ. */
ms_usleep(20000);
}
}
áá±á¬ááºáá¯á¶ážá¡áá±áá²á·á áááºáá¶áá°ááá¯ááº
/* Ѐайл mstest7.c ÐЌОÑаÑÐŸÑ Ð¿ÑОеЌМОка. */
include <mediastreamer2/mssndcard.h>
include <mediastreamer2/mstonedetector.h>
include <mediastreamer2/msrtp.h>
/* ÐПЎклÑÑаеЌ загПлПвПÑÐœÑй Ñайл Ñ ÑÑМкÑОÑЌО ÑпÑÐ°Ð²Ð»ÐµÐœÐžÑ ÑПбÑÑОÑЌО ЌеЎОаÑÑÑОЌеÑа.*/
include <mediastreamer2/mseventqueue.h>
/* ÐПЎклÑÑаеЌ Ñайл ПбÑОÑ
ÑÑМкÑОй. */
include "mstest_common.c"
/* ЀÑМкÑÐžÑ ÐŸÐ±ÑаÑМПгП вÑзПва, ПМа бÑÐŽÐµÑ Ð²ÑзваМа ÑОлÑÑÑПЌ, как ÑПлÑкП ПМ ПбМаÑÑÐ¶ÐžÑ ÑПвпаЎеМОе Ñ
аÑакÑеÑОÑÑОк вÑ
ПЎМПгП ÑОгМала Ñ Ð·Ð°ÐŽÐ°ÐœÐœÑЌО. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,MSToneDetectorEvent *ev)
{
printf("ÐÑОМÑÑа кПЌаМЎа: %sn", ev->tone_name);
}
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* СПзЎаеЌ ÑкзеЌплÑÑÑ ÑОлÑÑÑПв. */
MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
MSFilter *snd_card_write = ms_snd_card_create_writer(card_playback);
MSFilter *detector = ms_filter_new(MS_TONE_DETECTOR_ID);
/* ÐÑОÑаеЌ ЌаÑÑОв МаÑ
ПЎÑÑОйÑÑ Ð²ÐœÑÑÑО ЎеÑекÑПÑа ÑПМПв, ПМ ПпОÑÑваеÑ
* ПÑПбÑе пÑОЌеÑÑ ÑазÑÑкОваеЌÑÑ
ÑОгМалПв.*/
ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);
/* ÐПЎклÑÑаеЌ к ÑОлÑÑÑÑ ÑÑМкÑÐžÑ ÐŸÐ±ÑаÑМПгП вÑзПва. */
ms_filter_set_notify_callback(detector, (MSFilterNotifyFunc)tone_detected_cb, NULL);
/* СПзЎаеЌ ЌаÑÑОв, кажЎÑй ÑÐ»ÐµÐŒÐµÐœÑ ÐºÐŸÑПÑПгП ПпОÑÑÐ²Ð°ÐµÑ Ñ
аÑакÑеÑОÑÑОкÑ
* ПЎМПгП Оз ÑПМПв, кПÑПÑÑй ÑÑебÑеÑÑÑ ÐŸÐ±ÐœÐ°ÑÑжОваÑÑ:
ТекÑÑПвПе ОЌÑ
* ЎаММПгП ÑлеЌеМÑа, ÑаÑÑПÑа в геÑÑаÑ
, ЎлОÑелÑМПÑÑÑ Ð² ЌОллОÑекÑМЎаÑ
,
* ЌОМОЌалÑÐœÑй ÑÑÐŸÐ²ÐµÐœÑ ÐŸÑМПÑОÑелÑМП 0,775Ð. */
MSToneDetectorDef scan[6]=
{
{"V+",440, 100, 0.1}, /* ÐПЌаМЎа "УвелОÑОÑÑ Ð³ÑПЌкПÑÑÑ". */
{"V-",540, 100, 0.1}, /* ÐПЌаМЎа "УЌеМÑÑОÑÑ Ð³ÑПЌкПÑÑÑ". */
{"C+",640, 100, 0.1}, /* ÐПЌаМЎа "УвелОÑОÑÑ ÐœÐŸÐŒÐµÑ ÐºÐ°ÐœÐ°Ð»Ð°". */
{"C-",740, 100, 0.1}, /* ÐПЌаМЎа "УЌеМÑÑОÑÑ ÐœÐŸÐŒÐµÑ ÐºÐ°ÐœÐ°Ð»Ð°". */
{"ON",840, 100, 0.1}, /* ÐПЌаМЎа "ÐклÑÑОÑÑ ÑелевОзПÑ". */
{"OFF", 940, 100, 0.1}/* ÐПЌаМЎа "ÐÑклÑÑОÑÑ ÑелевОзПÑ". */
};
/* ÐеÑеЎаеЌ "пÑОЌеÑÑ" ÑОгМалПв ЎеÑекÑÐŸÑ ÑПМПв. */
int i;
for (i = 0; i < 6; i++)
{
ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN, &scan[i]);
}
/* СПзЎаеЌ ÑОлÑÑÑ ÐŽÐµÐºÐŸÐŽÐµÑа */
MSFilter *decoder=ms_filter_create_decoder("PCMU");
/* РегОÑÑÑОÑÑеЌ ÑÐžÐ¿Ñ ÐœÐ°Ð³ÑÑзкО. */
register_payloads();
/* СПзЎаеЌ RTP-ÑеÑÑÐžÑ Ð¿ÑОеЌМОка. */
MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);
RtpSession *rx_rtp_session = create_rtpsession (7010, 7011, FALSE, RTP_SESSION_RECVONLY);
ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rx_rtp_session);
/* СПзЎаеЌ ОÑÑПÑМОк ÑакÑПв - ÑОкеÑ. */
MSTicker *ticker_rx = ms_ticker_new();
/* СПеЎОМÑеЌ ÑОлÑÑÑÑ Ð¿ÑОÑЌМОка. */
ms_filter_link(rtprecv, 0, decoder, 0);
ms_filter_link(decoder, 0, detector, 0);
ms_filter_link(detector, 0, snd_card_write, 0);
/* ÐПЎклÑÑаеЌ ОÑÑПÑМОк ÑакÑПв. */
ms_ticker_attach(ticker_rx, rtprecv);
char key='9';
printf( "ÐÐ»Ñ Ð·Ð°Ð²ÐµÑÑÐµÐœÐžÑ Ð¿ÑПгÑÐ°ÐŒÐŒÑ Ð²Ð²ÐµÐŽÐžÑе 0.n");
while(key != '0')
{
key = getchar();
/* УклаЎÑваеЌ ÑÑеЎ в ÑпÑÑÐºÑ ÐœÐ° 20ÐŒÑ, ÑÑÐŸÐ±Ñ ÐŽÑÑгОе ÑÑÐµÐŽÑ * пÑÐžÐ»ÐŸÐ¶ÐµÐœÐžÑ Ð¿ÐŸÐ»ÑÑОлО вÑÐµÐŒÑ ÐœÐ° ÑабПÑÑ. */
ms_usleep(20000);
}
}
áá»áœááºá¯ááºááá¯á·ááẠtransmitter ááŸáá·áº receiver ááá¯á á¯áá±á«ááºážááŒá®áž áá áºáá¯áá»ááºážá á®ááᯠáááºážáááá¯ááºááá¯áẠconsole ááœááºááœáá·áºáá«á ááá¯á·áá±á¬áẠáááºážááẠááááºá¡ááá¯ááºáž áá¯ááºáá±á¬ááºááá·áºááẠ- áá»áœááºá¯ááºááá¯á·ááẠtransmitter ááœááºááá¯ážááºááœáẠ1 á០6 á¡áá áá¶áá«ááºáá»á¬ážááá¯áᬠááá¯ááºááá·áºááá·áºááŒá®áž áááºážááá¯á·á¡á¬áž áá¯á¶á·ááŒááºááŸá¯á¡á¬áž áááºáá¶ááá·áº ááœááºááá¯ážááºááœáẠááŒááºááœá±á·ááááºááŒá áºáááºá á¡áá¶áá»á¬ážááᯠá áá®áá¬ááœáẠááŒá¬ážááá¯ááºááááºá á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá«áá áááºáá¶áá°ááŸáá·áº transmitter á¡ááŒá¬ážáá»áááºáááºááŸá¯áá áºáá¯ááᯠáá»áœááºá¯ááºááá¯á·áááºáá±á¬ááºáá¬ážááŒá®ážááŒá áºááẠ- RTP packet áá»á¬ážááᯠtransmitter á០receiver ááá¯á· á ááºáááºáááŒááºáá¯ááºááœáŸáá·áºáá±áá«áááºá
ááá¯á¡áá»áááºááẠá¡ááœá¬ážá¡áᬠááœá²ááŒááºážá áááºááŒá¬áá°á¡á¬áž áááºáááºááẠá¡áá»áááºááŒá áºáááºá áááºážá¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬ Wireshark áááá¯ááááºá ááœááºááá¯ážááºáá¬ážááŸááºážááᯠáááºáááºáá«ááẠ- áááºážááᯠTShark áá¯áá±á«áºáááºá áááá¯ááááºá á®áá¶ááá·áºááœá²ááŸá¯ááá±á¬áºááŒáá»ááºááœááºáá°á á±áááºá¡ááœáẠáá±á¬ááºáááºááœá±ážááœá±ážááŸá¯áá»á¬ážá¡ááœáẠTShark ááᯠáá»áœááºá¯ááºááœá±ážáá»ááºáá²á·áááºá Wireshark ááŒáá·áºá Wireshark áá¬ážááŸááºážá¡áá ẠááœááºááŸááá¬áá±á¬á¡áá«ááœáẠáá»ááºááŒááºá áœá¬ áá±ááºáá±á¬ááºáá»ááœá¬ážááá¯ááºááá·áº áááºáá¬ážááŒááºáá¬ááºáá¯á¶áá»á¬áž ááá¯á¡ááºáá«áááºá
Wireshark ááá¯á¡áá¯á¶ážááŒá¯áááºážááá¯áááºáááá«áá áá»áœááºá¯ááºááá¯á·áá¥ááá¬áá»á¬ážááá¯áá±á·áá¬ááẠáááºážááá¯áááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá ááá¯á·áá±á¬áº á€á¡ááŒá±á¡áá±áá»áá¯ážááœááºáááºá áááºá VoIP á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºá ááºážáááºááŒááºážááŸáá·áº á¡áá±ážááááºážáááºážááŒááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááá¯ááºá á±áá±á¬ááŒá±á¬áá·áº TShark ááᯠáá»áœááºážáá»ááºá á±ááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá
Command ááŒáá·áº TShark ááᯠinstall áá¯ááºáá«á
$ sudo apt-get install tshark
á¡á ááºá¡áá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáááá¯ááááºáá¬ážááŸááºážááᯠáá±á¬ááºážááá¯ááŒááºážááŒáá·áº áááºáááºááŸá¯ááááºááᯠá á áºáá±ážáááº-
$ tshark --version
áá¯á¶áá±á¬ááºáá²á·á¡ááŒá±ááá¯ááááºá áá»áœááºáá±á¬áºááá¯á· áááºáááºáá¯ááºáá±á¬ááºáá±áá«áááºá
áá»áœááºá¯ááºááá¯á·á áááºáááºáá»á¬ážááẠááá¯á¡áá»áááºááœáẠááœááºáá»á°áá¬á¡ááœááºážáᬠáá±á¬ááºááœá¬ážáá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠááá¯áá²á·ááá¯á· áááºáá±á·ááºá»áá»á¬ážááá¯áᬠááŒáááẠtsark á¡á¬áž ááŒá±á¬ááá¯ááºáá«áááºá áá«ááá¯áá¯ááºááá¯á·á á¡ááºáá¬áá±á·á áºááá± packet capture ááᯠááœá±ážááá«áááºá ááá ááœá±ážáá»ááºááœáá·áº TShark ááá¯ááŒááºáááºážááŒááºážááŒáá·áº (loopback) -ilo:
$ sudo tshark -i lo
áá»áœááºá¯ááºááá¯á·á transmitter ááŸáá±ážááá¯á·áá±á¬ packet áá»á¬ážá¡ááŒá±á¬ááºáž áááºáá±á·áá»áºáá»á¬ážááẠááœááºááá¯ážááºáá²ááá¯á· áá»ááºááŒááºážá áááºáá«ááẠ(á¡áá±ážááááºážááá¯ááºááᯠáá»áœááºá¯ááºááá¯á· ááŸáááºáááºááŒá áºá á±á áááŸáááºáááºááŒá áºá á± áááºááá¯ááºááŒá áºá á±)á ááá·áºááœááºááŒá°áá¬ááœáẠlocal loop ááŸáááá·áº packet áá»á¬ážááᯠáá±ážááá¯á·ááá·áº áááá¯ááááºáá»á¬áž ááŸááá±á¬ááºážááŸáááá¯ááºáááºá ááá¯á¡ááŒá±á¡áá±ááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááŸáá·áº á¡ááŒá¬ážáá°áá»á¬ážá packet áá»á¬ážááᯠáá±á¬ááŸá±á¬ááŒá®áž áááºáá¶áááŸááááºááŒá áºáááºá á á¬áááºážáá²ááœáẠáá»áœááºá¯ááºááá¯á·á á¡áá±ážááááºážááá¯ááºá០áá±ážááá¯á·ááá·áº áááºáá±á·ááºá»áá»á¬ážááá¯áᬠááœá±á·áááŒá±á¬ááºáž áá±áá»á¬á á±áááºá áá»áœááºá¯ááºááá¯á·ááẠááá¯á·ááºáá¶áá«ááºááŒáá·áº á á áºáá¯ááºááŒááºážááᯠáá±á«ááºážááá·áºáá«áááºá Ctrl-C ááá¯ááŸáááºááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠááœá²ááŒááºážá áááºááŒá¬áá°á¡á¬áž áááºááá·áºááŒá®áž á¡áá±ážááááºážáááááá¬á០áááºážááá¯ááºááœáŸáá·áºááŸá¯á¡ááœáẠáŠážáááºáá¬áá±á«ááºáá±á«ááºá¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááá·áº ááá¯á·ááºáá¶áá«ááºá¡ááœáẠá á áºáá¯ááºááŸá¯áá áºáᯠááá·áºááœááºážáá« (8010)á -f "udp port 8010". ááá¯áá»áœááºá¯ááºááá¯á·á command line áááºá€áá²á·ááá¯á·ááŒá áºáááá·áºáááºá
$ sudo tshark -i lo -f "udp port 8010"
á¡á±á¬ááºáá« output ááẠconsole (ááá 10 ááá¯ááºáž) ááœááºáá±á«áºáá¬áááá·áºáááº-
1 0.000000000 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
2 0.020059705 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
3 0.040044409 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
4 0.060057104 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
5 0.080082311 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
6 0.100597153 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
7 0.120122668 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
8 0.140204789 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
9 0.160719008 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
10 0.180673685 127.0.0.1 â 127.0.0.1 UDP 214 8010 â 7010 Len=172
ááá¯á¡áá»áááºááœááºá áááºážááá¯á·ááẠáááºáá±á·ááºá»áá»á¬ážááá¯ááºáá±á¬áºáááºáž ááá¯ááºážáá áºáá¯á á®ááẠá¡ááºáá¬áá±á·á áºáá±á«áºááŸá áááááŒá¯ááááá·áº áá±á¬ááºáá¯ááºááá¯ážááŸá¯á¡ááŒá±á¬ááºáž áááºáá±á·áá»áºáá áºáá¯ááŒá áºááá·áº áá¶áá«ááºáááºáá¬ážáá±á¬ ááŒá áºáááºáá»á¬ážá á¬áááºážááŒá áºáááºá packet filtering ááᯠáá»áœááºá¯ááºááá¯á· ááá¯á áá¯ááºááŒá®ážááŒá áºáá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·á transmitter á០packet áá»á¬ážá¡ááŒá±á¬ááºáž áááºáá±á·áá»áºáá»á¬ážááá¯áᬠá á¬áááºážááŒá¯á á¯áá¬ážáá«áááºá ááá¯á·áá±á¬ááºá á€ááá¬ážááᯠáá±á¬áºáá¶áá¶áá«ááºáá»á¬ážááŒáá·áº áá¯á¶áá±á¬áºááŒáá·áºááŒáá«á áá¯á·á
ááœá²áá¶áá«ááºá
áááºážáááŒá
áºáá»ááºááŸá¯á¡áá»áááºá
áááºáááºá á¡áááºážá¡ááŒá
ẠIP ááááºá
á¬ááŸáá·áº áááºáááºá áŠážáááºáᬠIP ááááºá
á¬á
áááºáááºááááá¯ááá¯áá±á¬ááᯠUDP á¡ááŒá
áºááŒááá¬ážáá±á¬ááŒá±á¬áá·áº RTP á¡áá¯ááºáá»á¬ážááᯠUDP áááºááºáá»á¬ážá¡ááœááºáž payload á¡ááŒá
Ạááá¯á·ááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá
ááá¯ááºááŒáá·áº áá¯ááºááá¯ážá¡ááœááºá¡á
á¬ážá
áááºáááºá á¡áááºážá¡ááŒá
Ạááá¯á·ááºáá¶áá«ááºááŸáá·áº áááºáááºá áŠážáááºáᬠááá¯á·ááºáá¶áá«ááºá
áá¯ááºááá¯ážáá±ážááá·áºááá¬áá á¡ááœááºá¡á
á¬ážá áá»áœááºá¯ááºááá¯á·á transmitter ááẠáááºáááºááŸá áá²áá
áºáá±á¬ááºáá²á·ááá¯á· á¡ááœááºá¡á
á¬áž 172 bytes ááŸááá±á¬ UDP packet á¡ááœááºážááœááºááŸááá±á¬ á¡ááœááºá¡á
á¬áž 214 bytes ááŸááá±á¬ RTP á¡áá¯ááºáá»á¬ážááᯠáá¯ááºáá±ážáááºáᯠáá»áœááºá¯ááºááá¯á· áá±á¬ááºáá»ááºáá»ááá¯ááºáá«áááºá
ááᯠUDP áááºáá±á·áá»áºáá»á¬ážá¡ááœááºáž ááŒáá·áºááŸá¯ááẠá¡áá»áááºáááºááŒá®á áááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ážáá»á²á·áá±á¬á·á¡á
á¯á¶ááŒáá·áº TShark ááᯠá
áááºáá«áááºá
sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x
ááááºá¡áá±ááŒáá·áºá áááá¯ááááºáááœááºááŸáááŸá¯ááᯠááŒáœááºáá á±áááá·áºááẠ- áááºážááá¯ááŒá áºáá±á«áºá á±áá²á·áá±á¬ á¡áá¯ááºáá¡ááœááºážááá¯ááºážá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá¯ááºááŸááºááŒááºážáá áºáá¯á á®ááᯠááŒá áºáááºáá áºáá¯á á®ááá¯á· áá±á«ááºážááá·áºáááºááŒá áºáááºá á¡ááœááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá áœá¬ááŒáá·áºááŸá¯áááºá Ctrl-C ááá¯ááŸáááºááŒááºážááŒáá·áº TShark ááᯠáááºááá·áºááá¯ááºááẠááá¯á·ááá¯áẠáááºážá tee áááá¯ááááºááá¯á· ááá¯ááºááá¯ááºážáá áºáá¯ááá·áºááŒááºážááŒáá·áº run command ááœáẠááá¯ááºá¡áááºááᯠáááºááŸááºááŒááºážá tee <filename>:
$ sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x | tee log.txt
á¡áᯠááá¯ááºáá²ááŸá¬ áá¬ááá² ááŒáá·áºááá¯ááºáá¡á±á¬ááºá áá«á áá°á·áá®á ááááá¯á¶áž áááºáá±á·ááºá»áá«á
1 0.000000000 127.0.0.1 â 127.0.0.1 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x6B8B4567, Seq=58366, Time=355368720
Frame 1: 214 bytes on wire (1712 bits), 214 bytes captured (1712 bits) on interface 0
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1User Datagram Protocol, Src Port: 8010, Dst Port: 7010
Real-Time Transport Protocol [Stream setup by HEUR RT (frame 1)]
[Setup frame: 1]
[Setup Method: HEUR RT]
10.. .... = Version: RFC 1889 Version (2)
..0. .... = Padding: False
...0 .... = Extension: False
.... 0000 = Contributing source identifiers count: 0
0... .... = Marker: False
Payload type: ITU-T G.711 PCMU (0)
Sequence number: 58366 [Extended sequence number: 58366]
Timestamp: 355368720
Synchronization Source identifier: 0x6b8b4567 (1804289383)
Payload: ffffffffffffffffffffffffffffffffffffffffffffffff...
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ..............E.
0010 00 c8 3c 69 40 00 40 11 ff b9 7f 00 00 01 7f 00 ..<i@.@.........
0020 00 01 1f 4a 1b 62 00 b4 fe c7 80 00 e3 fe 15 2e ...J.b..........
0030 7f 10 6b 8b 45 67 ff ff ff ff ff ff ff ff ff ff ..k.Eg..........
0040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00d0 ff ff ff ff ff ff ......
áá»áœááºá¯ááºááá¯á·ááẠá€á á¬áááºážááœááºáá«ááŸááá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬áááºá¡ááœáẠáá±á¬ááºáá±á¬ááºážáá«ážááœáẠááŒáŸá¯ááºááŸá¶áá¬ážááŒá®áž RTP áááºáá±á·áá»áºá á¡ááœááºážááá¯ááºážááœá²á·á ááºážáá¯á¶á¡ááŒá±á¬ááºáž áááœá²áááœá±ááŒá±á¬ááá¯áá«áááºá
source: www.habr.com