Protokół SOS: specyfikacja techniczna wymiany tekstowej przez SMS
Protokół SOS definiuje strukturę i logikę tekstowej komunikacji o charakterze intymnym przesyłanej za pośrednictwem SMS. Wykorzystuje ścisły format wiadomości z wyodrębnionymi stanami, flagami oraz sumą kontrolną, zapewniając synchronizację i weryfikację integralności danych. Dokument opisuje format wiadomości, stany automatu skończonego oraz mechanizmy obsługi błędów — wszystko w celu zapewnienia niezawodnej pracy bez konieczności połączenia z internetem.
Format i struktura wiadomości
Wiadomość SOS budowana jest według schematu: SOS-message = start-tag "|" version "|" state "|" session-id "|" flags "|" payload-length "|" payload ["|" checksum]. Pola są oddzielone pionową kreską.
- start-tag: „SOS” — identyfikator protokołu.
- version: „1” — obecna wersja.
- state: jeden ze stanów (IDLE, SYNS, SYNR, ESTD, FINW, PRMT, BUSY, SUSP, CLSD, MORE).
- session-id: pięciocyfrowa liczba (1–65535), rosnąca monotonicznie dla każdego sesji.
- flags: „A” (ACK), „F” (FIN), „R” (RST) lub puste pole.
- payload-length: trzy cyfry określające długość ładunku w znakach (0–160).
- payload: tekst zawierający możliwe sekwencje sterujące.
- checksum: dwa znaki szesnastkowe, opcjonalne.
Przykład: SOS|1|SYNS|42||12|Cześć, piękna|3E.
Obliczanie sumy kontrolnej
Algorytm:
- Podziel ładunek na słowa (bez spacji).
- Pomnóż długości tych słów (jeśli ładunek jest pusty — wynik to 1).
- Odejmij liczbę spacji.
- Weź resztę z dzielenia przez 256 i przedstaw w formacie szesnastkowym.
Ta metoda zapewnia prostotę i odporność na zakłócenia typowe dla urządzeń mobilnych.
Terminy i sekwencje sterujące
Kluczowe pojęcia:
- Inicjator: wysyła pierwszą wiadomość.
- Odbiorca docelowy: akceptuje lub odrzuca inicjację.
- Stan: etap działania automatu protokołu.
- Sekwencja serwisowa: emocjonalne lub sterujące markery umieszczone w ładunku.
Sekwencje sterujące w ładunku:
| Sekwencja | Znaczenie |
|-----------|-----------|
| Y | Zgoda |
| N | Odmowa |
| ... | Przerwa |
| :-) | Przyjazny namyk |
| ;-) | Żartobliwy podtekst |
| :-D | Śmiech |
| ^_^ | Radośnie potwierdzona zgoda |
| >_< | Zakłopotanie |
| ~ | Dwuznaczność |
| (.)(.) | Wskazanie na cechy fizyczne |
| ¯\_(ツ)_/¯ | Niepewność |
Implementacje mogą je analizować automatycznie w celu wyzwalania odpowiednich akcji.
Automat protokołu i stany
Każda strona prowadzi własny automat skończony. Synchronizacja odbywa się poprzez pola state i flags.
Stany:
- IDLE: Stan początkowy.
- SYNS: Oczekiwanie na odpowiedź na zaproszenie.
- SYNR: Otrzymano zaproszenie, wysłano odpowiedź.
- ESTD: Aktywna wymiana wiadomości.
- FINW: Oczekiwanie na potwierdzenie zakończenia.
- PRMT: Wczesne zakończenie sesji.
- BUSY: Tymczasowa niedostępność.
- SUSP: Podejrzana aktywność.
- CLSD: Sesja zakończona.
- MORE: Kontynuacja po zakończeniu (FIN).
Przejścia między stanami
Przejścia wyzwalane zdarzeniami (wysłanie/otrzymanie wiadomości SOS):
- IDLE → SYNS: wysłanie SYNS, limit czasu 10 min.
- SYNS → ESTD: otrzymanie SYNR + flaga A.
- SYNS → PRMT: przekroczenie limitu czasu lub otrzymanie RST.
- ESTD → FINW: ustawienie flagi F, limit czasu 2 min.
- FINW → CLSD: potwierdzenie A.
- FINW → MORE: odpowiedź MORE + A, powrót do ESTD.
- Dowolny stan → PRMT: otrzymanie RST lub przekroczenie limitu czasu.
- IDLE → BUSY: odpowiedź BUSY na SYN.
- SYNR → SUSP: niemonotoniczna wartość session-id lub błąd sumy kontrolnej.
Limity czasu i kary
- SYN: 10 min → PRMT.
- ESTD: 10 min na otrzymanie ACK → PRMT.
- FINW: 2 min → CLSD.
- MORE: 10 min → CLSD.
Kary:
- PRMT: blokada na 30 minut; po trzech wystąpieniach — 7 dni.
- BUSY: oczekiwanie 15 minut.
- SUSP: wysłanie RST + blokada na 24 godziny.
Obsługa kolizji
Przy aktywnej sesji na przyjęcie SYN: odpowiedź BUSY z komunikatem „sesja już aktywna”. Inicjator wraca do stanu IDLE. Naruszenie monotoniczności session-id → SUSP → RST.
Na co zwrócić uwagę:
- SOS standaryzuje wymianę SMS z obsługą stanów i sumą kontrolną, zapewniając niezawodność.
- Umożliwia synchronizację poprzez SYNS/SYNR/ESTD bez dostępu do internetu.
- Sekwencje sterujące upraszczają komunikację emocjonalną.
- Kary i limity czasu skutecznie zapobiegają spamowi i zachowaniom nietypowym.
- Prosta suma kontrolna jest odporna na zakłócenia typowe dla transmisji SMS.
— Editorial Team
Brak komentarzy.