Powrót do strony głównej

Protokół SOS dla SMS: specyfikacja

Protokół SOS standaryzuje wymianę tekstową przez SMS z użyciem stanów, flag i sumy kontrolnej. Opisano format wiadomości, automat skończony, przejścia i obsługę błędów. Nadaje się do implementacji na urządzeniach mobilnych bez internetu.

Protokół SOS: pełny rozbiór dla SMS
Advertisement 728x90

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.

Google AdInline article slot

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:

Google AdInline article slot
  • 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 |

|-----------|-----------|

Google AdInline article slot

| 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

Advertisement 728x90

Czytaj dalej