CSMS (ang. Concatenated SMS)[1] – usługa łączonych SMS-ów umożliwiająca przekroczenie ograniczenia do 160 znaków dla pojedynczego SMS-a. Przy użyciu tej metody, długie wiadomości dzielone są po stronie nadawczej, a po stronie odbiorczej, po odebraniu wszystkich danych, fragmenty są łączone celem prezentacji użytkownikowi. Należy jednak pamiętać, że opłata jest naliczana za każdą wiadomość składową CSMS-a. Początkowo, ze względu na brak wzajemnej zgodności pomiędzy operatorami telekomunikacyjnymi, użycie funkcji CSMS mogło być utrudnione.
Obecnie, usługa CSMS jest szeroko rozpowszechniona. Także dostawcy niektórych bramek SMS oferują taką usługę.
W jedną wiadomość CSMS można połączyć do 255 SMS-ów (ok. 40 kB), ale terminale pośredniczące nakładają jednak ograniczenie do ok. 900 znaków.
W celu przesłania długiej wiadomości jest ona dzielona na części składające się maksymalnie z 133 lub 134 oktetów (153 lub 152 7-bitowych znaków). Do tego dodawane jest 6 lub 7 bajtów jako UDH zawierających informacje o tym, jak dokonać ponownego połączenia wiadomości. Należy pamiętać, że jeśli używamy takich opcji jak formatowanie tekstu lub osadzona grafika, maksymalna długość pojedynczej wiadomości ulegnie dalszemu skróceniu.
Przykładowy format UDH opisujący długą wiadomość z 8-bitowym numerem referencyjnym przedstawia się następująco:
Przykładowy format UDH opisujący długą wiadomość z 16-bitowym numerem referencyjnym przedstawia się następująco:
Należy także pamiętać, że w przypadku kiedy rozmiar w bitach elementu UDH nie jest wielokrotnością jednostki kodowania znaków w wiadomości (np. 7-bitowych znaków) dodawane są bity wyrównujące, gdyż dane użytkownika (właściwa wiadomość) muszą zaczynać się od bitu będącego wielokrotnością jednostki kodowania znaków.
Przykład: Dla UDH, które zajmuje 6 bajtów (8-bitowy numer referencyjny) i znaków kodowanych 7 bitowo wielkość UDH wynosi 48 bitów, i nie jest wielokrotnością 7. W taki wypadku dodawany jest 1 bit wyrównujący, aby wiadomość użytkownika zaczęła się od 49 bitu. (bity numerowane od 0, czyli UDH jest na bitach 0 - 47 + 48 bit wyrównujący + treść wiadomości od 49 bitu).
Przykład UDH dla SMS-a podzielonego na dwa fragmenty:
05 00 03 CC 02 01 [ treść wiadomości ]05 00 03 CC 02 02 [ treść wiadomości ]
| Liczba wiadomości | SMS | CSMS | ||||
|---|---|---|---|---|---|---|
| 7-bit | 8-bit | 16-bit | 7-bit | 8-bit | 16-bit | |
| 1 | 160 | 140 | 70 | nie dotyczy | nie dotyczy | nie dotyczy |
| 2 | 320 | 280 | 140 | 306 | 268 | 134 |
| 3 | 480 | 420 | 210 | 459 | 402 | 201 |
| 4 | 640 | 560 | 280 | 612 | 534 | 268 |
| 5 | 800 | 700 | 350 | 765 | 670 | 335 |
| Kolejna wiadomość | +160 | +140 | +70 | +153 | +134 | +67 |