Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi...

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

Transcript of Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi...

Page 1: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

di

Del Grosso Serafina

Corso di laurea specialistica in Economia Informatica

Università degli studi “G. D’Annunzio”

Pescara

A.A. 2005-2006

Page 2: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

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.

Page 3: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

ICQ: ELEMENTI NECESSARI

PC connesso ad Internet

Programma “client” sul pc

Registrazione al server Mirabilis

Page 4: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

ICQ suona come “I SEEK YOU”

ICQ è uno dei primi “istant messaging” che dà la possibilità di instaurare delle conversioni tra utenti on-line.

COS’E’ L’ICQ?

Page 5: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

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

UIN: 12345678

SERVER Mirabilis

IP:131.156.5.9

AGGIORNA

BOB ANNA

UIN: 87643902

IP:170.23.8.12

SEND MESSAGES

Anna è on-line Bob è on-line

UIN IP

12345678

76540213

43896863

05876584

87643902

131.156.5.9

170.23.8.12

Page 6: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

IL PROTOCOLLO ICQARCHITETTURA

Due tipi di comunicazione: Client-Client e Client-Server

L’ICQ, a livello di trasporto, utilizza sia il protocollo UDP sia il protocollo TCP

UDPUDP

UDP

TCP

Login m

essageLo

gin m

essa

ge

messages

Page 7: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CLIENT-SERVER

UDP UDP

• Protocollo UDP

• Porta 4000 (o superiori)

• Numero di sequenza

• “Acknowledgement” per ogni pacchetto inviato dal client al server e viceversa

Page 8: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CLIENT-SERVER

FORMATO PACCHETTI: HEADER

Length Name Description

2 byte VERSION Identifies the packet as an ICQ packet

4 byte UIN The sender’s UIN

4 byte SESSION_ID A random number

2 byte COMMAND Code for service the server should provide

2 byte SEQ_NUM1 Start at a random number

2 byte SEQ_NUM2 Start at 1

4 byte CHECKCODE

variable PARAMETERS 0 or more parameters (depending on COMMAND)

PACCHETTI INVIATI DAL CLIENT AL SERVER:

Page 9: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

Length Name Description

2 byte VERSION Identifies the packet as an ICQ packet

4 byte SESSION_ID Same as in client login packet

2 byte COMMAND Code for service the server should provide

2 byte SEQ_NUM1

2 byte SEQ_NUM2

4 byte UIN The client’s UIN

4 byte CHECKODE

variable PARAMETERS Parameters for the command being sent

CLIENT-SERVER

FORMATO PACCHETTI: HEADERPACCHETTI INVIATI DAL SERVER AL CLIENT:

Page 10: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

COMUNICAZIONE CLIENT-SERVER

1. FASE DI REGISTRAZIONE

REG_NEW_USER

UIN

LOGIN_PACKET

LOGIN_REPLY

IP dinamico, #porta TCP

Page 11: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

COMUNICAZIONE CLIENT-SERVER

2. LISTA DEI CONTATTI

CONTACT_LIST

ACK

Il client comunica al server l’elenco degli utenti con i quali desidera interagire.

FORMATO DEL PACCHETTO

Length Content(if fixed) Designation Description

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”

Page 12: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CLIENT-CLIENT

• Invio di messaggi, e-mail, url, contatti, file

• Video conferenze• Telefonare on-line• Chat• Game• Invio di messaggi

vocali

Page 13: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

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

UDP

TCP

Page 14: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

LATO CLIENT

Off-lineinvio login_packet

Aspetta login_reply

non riceve login_reply

invio login_packet

riceve login_reply

invio ACK

On linee

aspetta “user_on_line”

no “user_on_line” && no time-out

no “user_on_line” && time-out

invio “keep alive”

Aspetta ACK

riceve “user_on_line”invio ACK

Connessione TCP

IPOTESI: un solo utente nella “contact_list”

CONNESSIONE UDP

LOGIN_PACKETTCP_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”

Page 15: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CONNESSIONE UDPLATO SERVER

Aspetta login

riceve “login_packet”

Aspetta ACK

non riceve ACK

invio login_reply

riceve ACK

invia “user_on_line”

time-out && utenti off-line

Aspetta “keep alive”

riceve “keep alive”

invio ACK

Aspetta ACK

invia “login_reply”

Cerca utenti on-line

Non riceve keep alive

Utente off-line

IPOTESI: un solo utente nella “contact_list”

non riceve ACK

invia “user_on_line”

Page 16: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

COMUNICAZIONE TCP1. FASE DI HANDSHAKE

FORMATO INIT_PACKET

Length Name Description 2 byte LENGTH Lunghezza di questo pacchetto1 byte INIT_IDENT Identifica questo pacchetto come inizializzazione4 byte MY_UIN l’UIN del client che invia questo pacchetto4 byte MY_IP l’IP del client che invia questo pacchetto4 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

Page 17: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

COMUNICAZIONE TCP2. INVIO DEL MESSAGGIO

FORMATO CHANNEL_MESSAGE

Length Name Description 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

Page 18: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CONNESSIONE TCP CONTRARIA

Client A Client B

Richiesta TCP

Richi

esta

TCP

1. Il client A scrive un messaggio da inviare al client B

2. Il client A tenta una connessione al client B ma non ci riesce

3. Il client A invia il pacchetto “TCP_REQUEST” al server

4. il server aggiunge al pacchetto “TCP_REQUEST”, l’IP e la Porta TCP del client A e lo invia al client B

5. Il client B si connette al client A e invia il pacchetto “INIT_PACKET”

6. Il client A invia al client B il messaggio costruito al punto 1

7. Il client B legge il messaggio8. Da questo momento in poi la

comunicazione continua come se il client A si fosse appena connesso al client B

Page 19: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

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”

Page 20: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

ICQ CHAT

DUE TIPOLOGIE DI “CHAT SESSION”:

1. SINGLE CHAT SESSION: gli utenti connessi sono solo due.

2. MULTI CHAT SESSION: gli utenti connessi sono più di due

Page 21: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

“SINGLE CHAT SESSION”1. Il client A chiede al client B di entrare in chat2. Il client A crea una “chat listen()socket” che non sarà inviata al

client B ma sarà utilizzata se qualcuno vuole unirsi alla chat3. Il client B accetta la richiesta e crea una listen()socket che

invierà al client A, inserendola nel pacchetto ACK4. Il client A tenta una connessione sulla porta indicatogli

nell’ACK5. Il client A e il client B sono connessi6. Pacchetti di setup

Page 22: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

SINGLE CHAT SESSION

PACCHETTO DI RICHIESTA

SessionLength /always 0x0001 for single chat sessionChat_Session /always 0x00 for single chat session Chat Port /always 0x0000 Client A

Client B

Client A

Client B

PACCHETTO ACK

SessionLength /always 0x0001 in the ACKChat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order

Page 23: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

“MULTI CHAT SESSION”

1. IL RICHIEDENTE E’ IN UNA CHAT SESSION

2. IL RECEIVER E’ GIA’ IN UNA CHAT SESSION

3. SIA IL RICHIEDENTE CHE IL RECEIVER SONO GIA’ IN UNA CHAT SESSION

SI DISTINGUONO TRE CASI:

Page 24: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

“MULTI CHAT SESSION”

1. 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.

2. Il client B accetta la richiesta e crea una sua chat listen()socket che sarà inserita nell’ACK

3. Dopo aver ricevuto l’ACK, il client A tenta una connessione sulla listen()socket del client B

4. La connessione è creata e i pacchetti di setup vengono scambiati

5. Nei pacchetti di setup il client A fornisce informazioni sugli altri membri della chat

6. Il client B tenta una connessione con gli altri membri7. La connessione viene creata e i pacchetti di setup vengono

scambiati tra tutti i membri.

1° CASO: IL RICHIEDENTE E’ IN UNA CHAT SESSION

Page 25: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

MULTI CHAT SESSION

PACCHETTO DI RICHIESTA

SessionLength /length of the chat sessionChat_Session /list of all those in the session Chat Port /chat listen()port for this session in intel

order Client A

Client B

Client A

Client B

PACCHETTO ACK

SessionLength /always 0x0001 in the ACKChat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order

Page 26: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

Il richiedente non sa che il receiver è in una chat session

Il richiedente chiederà una ”single chat session”

“MULTI CHAT SESSION”2° CASO: IL RECEIVER E’ IN UNA 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

Page 27: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

“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

1. Se uno dei due client seleziona l’opzione JOIN “MULTI CHAT SESSION”

2. Se nessuno seleziona l’opzione JOIN “SINGLE CHAT SESSION”

Page 28: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

PACCHETTI DI SETUP

FASE DI INIZIALIZZAZIONE

Client A Client B

1° pacchettoUIN, Nick

2° pacchetto

3° pacchetto

UIN, Nick, IP, Count, “altri

membri”

IP, Port

Page 29: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

CONNESSIONE TCP CONTRARIA

0. Il client A fa una richiesta di chat al client B1. Il client B accetta la richiesta e il client B invia l’indirizzo IP

e la Porta con il messaggio ACK2. Il client A tenta una connessione al client B ma non ci

riesce3. Il client A invia il pacchetto “TCP_REQUEST” al server4. il server aggiunge al pacchetto “TCP_REQUEST”, l’IP e la

Porta TCP del client A e lo invia al client B5. Il client B tenta una connessione al client A e ci riesce6. Il client B invia il pacchetto “INIT_PACKET” al client A7. Il client A e il client B si scambiano i pacchetti di setup 8. Inizia la chat session

CHAT SESSION

Page 30: Di Del Grosso Serafina Corso di laurea specialistica in Economia Informatica Università degli studi G. DAnnunzio Pescara A.A. 2005-2006.

RIFERIMENTI

www.icqinfo.com

www.icq.com

www.mirabilis.com