1 / 30

PROTOCOLLO ICQ

PROTOCOLLO ICQ. di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi “G. D’Annunzio” Pescara A.A. 2005-2006. ICQ: UN PO’ DI STORIA.

mura
Download Presentation

PROTOCOLLO ICQ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROTOCOLLO ICQ di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi “G. D’Annunzio” Pescara A.A. 2005-2006

  2. ICQ: UN PO’ DI STORIA • Fino al 1996, era possibile collegarsi al World Wide Web, ma non era consentita alcuna forma di interconnessione tra gli utenti on-line. • JULE 1996 - Yair Goldfinger (26 anni), Arik Vardi (27 anni), Sefi Vigiser (25 anni) e Ammon Amir (24 anni) costituirono la Mirabilis, con lo scopo di creare un nuovo modo di comunicare in Internet. • NOVEMBER 1996 – fu sviluppata la prima versione dell’ICQ • Col tempo il protocollo ICQ ha subito diverse modifiche. Attualmente vi sono otto versioni del protocollo ICQ, ognuna delle quali è compatibile con la precedente. TUTTO CIO’ CHE SI CONOSCE SUL PROTOCOLLO ICQ E’ STATO OTTENUTO DALLA SPERIMENTAZIONE, ANALIZZANDO I PACCHETTI TRASMESSI E RICEVUTI DAI PROGRAMMI STANDARD.

  3. ICQ: ELEMENTI NECESSARI • PC connesso ad Internet • Programma “client” sul pc • Registrazione al server Mirabilis

  4. ICQ suona come “I SEEK YOU” COS’E’ L’ICQ? ICQ è uno dei primi “istant messaging” che dà la possibilità di instaurare delle conversioni tra utenti on-line.

  5. COME FUNZIONA ICQ: UN ESEMPIO • In fase di installazione, ICQ assegna ad ogni utente un Numero Identificativo Universale (UIN) • Quando un utente si connette ad Internet, l’ISP gli assegna un indirizzo IP SERVER Mirabilis 12345678 131.156.5.9 AGGIORNA 76540213 87643902 170.23.8.12 43896863 IP:131.156.5.9 IP:170.23.8.12 05876584 Anna è on-line Bob è on-line ANNA BOB SEND MESSAGES UIN: 87643902 UIN: 12345678

  6. IL PROTOCOLLO ICQ ARCHITETTURA Login message Login message • Due tipi di comunicazione: Client-Client e Client-Server • L’ICQ, a livello di trasporto, utilizza sia il protocollo UDP sia il protocollo TCP UDP UDP TCP UDP messages

  7. CLIENT-SERVER • Protocollo UDP • Porta 4000 (o superiori) • Numero di sequenza • “Acknowledgement” per ogni pacchetto inviato dal client al server e viceversa UDP UDP

  8. CLIENT-SERVERFORMATO PACCHETTI: HEADER PACCHETTI INVIATI DAL CLIENT AL SERVER:

  9. CLIENT-SERVERFORMATO PACCHETTI: HEADER PACCHETTI INVIATI DAL SERVER AL CLIENT:

  10. COMUNICAZIONE CLIENT-SERVER 1. FASE DI REGISTRAZIONE REG_NEW_USER UIN LOGIN_PACKET IP dinamico, #porta TCP LOGIN_REPLY

  11. COMUNICAZIONE CLIENT-SERVER 2. LISTA DEI CONTATTI Il client comunica al server l’elenco degli utenti con i quali desidera interagire. CONTACT_LIST ACK FORMATO DEL PACCHETTO LengthContent(if fixed) DesignationDescription 1 byte xx NUM_CONTACTS Number of UINs in this packet 4 bytes xx xx xx xx UIN_1 1st UIN in your contact list ............. 4 bytes xx xx xx xx UIN_n Last UIN in your contact list Il client può, in ogni momento, aggiungere nuovi utenti alla propria lista dei contatti, mediante l’invio del pacchetto “ADD_TO_LIST”

  12. CLIENT-CLIENT • Invio di messaggi, e-mail, url, contatti, file • Video conferenze • Telefonare on-line • Chat • Game • Invio di messaggi vocali

  13. CLIENT - CLIENT • Inizialmente è necessaria una connessione UDP • La connessione diretta tra client utilizza il protocollo TCP • “Acknowledgement” • Ogni tipo di connessione (Chat, File, Message) ha una propria “listening socket” • Tipicamente le porte TCP utilizzate sono nell’intervallo 1200-1300 TCP UDP

  14. CONNESSIONE UDP LATO CLIENT non riceve login_reply LOGIN_PACKET TCP_MSGPORT */porta che il client accetterà per le connessioni TCP PASSWORD */max 8 caratteri TCP_MSGIP */indirizzo IP del client TCP_FLAG */il client può instaurare una connessione TCP? */0x004=si 0x006=no STATUS */lo stato del client durante il login TCP_VER */versione del protocollo TCP usata dal client SEQ_LOGIN */numero di sequenza: uno per ogni “login_packet” invio login_packet invio login_packet Aspetta login_reply Off-line riceve login_reply no “user_on_line” && time-out invio ACK On line e aspetta “user_on_line” no “user_on_line” && no time-out Aspetta ACK invio “keep alive” L riceve “user_on_line” Connessione TCP invio ACK IPOTESI: un solo utente nella “contact_list”

  15. CONNESSIONE UDP LATO SERVER riceve “login_packet” non riceve ACK invio login_reply invia “login_reply” Aspetta login Aspetta ACK Non riceve keep alive riceve ACK time-out && utenti off-line L Utente off-line Cerca utenti on-line L Aspetta “keep alive” invia “user_on_line” riceve “keep alive” invio ACK non riceve ACK Aspetta ACK invia “user_on_line” IPOTESI: un solo utente nella “contact_list”

  16. COMUNICAZIONE TCP 1. FASE DI HANDSHAKE FORMATO INIT_PACKET LengthNameDescription 2 byte LENGTH Lunghezza di questo pacchetto 1 byte INIT_IDENT Identifica questo pacchetto come inizializzazione 4 byte MY_UIN l’UIN del client che invia questo pacchetto 4 byte MY_IP l’IP del client che invia questo pacchetto 4 byte MY_PORT Porta TCP dalla quale il client riceverà messaggi • NOTE: • Questo messaggio è lo stesso per ogni tipo di socket: Chat, File, Message. • Per questo messaggio il lato receiver non invierà alcuna risposta

  17. COMUNICAZIONE TCP 2. INVIO DEL MESSAGGIO FORMATO CHANNEL_MESSAGE LengthNameDescription 2 byte LENGTH Lunghezza di questo pacchetto 4 byte UIN UIN del “sender” 2 byte VERSION Versione del protocollo ICQ 2 byte MSG_COMMAND Tipo di messaggio 2 byte LENGTH Lunghezza del messaggio Variable MESSAGE Testo del messaggio 4 byte IP Indirizzo IP del sender 4 byte PORT Porta TCP per i messaggi in entrata 2 byte TCP_SEQUENCE Numero di sequenza

  18. CONNESSIONE TCP CONTRARIA • Il client A scrive un messaggio da inviare al client B • Il client A tenta una connessione al client B ma non ci riesce • Il client A invia il pacchetto “TCP_REQUEST” al server • il server aggiunge al pacchetto “TCP_REQUEST”, l’IP e la Porta TCP del client A e lo invia al client B • Il client B si connette al client A e invia il pacchetto “INIT_PACKET” • Il client A invia al client B il messaggio costruito al punto 1 • Il client B legge il messaggio • Da questo momento in poi la comunicazione continua come se il client A si fosse appena connesso al client B Client B Client A Richiesta TCP Richiesta TCP

  19. ICQ CHAT COS’E’ UNA “CHAT SESSION”? CONNESSIONE TRA DUE O PIÙ UTENTI IN CUI I MESSAGGI INVIATI E RICEVUTI VENGONO VISUALIZZATI IN UNA STESSA FINESTRA. OGNI “CHAT SESSION” HA UNA PROPRIA “listen()socket”

  20. ICQ CHAT DUE TIPOLOGIE DI “CHAT SESSION”: • SINGLE CHAT SESSION: gli utenti connessi sono solo due. • MULTI CHAT SESSION: gli utenti connessi sono più di due

  21. “SINGLE CHAT SESSION” • Il client A chiede al client B di entrare in chat • Il client A crea una “chat listen()socket” che non sarà inviata al client B ma sarà utilizzata se qualcuno vuole unirsi alla chat • Il client B accetta la richiesta e crea una listen()socket che invierà al client A, inserendola nel pacchetto ACK • Il client A tenta una connessione sulla porta indicatogli nell’ACK • Il client A e il client B sono connessi • Pacchetti di setup SINGLE CHAT SESSION

  22. SINGLE CHAT SESSION PACCHETTO DI RICHIESTA SessionLength /always 0x0001 for single chat session Chat_Session /always 0x00 for single chat session Chat Port /always 0x0000 Client B Client A PACCHETTO ACK SessionLength /always 0x0001 in the ACK Chat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order Client B Client A

  23. “MULTI CHAT SESSION” • IL RICHIEDENTE E’ IN UNA CHAT SESSION • IL RECEIVER E’ GIA’ IN UNA CHAT SESSION • SIA IL RICHIEDENTE CHE IL RECEIVER SONO GIA’ IN UNA CHAT SESSION SI DISTINGUONO TRE CASI:

  24. “MULTI CHAT SESSION” 1° CASO: IL RICHIEDENTE E’ IN UNA CHAT SESSION • Il messaggio iniziale conterrà la lista di tutti gli altri utenti della chat session e la listen()socket che è stata creata quando il client A ha inviato, per la prima volta, il messaggio di richiesta di una chat. • Il client B accetta la richiesta e crea una sua chat listen()socket che sarà inserita nell’ACK • Dopo aver ricevuto l’ACK, il client A tenta una connessione sulla listen()socket del client B • La connessione è creata e i pacchetti di setup vengono scambiati • Nei pacchetti di setup il client A fornisce informazioni sugli altri membri della chat • Il client B tenta una connessione con gli altri membri • La connessione viene creata e i pacchetti di setup vengono scambiati tra tutti i membri. MULTI CHAT SESSION

  25. MULTI CHAT SESSION PACCHETTO DI RICHIESTA SessionLength /length of the chat session Chat_Session /list of all those in the session Chat Port /chat listen()port for this session in intel order Client B Client A PACCHETTO ACK SessionLength /always 0x0001 in the ACK Chat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order Client B Client A

  26. “MULTI CHAT SESSION” 2° CASO: IL RECEIVER E’ IN UNA CHAT SESSION Il richiedente non sa che il receiver è in una chat session Il richiedente chiederà una ”single chat session” … COSA CAMBIA? • Il receiver quando riceve la richiesta deciderà se: • unire il client richiedente alla chat session già aperta (JOIN OPTION) • L’ACK conterrà la listen()socket della chat session creata precedentemente • I pacchetti di setup conterranno le informazioni sugli altri membri • creare una nuova single chat session con il client richiedente

  27. “MULTI CHAT SESSION” 3° CASO: IL RECEIVER E IL RICHIEDENTE SONO IN UNA CHAT SESSION ICQ NON PERMETTE LA FUSIONE TRA DUE “CHAT SESSION” L’OPZIONE “JOIN” PUO’ ESSERE SELEZIONATA DA UN SOLO CLIENT • Se uno dei due client seleziona l’opzione JOIN “MULTI CHAT SESSION” • Se nessuno seleziona l’opzione JOIN “SINGLE CHAT SESSION”

  28. PACCHETTI DI SETUP FASE DI INIZIALIZZAZIONE Client A Client B 1° pacchetto UIN, Nick 2° pacchetto UIN, Nick, IP, Count, “altri membri” IP, Port 3° pacchetto

  29. CHAT SESSION CONNESSIONE TCP CONTRARIA 0.Il client A fa una richiesta di chat al client B • Il client B accetta la richiesta e il client B invia l’indirizzo IP e la Porta con il messaggio ACK • Il client A tenta una connessione al client B ma non ci riesce • Il client A invia il pacchetto “TCP_REQUEST” al server • il server aggiunge al pacchetto “TCP_REQUEST”, l’IP e la Porta TCP del client A e lo invia al client B • Il client B tenta una connessione al client A e ci riesce • Il client B invia il pacchetto “INIT_PACKET” al client A • Il client A e il client B si scambiano i pacchetti di setup • Inizia la chat session

  30. RIFERIMENTI • www.icqinfo.com • www.icq.com • www.mirabilis.com

More Related