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ő
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)