dastapov: (Default)
Dmitry Astapov ([personal profile] dastapov) wrote2006-11-10 04:35 pm
Entry tags:

GSM: Почему у белого медведя нос черный или Почему в смс влазит 160 символов, а не 255?

Заказной пост на тему: "А про 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 и обходить это ограничение.

Литература:

[identity profile] zverik.livejournal.com 2006-11-11 07:41 am (UTC)(link)
А почему тогда на русские сообщения выделяется 80 символов, а не 60?
И почему нельзя было сделать лимит в 140 сообщений для русского языка - всего лишь минимальная поддержка кодировок... Да и вообще, десяти бит на символ должно зватить всем, кроме африканцев и китайцев, которым и так это не нужно...

Блин, массовые опечатки =)

[identity profile] zverik.livejournal.com 2006-11-11 07:44 am (UTC)(link)
60 -> 70
сообщений -> символов
зватить -> хватить

Re: Блин, массовые опечатки =)

[identity profile] http://users.livejournal.com/_adept_/ 2006-11-11 12:25 pm (UTC)(link)
А кто сказал 80? Я проверил на трех доступных телефонах разных производителей - везде 70.

По поводу меньшего кол-ва бит на символ - возможно, оно было бы и хорошо. Но с точки зрения вселенского счастья, зачем городить еще один UTF-10, кроме UTF-8 и UTF-16?

Re: Блин, массовые опечатки =)

[identity profile] zverik.livejournal.com 2006-11-11 01:03 pm (UTC)(link)
Ну, когда счёт идёт на биты - оптимизация всегда полезна.. UTF-8/16 излишне избыточны, я их изначально не одобрял :)

Re: Блин, массовые опечатки =)

[identity profile] http://users.livejournal.com/_adept_/ 2006-11-11 01:17 pm (UTC)(link)
(став в позу, с пафосом) Да? И что ты сделал для того, чтобы не допустить их всемирного распространения? :)

Re: Блин, массовые опечатки =)

[identity profile] zverik.livejournal.com 2006-11-11 02:01 pm (UTC)(link)
Возглавил движение против utf-8 (в котором, правда, пока лишь один участник =))

А действительно, создатели стандарта отправки сообщений могли выбрать любую кодировку, благо маловероятно, что телефоны к тому времени поддерживали юникод. Вон, выбрали семибитную кодировку, которая ведь не совпадает с ASCII, так? Могли бы заодно принять стандарт на расширенную десятибитную кодировку, а не [внезапно] использовать существующий избыточный стандарт, который ОЧЕНЬ маловероятно, что полностью поддерживается всеми телефонами на текущий момент...

Re: Блин, массовые опечатки =)

[identity profile] http://users.livejournal.com/_adept_/ 2006-11-11 02:51 pm (UTC)(link)
По поводу того, что могли выбрать другую кодировку - Тут уже приводили фразу про верблюда и "А что у меня вообще прямое?".

Я уверен, что если найти, где копнуть историю, то высплывут тоннами подробности о том, как каждый участник консорциума тянул одеяло на себя, и в конце концов выбрали UTF-16, как вариант, который был одинаково всем неудобный.

Re: Блин, массовые опечатки =)

[identity profile] zverik.livejournal.com 2006-11-11 07:50 pm (UTC)(link)
Мда. Тогда другой глупый вопрос - где можно почитать про саму семибитную кодировку, в частности, про её управляющие коды? Надеюсь найти что-нибудь интересное :)

Re: Блин, массовые опечатки =)

[identity profile] http://users.livejournal.com/_adept_/ 2006-11-11 09:30 pm (UTC)(link)
Я сегодня делал пост с ссылкой на "GSM Handbook". В нем есть appendix, а в нем - кодировка. Только похоже, что с управляющими кодами там не густо :)