Wireless Session Protocol (WSP) je protokol relační vrstvy rodiny protokolů Wireless Application Protocol (WAP). Jedná se o otevřený standard[1] pro udržování vysokoúrovňových relací. WAP relace není nic jiného než normální WWW relace, která začíná, když se uživatel připojí na určité URL a končí, když je uživatel opustí. Vytvořením relace je míněno, že vlastnosti používané při relaci se definují pouze jednou na začátku relace, což šetří přenosovou kapacitu, která je kvůli povaze bezdrátová komunikace omezená. Proces vytváření relace nesmí obsahovat příliš dlouhý handshake mechanismus.
WSP vychází z HTTP 1.1 s několika vylepšeními. WSP poskytuje horní rozhraní aplikační vrstvy služby WAP s konzistentním rozhraním pro dvě relační služby. První je spojovaná služba, která využívá transakční vrstvu protokolu WTP a druhá je nespojovaná služba, která využívá zabezpečenou nebo nezabezpečenou datagramovou transportní službu. WSP ve spojovaném režimu vylepšuje výkonnost protokolu HTTP 1.1 při použití bezdrátové komunikace. V nespojovaném režimu poskytuje relační vrstvu. Díky tomu se celé prostředí WAP podobá referenčnímu modelu ISO/OSI.
Účel
WSP poskytuje prostředky pro:
spolehlivé navázání a ukončení relace mezi klientem a serverem
vyjednání společné úrovně funkčnosti protokolu pomocí vyjednávání kapabilit
výměnu informací mezi klientem a serverem pomocí kompaktního kódování
pozastavení a obnovení relace
Popis
WSP je relační služba poskytující spojované i nespojované služby. Začlenění WSP do komunikačního zásobníku WAP ukazuje následující obrázek:
Nespojované WSP poskytuje nespolehlivý přenos WSP primitiv pro metody pull i push. Spojované WSP využívá WTP a poskytuje spolehlivý přenos WSP primitiv, správu relací, vyjednávání o kapabilitách relace, přenos rozsáhlejších dat (díky segmentaci a sestavování segmentů) a spolehlivý přenos dat (díky mechanismu potvrzování). Nezávisle na použití WTP, může WSP v nezabezpečených sítích používat WTLS, aby se zabránilo odposlechu.
PDU nespojovaného WSP začíná jedním oktetem obsahujícím Transaction ID (TID), který slouží pro spárování požadavku a odpovědi; u spojovaného WSP tento oktet chybí.
Další oktet identifikuje typ PDU:
Typ PDU
Hodnota
0x00
Reserved
0x01
Connect
0x02
ConnectReply
0x03
Redirect
0x04
Reply
0x05
Disconnect
0x06
Push
0x07
ConfirmedPush
0x08
Suspend
0x09
Resume
0x10–0x3F
Unassigned
0x40
Get
0x41
Options (Get PDU)
0x42
Head (Get PDU)
0x43
Delete (Get PDU)
0x44
Trace (Get PDU)
0x45-0x4F
Unassigned (Get PDU)
0x50-0x5F
Extended Method (Get PDU)
0x60
Post
0x61
Put (Post PDU)
0x62–0x6F
Unassigned (Post PDU)
0x70-0x7F
Extended Method (Post PDU)
0x80
Data Fragment PDU
0x81-0xFF
Reserved
Struktura zbytku PDU závisí na typu PDU. Protože jména a hodnoty mnoha HTTP polí jsou tvořeny pevnými řetězci, poskytuje WSP metodu pro kompaktní kódování HTTP hlaviček. V místech, kde se mohou vyskytovat ASCII řetězce jsou kódy tisknutelných ASCII znaků (32-126) vyhrazeny pro doslovný zápis řetězců, ostatní hodnoty bytů slouží pro binárně zakódovaná data.