Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Titulny_List.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
78.4 Кб
Скачать

1. Понятие и сущность технологии sms

SMS (англ. Short Message Service - служба коротких сообщений) - технология, позволяющая осуществлять приём и передачу коротких текстовых сообщений сотовым телефоном. К настоящему времени входит в стандарты сотовой связи.была создана как составная часть стандарта GSM Phase 1. Впервые идея осуществления сервиса возникла в 1984 г. и была затем реализована группой инженеров, среди которых были: Фридхельм Хиллебранд (Дойтче Бундеспост), Бернар Жильбер (PTT), Финн Тросби (Telenor), Кевин Холли (Cellnet), Йан Харрис (Vodafone) к 1989 году.[1] (нем.) Впервые система рассылки коротких сообщений была опробована в декабре 1992 года в Великобритании для передачи текста с персонального компьютера на мобильный телефон в сети GSM компании Vodafone, спустя год после появления стандарта GSM на европейском рынке.

По отчёту Cellular Telecommunications Industry Association (CTIA), около 40 % пользователей мобильных телефонов пользуются SMS.

В России вплоть до 2002 года обмен SMS-сообщениями между различными московскими операторами был невозможен.

Текст может состоять из алфавитно-цифровых символов. Максимальный размер сообщения в стандарте GSM - 140 байт (1120 бит). Таким образом, при использовании 7-битной кодировки (латинский алфавит и цифры) можно отправлять сообщения длиной до 160 символов. При использовании 8-битной кодировки (немецкий, французский язык) можно отправлять сообщения длиной до 140 символов. Для поддержки других национальных алфавитов (китайского, арабского, русского и др.) используется 2-байтовая (16-битная) кодировка UTF-16. Таким образом, SMS, написанное кириллицей, не может превышать 70 знаков. Существуют[3] и поддерживаются частью телефонов и восьмибитные кодировки кириллицы - так называемая локальная российская кодировка KOI8-R и Windows-1251. Но при использовании таких кодировок возникают проблемы с совместимостью: как телефон отправителя, так и телефон получателя сообщения должны быть заранее настроены на "сокращённый набор символов", при такой настройке невозможна отправка сообщений с использованием других алфавитов, кроме кириллицы и латиницы. К тому же поддержка кодировки телефонами несовершенна: в случае переключения телефона на UTF-16 (Юникод) сообщения, сохранённые в восьмибитной кодировке, могут быть испорчены так, что не восстанавливаются даже при обратном переключении. Поэтому даже телефоны, поддерживающие восьмибитную кириллическую кодировку, по умолчанию (то есть без изменения настройки) используют UTF-16.

В стандарте также предусмотрена возможность отправлять сегментированные сообщения. В таких сообщениях в заголовке пользовательских данных (UDH) помещается информация о номере сегмента сообщения и общем количестве сегментов. Максимальная длина сегмента при этом уменьшается за счет этого заголовка. Как правило, каждый сегмент тарифицируется как отдельное сообщение. Сегментирование поддерживают почти все современные телефоны, но часто в телефонах вводится ограничение на количество сегментов в сообщении. Телефон, который не поддерживает сегментирование, отображает каждый сегмент как отдельное сообщение.

Большинство современных мобильных телефонов всех стандартов позволяют использовать SMS в полном объёме.

Для того чтобы телефон мог отправлять SMS, необходимо указать номер SMS-центра (SMSC) оператора мобильной связи. В подавляющем большинстве случаев этот номер уже записан на SIM-карте и настраивать его вручную не нужно.

Входящие SMS сохраняются в списке входящих сообщений, где они могут быть просмотрены. Некоторые модели телефонов хранят этот список на SIM-карте, и потому имеют ограничения на количество хранящихся сообщений (несколько десятков). Современные модели хранят список сообщений в памяти телефона, и количество сообщений ограничено только размером памяти телефона. Отправленные сообщения сохраняются в списке отправленных сообщений, также существуют отдельные списки для неотправленных сообщений и для черновиков. В смартфонах и коммуникаторах SMS иногда хранятся в общем почтовом ящике, там же, где сообщения электронной почты и MMS.

Для набора SMS на мобильном телефоне, как правило, используется цифровая клавиатура телефона. Набор осуществляется либо путём последовательных нажатий для выбора нужной буквы, либо при помощи какой-либо системы предикативного набора, типа T9 или iTAP. Некоторые модели телефонов имеют алфавитно-цифровую клавиатуру, что существенно облегчает набор. В смартфонах и коммуникаторах также может использоваться экранная клавиатура.

. Отправка коротких сообщений (SMS) через сотовый телефон, подключенный к компьютеру

Алгоритм работы сервера

Существует 2 типа сообщений: текстовые и PDU (Protocol Data Unit). В общем, это одно и тоже, просто в режиме отправки текстовых сообщений Вы не сможете передавать русские буквы и, вообще, буквы не английского алфавита (греческие и др.), поскольку программное обеспечение телефона не будет их преобразовывать в формат PDU. Поэтому сразу начнем рассмотрение передачи сообщений в режиме PDU.

Будем различать принятые и исходящие сообщения.

Формат принятого сообщения:

1-12 байт

1 байт

2-12 байт

1 байт

1 байт

7 байт

1 байт

0-140 байт

SCA

PDU-type

OA

PID

DCS

SCTS

UDL

UD

Биты поля PDU-type называются так:

RP

UDHI

SRI

MMS

MTI

биты

7

6

5

4

3

2

1

0

Поле MTI должно быть таким: бит 0 = 0, бит 1 = 0.

Формат исходящего сообщения:

1-12 байт

1 байт

1 байт

2-12 байт

1 байт

1 байт

0, 1 или 7 байт

1 байт

0-140 байт

SCA

PDU-type

MR

DA

PID

DCS

VP

UDL

UD

Биты поля PDU-type называются так:

RP

UDHI

SRR

VPF

RD

MTI

биты

7

6

5

4

3

2

1

0

Поле MTI должно быть таким: бит 0 = 1, бит 1 = 0.

Все неиспользуемые биты нужно установить в 0.

Названия и назначение полей:

SCA

номер SMSC (СМС-сервером)

PDU-type

поле данных протокола

MR

количество успешно переданных (0..255) сообщений с телефона

OA

телефон отправителя

DA

телефон получателя

PID

идентификатор протокола: указывает SMSC, как обрабатывать сообщение

DCS

схема кодирования данных в поле данных

SCTS

время получения сообщения SMS-сервером

VP

время действия сообщения (если сообщение не будет получено абонентом в течение этого времени, SMSC его не будет передавать)

UDL

длина поля данных

UD

поле данных

RP

указывает на наличие поля ответа

UDHI

указывает на наличие заголовка в поле UD

SRI

требование принимающего получить статус сообщения

SRR

требование отправителя получить статус сообщения

VPF

флаг наличия поля VP

MMS

количество неотправленных сообщений в SMSC

RD

удалить дубликаты

MTI

тип сообщения: если 00 - входящее, 01 - исходящее

Все поля подразумевают то, что они шестнадцатеричные (кроме битовых). Но в телефон они отправляются в виде символов. Т.е. если поле имеет значение 41H, то передаются два символа: 34H ("4") и 31H ("1").

SCA

Длина поля - 1 байт

Тип номера - 1 байт

Номер от 0 до 6 байт

 Длина содержит байт, указывающий длину номера SMSC + 1 байт типа этого номера.

 Тип номера может быть или 81H - национальный, или 91H - международный. Но лучше использовать 91H с нашими Московскими операторами.

 Поле номера кодируется следующим образом: каждая пара цифр меняется местами. Если количество цифр нечетно, тогда в конец номера дописывается 0xF.

Например, для Московского БИЛАЙН'а номер SMSC: +790173100 Поле SCA будет выглядеть так: 069197103701F0.

Если параметр длина поля = 0, тогда телефон должен взять номер SMS из своих настроек. А поскольку уверенным в правильности этого номера быть нельзя, как, впрочем, и в том, что Ваша модель телефона сработает именно так, лучше всегда здесь указывать номер SMSC.

PDU

 RP: установим его в 0

 UDHI: установим его в 0

 SRI: (устанавливается в SMSC)

 SRR:=Установим в 0

 VPF: Установим в 00

 MMS: (устанавливается в SMSC)

 RD: Установим=в 0

 MTI: Описано выше

Поле MR формируется в SMSC, но нужно что-либо там хранить, например 0х0.

OA и DA

Формируются аналогично полю SCA.

Пример:

Если нужно записать национальный номер (в Москве сообщение по такому номеру не дойдет), 1234567 преобразуется в 0781214365F7.

PID

Сообщает транспортному уровню, какой протокол высшего уровня должен обрабатывать это сообщение.

Некоторые возможности:

 00H: обычное сообщение

 41H: замещать сообщение типа 1

 42H: замещать сообщение типа 2

 43H: замещать сообщение типа 3

 ......

 47H: замещать сообщение типа 7

DCS

Фактически нужны только два варианта поля + флажок вывода на экран:

 80H: кодировка UCS2 (70 знаков);

 00H: кодировка 7-бит (160 знаков, но не кириллическая).

Если при этом указать, что старший полубайт равен FH, то сообщение будет выводиться сразу на экран, как в старой системе БИ+GSM (т.н. Flash-SMS). Причем сообщение будет отображаться на экране независимо от кодировки, если Ваш аппарат поддерживает UCS2 (например, Нокия Логоменеджер не умеет отправлять Flash-SMS на русском языке.)

Т.е для Flash-SMS:

 F8H: кодировка UCS2 (70 знаков);

 F0H: кодировка 7-бит (160 знаков, но не кириллическая).

UDL

Длина поля данных в байтах. Собственно, если сообщение состоит из одного символа UCS2, то его длина - 2 байта, а если из одного символа в 7-битной кодировке - один байт.

UD

Начнем с UCS2. Сама кодировка повторяет Unicode. Т.е. для английских символов просто однобайтовой кодировки добавляется байт 00H. Для русских (те, что начинаются с C0H в Windows-кодировке) можно создать такое правило:

Из байта вычитается C0H и прибавляется 410H (кроме букв "ё" и "Ё", которые в Unicode имеют коды 0451H и 0401H соответственно). Точное описание кодировок можно увидеть здесь: <http://www.webclub.ru/content/markup_refs/article-40.html>.

-битная кодировка. Английские буквы этой кодировки по кодам не отличаются от восьмибитной. Русских букв нет.

Упаковка 160 символов в 140 байт производится следующим образом:

Первый байт записывается так:

старший бит берется из младшего бита 2-го байта, 7 остальных бит - биты первого символа.

Второй байт записывается так:

два старших бита берутся из младших разрядов 3-го байта, а шесть младших - из оставшихся битов второго символа и т.д.

Пример: кодирование слова hellohello

Семибитная запись 10 букв:

Девять восьмибитных байтов со словом hellohello:

В следующей таблице представлена псевдорусская кодировка, которую можно предложить для телефонов, не поддерживающих кириллицу.

А

Б

В

Г

Д

Е

Ё

Ж

З

и

й

К

Л

М

Н

A

6

B

G

D

E

Й

*

З

u

щ

K

L

M

Н

41

36

42

05

06

45

С9

2A

33

75

F9

4B

08

4D

48

О

П

Р

С

Т

У

Ф

Х

Ц

Ч

Ш

Щ

Ъ

Ы

Ь

Э

Ю

Я

О

P

P

C

T

Y

F

X

_

_

W

_

_

Ы

Ь

_

_

_

4F

0B

50

43

54

59

0F

58

57

626C

62

Такая кодировка позволяет отображать на экранах аппаратов Motorola, Siemens (модели младше S25) и других, не понимающих формат UCS2, почти русские сообщения. К сожалению, не все символы русского языка можно передать таким кодом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]