?

Log in

No account? Create an account
dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
GSM: Почему у белого медведя нос черный или Почему в смс влазит 160 символов, а не 255? 
10th-Nov-2006 04:35 pm
Заказной пост на тему: "А про sms можно рассказать? какой там протокол, и почему сообщение ограничено 160 символами?"

Учитывая, что про SMS материалов в сети масса, ответ будет коротким.

В процессе "придумывания" SMS (а его именно "придумывали", т.к. в отличие от голоса/факса у SMS не было аналога в "проводном" мире) перед авторами спецификации встал вопрос - как передавать SMS-ы между коммутаторами? Было принято решение использовать механизмы, доступные в рамках стека протоколов SS7 (Signalling System #7). Протокол MAP (используемый MSC для передачи "сигнальной" информации о звонке в процессе коммутации - кто звонит, кому звонит, и т.п.) был расширен специальным сообщением forward_short_message, содержимое которого, собственно, и является телом SMS.

Именно отсюда ростут ноги у известного ограничения. Протокол MAP основан на протоколе TCAP, который по своей природе предусматривал работу в режиме real-time, в стиле "короткий request - короткий responce". Естественно, что ни о какой фрагментации/сессиях в стиле TCP в рамках TCAP речь не шла. MAP унаследовал эту особенность.

Вот и получилось, что 1 SMS должен был обязательно влазить в одно MAP-сообщение. Максимальный размер payload в MAP - 140 байт или (140 * 8 = 1120 бит). В такое кол-во бит можно засунуть либо 160 7-битных символов, либо 140 8-битных, либо 70 16-битных. И только сравнительно недавно мобильные терминалы научились делать SMS concatenation и обходить это ограничение.

Литература:
Comments 
8th-Sep-2010 05:18 pm (UTC) - как оно на самом деле
Anonymous
СМС имеет ограничение 140 байт потому что по радиоэфиру оно передается по сигнальному каналу. Сигнальный пакет имеет ограничение 160(примерно) байт. 20 байт тратится на служебную информацию (от кого, тип пакета, кодировка, протокол, тип сессии и т.п.)

оставшиеся 140 символов - под текст.

в MAP/TCAP ограничений на размер нет. в SCCP ограничение 252 байт на пакет (UNITDATA) и есть возможность посылать составные пакеты (XUNITDATA) или пакеты длиной до 4096 байт.
в MTP3/MTP2 ограничение 4096 байт. В расширенном MTP еще больше.
This page was loaded Oct 20th 2019, 4:33 pm GMT.