3 Icq

Minden felhasználó ICQ egy listát, akikkel / akar kommunikálni. Ez a lista lehet hosszabbítani. Minden felhasználó számára, hogy állapotát jeleníti meg a névjegyzékben.

ICQ protokoll lehetővé teszi nem csak a kommunikáció, hanem a fájlokat. Sajnos, több változata van, a szabvány. Ezen túlmenően figyelembe kell venni azt a tényt, hogy az ICQ protokoll nem nyilvános (jogokat, tartozik a cég Mirabilis). Emiatt, mivel a leírás nem kell figyelembe venni a hivatalos és itt oktatási célokat .. ábra. Az 1. ábra egy általános rajza a felhasználói interakció a szerver és egymással.

Ábra. A 3. ábra egy keret változata ICQ 5 formátumban.

Cím ICQ csomag (kliens oldal)

Paraméterek csoportokat küldött

Ábra. 3. A képméretarány az ICQv5

Az első két byte írja le a protokoll verzióját. Aztán, miután négy oktett nulla legyen egy egyedi ügyfél azonosító UIN. Miután a munkamenet-azonosítót kell a parancs kódot. Ebben a konkrét esetben kodandy kódot diszkontinuitás soedieniya - 0xC2EE (big-endian). ID mező ülés és sorozatszámát (SEQ_NUM1, SEQ_NUM2) a biztonsági célokra használjuk.

Kapcsolat a partner székhelye egy TCP kapcsolat. Minden más kommunikációs felhasználásával hajtják végre UDP adatcsomagok küldött ICQ-kiszolgálón. Első összes UDP-datagrammokat támogatnia kell a címzett. Ha ez nem megerősítést sortovábbítás jelentkezik 10 másodpercen belül. Miután 6 sikertelen újraküldésére az üzenet B_MESSAGE_ACK. Az eljárást megismételjük 2 alkalommal. Ha a válasz nem érkezik, ICQ kliens le van tiltva.

Amikor egy felhasználó egy üzenetet küld / URL / etc egy másik felhasználó, aki csatlakozik a szerverhez, ICQ kliens létrehoz TCP kapcsolatot közvetlenül a felhasználó, és üzenetet küld egy hasonló formátumban (de nem azonos) használatával küldjük UDP csomagokat. Miután az üzenetet küldött, TCP kapcsolat nincs lezárva, és nyitva tartjuk, majd tovább üzenetküldés. Vegyület zárva, ha valamelyik felhasználó ICQ kapcsolat szünetek.

Minden vonalkiegyenesítés kezdődik egy két byte hosszúságú területen. jelezve a bájtok számát a húr. Bármilyen vonalak ez a protokoll kód megszűnt 00 olvasása közben a csomag minden olyan információt fel lehet használni, hogy meghatározza a vonal hossza, de ha küld kell használni, mint a hossza mezőben, utolsó két nulla bájt. Minden vonal használható MS Windows kódolás, azaz karakterkészlet ISO Latin-1, és a szó vonal megszűnik CR / LF. (Nem minden sort tartalmazhat szüneteket.)

VERSION területén jelen van minden ICQ csomagokat, és azonosítja a csomagot ICQ üzenet. SEQ_NUM mező sorszámát a csomagot. Minden csomag rendelkeznie kell egy egyedi sorszámot (kivéve, ha ez egy újraküldés). Ez úgy történik, hogy a félreértések elkerülése végett, ha UDP csomag elvész vagy zadublirovan. Normális esetben SEQ_NUM aktuális csomag egyenlő + 1. Vegye figyelembe, hogy a szerver és a kliens különböző számozás, így SEQ_NUM = 3 csomag a szerver által küldött eltér SEQ_NUM = 3 csomag a kliens által küldött. Megjegyzendő, hogy a szerver elindul a számozás 00 00, és az ügyfél - 01 00.

Az alábbi lista a parancsokat, hogy az ügyfél küldhet a kiszolgálón:

USER_OFFLINE (78 00) a felhasználó a névjegyzék elment offline módot

Tartalom (ha meg van adva)

UIN felhasználó kijelentkezett (kijelentkezett)

USER_FOUND (8C 00) felhasználó rekord, amely megfelel a keresési feltételeknek

Tartalom (ha meg van adva)

Keresés sorszám

Talált felhasználók UIN

Hossza NICK_NAME, beleértve NULL

Talált felhasználó (nick név) egy NULL-lezárt beceneve

Hossza FIRST_NAME, beleértve NULL

Keresse meg a felhasználó nevét NULL-lezárt

A hossza a LAST_NAME, beleértve NULL

Talált felhasználónév egy NULL-lezárt

Hossza E_mail, beleértve NULL

Minden egyes felhasználónak, amely megfelel a keresési feltételeknek küldjük USER_FOUND. Ha minden USER_FOUND küldött, a szerver küld END_OF_SEARCH. Ha a felhasználók számára, hogy megfelel a jogosultsági feltételek nem, akkor azonnal küldött END_OF_SEARCH, és nem lesz küldött semmilyen USER_FOUND. HATALMAZZA határozza meg, hogy a felhasználó lehetővé teszi, hogy valaki közé valaki a névjegyzék. MEGENGEDHETIK lehetséges értékek:

1 = felhasználó bárki számára lehetővé teszi lehetővé teszi neki / neki, hogy lépjen kapcsolatba a listát

RECEIVE_MESSAGE (DC 00) üzenetet küldött a kiszolgáló, ha az ügyfél nem elérhető

Tartalom (ha meg van adva)

Új felhasználó aktuális állapotát

Az érték a jelenlegi állapotát az Állapot ugyanaz, mint a STATUS_CHANGE (D8 04). A további részleteket lásd a leírást STATUS_CHANGE.

TCP cserél azonos kommunikációs bevonásával UDP. Minden csomag tartalmaznia kell egy csomag hossza (kivéve a számláló hosszúságú). A kód hossza foglal két oktett. A legtöbb jelentés tartalmazza a feladó UIN.

CHANNEL_INIT kezdeményezése közötti felhasználói interakció TCP

Tartalom (ha meg van adva)