• Non ci sono risultati.

Università degli studi “G. D’Annunzio”Pescara

N/A
N/A
Protected

Academic year: 2021

Condividi "Università degli studi “G. D’Annunzio”Pescara"

Copied!
30
0
0

Testo completo

(1)

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”

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

COS’E’ L’ICQ?

(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

UIN: 12345678

SERVER Mirabilis

IP:131.156.5.9

AGGIORNA

BOB ANNA

UIN: 87643902 IP:170.2

3.8.12

SEND MESSAGES

Anna è on-line

Bob è o

n-line

UIN IP

12345678 76540213

43896863 05876584 87643902

131.156.5.9

170.23.8.12

(6)

IL PROTOCOLLO ICQ

ARCHITETTURA

 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

UDP TCP

Login m

essage Login message

messages

(7)

CLIENT-SERVER

UDP UDP

• Protocollo UDP

• Porta 4000 (o superiori)

• Numero di sequenza

• “Acknowledgement” per ogni

pacchetto inviato dal client

al server e viceversa

(8)

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:

(9)

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: HEADER

PACCHETTI INVIATI DAL SERVER AL CLIENT:

(10)

COMUNICAZIONE CLIENT-SERVER

1. FASE DI REGISTRAZIONE

REG_NEW_USER

UIN

LOGIN_PACKET

LOGIN_REPLY

IP dinamico, #porta TCP

(11)

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”

(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

UDP TCP

(14)

LATO CLIENT

Off-line

invio login_packet

Aspetta login_reply

non riceve login_reply invio login_packet

riceve login_reply invio ACK

On line aspetta e

“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_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”

(15)

CONNESSIONE UDP

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

(16)

COMUNICAZIONE TCP

1. FASE DI HANDSHAKE

FORMATO INIT_PACKET

Length Name Description

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

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

(18)

CONNESSIONE TCP CONTRARIA

Client A Client B

Richie

sta TCP

Richiesta 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 messaggio

8. Da questo momento in poi la comunicazione continua come se il client A si fosse appena connesso al client B

(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”:

1. SINGLE CHAT SESSION:

gli utenti connessi sono solo due.

2. MULTI CHAT SESSION:

gli utenti connessi sono più di due

(21)

“SINGLE CHAT SESSION”

1. Il client A chiede al client B di entrare in chat

2. Il client A crea una “chat listen()socket” che non sarà inviata al client B ma sarà utilizzata se qualcuno vuole unirsi alla chat

3. Il client B accetta la richiesta e crea una listen()socket che invierà al client A, inserendola nel pacchetto ACK

4. Il client A tenta una connessione sulla porta indicatogli nell’ACK 5. Il client A e il client B sono connessi

6. Pacchetti di setup

(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 A

Client B

Client B

PACCHETTO ACK

SessionLength /always 0x0001 in the ACK

Chat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order

(23)

“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:

(24)

“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 membri

7. La connessione viene creata e i pacchetti di setup vengono scambiati tra tutti i membri.

1° CASO: IL RICHIEDENTE E’ IN UNA 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 A

Client B

Client B

PACCHETTO ACK

SessionLength /always 0x0001 in the ACK

Chat_Session /always 0x00 in the ACK Chat Port /listen()port in intel order

(26)

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

(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

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

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

3° pacchetto

UIN, Nick, IP, Count, “altri membri”

IP, Port

(29)

CONNESSIONE TCP CONTRARIA

0. Il client A fa una richiesta di chat al client B

1. Il client B accetta la richiesta e il client B invia l’indirizzo IP e la Porta con il messaggio ACK

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 tenta una connessione al client A e ci riesce 6. Il client B invia il pacchetto “INIT_PACKET” al client A 7. Il client A e il client B si scambiano i pacchetti di setup 8. Inizia la chat session

CHAT SESSION

(30)

RIFERIMENTI

 www.icqinfo.com

 www.icq.com

 www.mirabilis.com

Riferimenti

Documenti correlati

Vi è una connessione permanente tra client e server nel momento in cui si accede al server, e fino a che il cliente non fa cadere esplicitamente la connessione.. E-MAIL

Installazione Client Rete MediData Versione 1.6, 01.07.2019 / MediData INTERNO 12 / 12 Fatturazione delle prestazioni, questi dati devono essere trasmessi assolutamente al

Nota: se la spia di stato del Box MediData continua ad essere gialla o rossa, il Box MediData non è collegato alla Rete MediData.. Si metta in contatto con il Suo

Se l'amministratore ha configurato BlackBerry 2FA per il dispositivo, è possibile richiedere la preautenticazione da BlackBerry UEM Client. La preautenticazione consente di

z Il client è un qualsiasi programma che invia una richiesta e aspetta una risposta; tipicamente termina dopo avere usato un server un numero finito di volte. z Il server aspetta

n “Thin” client containing only the Presentation Logic subsystem (session, text input, dialog, and display management services). n

  Il linguaggio di script fornisce il supporto per accedere agli elementi della pagina HTML e a caratteristiche del browser!.   Il browser diviene un ambiente di esecuzione

I componenti sono gli stessi descritti nel capitolo (Principali componenti hardware), e le loro caratteristiche vanno scelte in modo tale che verifichino i requisiti richiesti