Как стать автором
Обновить

Комментарии 19

На рисунке, озаглавленном «Рис. 7. Маршрутизация SMS по сети GSM» отсутствует оборудование СОРМ, яровой и т.д. Товарищ майор не одобрил бы такую схему.
Это бритва. Зачем плодить лишние сущности, все можно прочитать с вашего телефона.
Можно, можно и просто с пристрастием спросить у хозяина телефона — сам все расскажет, много чего можно. Но эти сущности все равно плодят.
Года полтора назад зашёл в салон Билайна и попросил какую-то заверенную распечатку своих СМСок. Девушка-администратор немного стесняясь ответила, что такое они выдают только по запросам правоохранительных органов. Я тогда крайне удивился, что мне не дадут мои же СМСки.

А как же всякие часы и брелки с sim? Да и в смартфонах мне кажется антенны намного меньше, чем 7 см.

Хороший перевод. Хотел бы почитать перевод остальных статей из цикла(я к сожалению в английском не силён).
Сигнальная система SS7 представляет собой набор протоколов, используемых сотовыми телефонами, чтобы оставаться в постоянном контакте с базовой станцией; им нужно постоянное соединение, чтобы получать вызов и передавать своё местоположение, проверять голосовую почту и т. д.

Бред полнейший. Сами телефоны никак не взаимодействуют с SS7.
Инженер скажет, что когда телефон воспринимает изменение напряжения по координатам на экране, которые совпадают с координатами размещения графического элемента с кнопкой «Отправить», то он отправляет кодированное сообщение на SIM-карту, а в процессе передачи добавляет различные контекстные данные. Когда сообщение достигает SIM-карты моей жены, то там уже не 140, а 176 байт (текст + контекст).

И снова бред. SIM-карте действительно можно отправить SMS-сообщение, но исключительно в служебных целях, например, когда оператору нужно обновить список операторов, к которым можно подключаться в роуминге. В обычных же случаях SMS передается радиомодулю телефона, который, в свою очередь, устанавливает соединение с сетью и передает сообщение.
Байт после PDU-type является ссылкой на сообщение (MR). Это число от 1 до 255, по сути, используется как краткосрочный ID, чтобы телефон и оператор распознавали сообщение. В сообщении от жены установлен номер 0, потому что в её телефоне собственная система идентификации сообщений, независимая от этого конкретного файла.

Загляните, пожалуйста, в спецификации GSM, а именно 3GPP TS 04.11, раздел 8.2.3 «Message reference»:
The message reference field contains a sequence number in the range 0 through 255, and is used to link an RP-ACK message or RP-ERROR message to the associated (preceding) RP-DATA or RP-SMMA message transfer attempt.

и сравните с «используется как краткосрочный ID, чтобы телефон и оператор распознавали сообщение». На самом деле, SM-RP-MR используется для того, чтобы уведомить абонента либо об успешной, либо о неудачной отправке сообщения. Поскольку в момент времени может передаваться сразу несколько SMS-сообщений, этот идентификатор позволяет связать ACK или NACK с определенным сообщением. Так же, SM-RP-MR используется при отправке multi-part SMS, чтобы идентифицировать каждый кусочек на уровне RL.
В байте DCS есть ещё небольшой флаг, который говорит телефону, нужно ли самоуничтожать сообщение после отправки, как в фильме «Миссия невыполнима», так что это очень круто.

Не берусь опровергать, но было бы здорово увидеть, где в спецификациях описан данный флаг? И почему он является частью именно Data Coding Scheme?
Если SMSC не может найти мой телефон, то сообщение от жены будет просто прыгать в системе, пока мой телефон не подключится — и тогда SMS-центр немедленно отправит текст. Мне нравится представлять, как SMSC постоянно проверяет каждый телефон в сети, чтобы проверить, это мой телефон или нет: как щенок, ожидающий хозяина у двери принюхивается к каждому прохожему: это запах моего человека? Нет. Может, это запах моего человека? Нет. Это запах моего человека? ДАДАПРЫГАТЬУРА!!!

WTF?!? «Прыгать по системе»?!? Ну жу нет, никто никуда не прыгает, извините.

Начнем с того, что SMSC не проверяет, есть ли телефон в сети. Более того, зачем ему проверять «каждый» телефон, если он знает номер? Это не входит в его «обязанности». Первым делом, SMSC, после получения сообщения, находит HLR абонента, т.е. базу данных, в которой хранятся данные того абонента, которому отправляется сообщение.

SMSC через SS7 посылает специальный запрос, для протокола MAP это sendRoutingInfoForSM (в LTE используется DIAMETER, с ним я не знаком). Если абонент в сети, то HLR пришлет IMSI абонента, и номер MSC, который его в данный момент обслуживает. Если абонент в сети не зарегистрирован, никто не будет «проверять запахи» и «прыгать по системе». Вместо этого, как только абонент появится в сети, HLR уведомит SMSC об этом, и процедура повторится.

Получив номер MSC, SMSC через SS7 пересылает ему специальное сообщение (в случае MAP, используется MT-forwardSM), в котором содержится номер отправителя, номер данного SMSC, и IMSI (либо LMSI) абонента, которому нужно доставить сообщение. MSC в свою очередь «попросит» BSC установить соединение с абонентом, и, в случае успеха, передаст ему это SMS-сообщение. В противном случае, уже MSC может уведомить SMSC о том, что абонент доступен (могу ошибаться в деталях).
Теперь SMS должно каким-то образом начать свой трудный путь от SIM-карты до ближайшей базовой станции. Для этого телефон жены должен преобразовать строку из 176 в 279 байт для сигнального протокола SS7, преобразовать эти цифровые байты в аналоговый радиосигнал, а затем отправить сигналы в эфир с частотой где-то между 800 и 2000 МГц. Это означает, что между пиками волн расстояние от 15 до 37 см.

Между модуляцией сигнала и сетью SS7 огромная пропасть, заполненная целой кучей протоколов. Для наглядности:

image

Единственная аномалия, где телефон действительно имеет дело с протоколами SS7 (а именно TCAP и MAP) — это SS/USSD, т.е. всем знакомые *100# и т.д. В данном случае, телефон хоть и кодирует (либо декодирует) уже готовое сообщение протокола MAP, но, как ни крути, никак не взаимодействует с сетью SS7.
Да, зачастую комментарии полезнее статьи :)

Тоже обратил внимание на все те же моменты, которые Вы прокомментировали. Браво, что не поленились!

Статья неполная без сравнений единиц измерений в футбольных полях и гамбургерах. Откуда читателю знать, 2000 МГц это много или мало? Лучше мерить в футбольных полях!

Обратите внимание, что разработчики знали пол моей жены

спасибо за статью, было интересно. Но заголовок стоило выбрать другой, тк создаётся впечатление, что пост о том как отправляются смс, а не всё сразу
Черт, тщетно пытался среди дибильных вставок всяких фантазий автора рассмореть собственно алгоритмы и функциональные особенности, но не осилил. Зачем такое вообще писать, ни литературы, ни технически грамотного подхода.
Это третья статья в цикле full-stack dev

ссылка на цикл не работает
работает, только прокси надо
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.