icq autopsie

ICQ autopsie

Acum, că aveți o idee despre activitatea ICQ poți vorbi despre lucruri mai serioase. Acum am, de fapt, să ne deschidere ICQ.

date de protocol UDP Poștale

După cum sa menționat deja, mesajele ICQ pot fi trimise prin UDP. UDP câmp de pachete de date la trimiterea de la client la server are următoarea structură:

0 sau mai mulți parametri. Depinde de câmpul de comanda

Luați în considerare fiecare dintre parametrii trecut la pachet:

VERSIUNEA - este prezentă în fiecare ambalaj, indicând în primul rând că acest pachet de ICQ. De asemenea, se indică numărul de versiune ICQ (aici este versiunea 4 a ICQ. Deci, valoarea va fi 04, 00)

SEQ_NUM (n) - conține un număr de secvențe de pachete. Fiecare pachet are numărul său unic propriu, exceptând cazurile când pachete de retransmisie. Acest câmp este utilizat pentru a urmări pierderea de pachete sau duplicarea. Fiecare pachet crește valoarea de unul. Server și client sunt pachete de numerotare care nu se suprapun. Ie pachete de numărul de secvență de la serverul nu este conectat la numerele de serie ale pachetelor de client. Numărul primului pachet la serverul începe cu 00 00 și 01 00 la client.

COMANDĂ - trimite comenzi pot avea valori diferite, dar ne vom ocupa doar cele mai elementare, necesare pentru transmiterea mesajelor și a stării de ieșire a clientului.

Comenzile trimise de la client la server:

Înregistrează-te pe server

Pentru a transfera server „lista de contacte“

Acesta este trimis pentru a confirma faptul că utilizatorul nu este deconectat de la rețea

Utilizatorul a schimbat statusul

Trimis în timpul înregistrării pe server

Actualizarea informațiilor de bază despre utilizator

Trimite un mesaj pentru utilizator, nu în lista de contacte. Este folosit pentru a trimite textul care însoțește solicitarea de a adăuga la lista de contacte


ACK - confirmare de primire a pachetului. Spre deosebire de alte echipe, câmpul SEQ_NUM conține numărul de serie al recepției mesajului este confirmată. Acceptarea acestui pachet nu ar trebui să fie confirmat.

SEND_MESSAGE - trimite un mesaj prin intermediul serverului.