Крайне удобным инструментом в изучении IP-телефонии является бесплатный WireShark. Его можно скачать с официального сайта и пользоваться совершенно свободно.
На сегодняшний день термины IP-телефония и SIP-телефония - тождественные синонимы, как мы уже описывали в этой статье. Хотя раньше SIP-телефония входило в множество IP-телефония. Но SIP-протокол вытеснил из телефонии все остальные протоколы, и сам стал множеством, плодя в себе подмножества протоколов. Тем не менее природа у него общая - это поток UDP, который в отличии от TCP не требует подтверждения отправки и приема пакетов. То есть, пакеты уходят от источника в сторону адресата, а дойдут или нет - никого не волнует. На первый взгляд это не самый удачный способ взаимодействия между двумя узлами, но он в два раза уменьшает трафик, а значит требует меньшую полосу пропускания. Да еще и снижает уровень задержки голоса до минимума.
Давайте рассмотрим стандартную сессию регистрации SIP-клиента на SIP-сервере. По-русски говоря, это когда вы подключаете IP-телефон к АТС, как в этом видео. Подслушаем, как говорится, беседу между этими двумя узлами. Снимать трассировку WireShark можно с коммутатора, куда подключены устройства. Для этого нужно будет зазеркалировать порт АТС или телефона. Подключить ПК к этому зеркальному порту и запустить трассировщик WireShark. Но мы поступим проще. У нас есть АТС W&T-NS. В этих станциях трассировщик уже встроен. Его нужно просто запустить.
Выставляем физический порт. Он у нас WAN. Если знаете IP-адрес устройства, можно вписать. Хотя это поле - необязательное, такой фильтр позволит существенно сократить трассировку. Если не знаете адреса - ничего страшного. Сможете отфильтровать необходимые сообщения прямо в интерфейсе WireShark. Но мы знаем номер цифрового порта 5060, который по умолчанию использует SIP-протокол, его мы выставить можем. Только имейте в виду, что и этот порт может быть другим. Итак, вод диалог:
Он же трассировка, он же дамп. Что мы видим в первой строке:
Source - источник пакета. IP-адрес нашего телефона, который шлет пакет регистрации.
Destination - адресат пакета. IP адрес нашей АТС, куда приходит пакет регистрации.
Protocol - интерфейс взаимодействия. По сути - язык общения.
Info - строка сообщения, с которой мы и будем работать.
Во второй строке источник и адресат меняются местами. То есть АТС отвечает телефону. И так далее.
Этот диалог можно изучить подробнее. Для этого правой кнопкой мыши щелкнем по первому сообщению и выберем опцию отслеживать UDP-поток
У нас откроется удобный диалог, где каждая строчка расшифровывается и разворачивается на подробное сообщение
Расшифруем этот диалог:
REGISTER sip:192.168.77.24;transport=UDP SIP/2.0 - Запрос на регистрацию по указанному адресу
Via: SIP/2.0/UDP 192.168.177.231:64884;branch=z9hG4bK-524287-1---f829aac3d39807be;rport - определяем протокол, источник и порт
Contact: <sip:6001@192.168.177.231:64884;rinstance=8a77582fe97ca4b0;transport=UDP>
Поле контакта. 6001 - наш абонент (внутренний номер, он же логин), далее его адрес.
To: <sip:6001@192.168.77.24;transport=UDP> - поле регистрации. Прописывается абонент и адрес АТС.
From: <sip:6001@192.168.77.24;transport=UDP>;tag=d270851b - поле from. Абонент представляется
Далее АТС отвечает:
SIP/2.0 401 Unauthorized - говорит, что пока такой клиент не авторизован на АТС
Абонент шлет повторный пакет, не будем его расшифровывать. На что АТС ему отвечает:
SIP/2.0 200 OK - сообщение об успешной регистрации. Частный случай. Здесь не обязательно должно быть 200ОК, здесь может быть 403Forbiden или любое другое сообщение причины, почему абонент не может быть зарегистрирован. Но 200ОК - это единственное правильное сообщение о регистрации. Если его нет, ищите причину: неправильный логин, пароль, порт, адрес и т.д.
Таким образом происходит регистрация не только IP-телефонов с АТС, но еще и самой АТС с SIP-сервером провайдера или другой АТС, в случае их объединения.
В следующей части мы поговорим о дампе непосредственно вызова.