.:SiMoNeT:.

 

[2].TCP (Trasmission Control Protocol) /IP ( Internet Protocol )

Il protocollo TCP viene usato nelle connessioni più comuni, per esempio i protocolli ftp, telnet,

http, smtp, pop3 vengono gestiti dal protocollo TCP perché più sicuro, infatti come vedremo se

dovremmo attuare dello spoofing cieco le possibilità di "azzeccare" due campi da 32 Bits (Non

sto scherzando, con lo spoofing cieco sui protocolli TCP dovremmo proprio indovinare 2 numeri

a 32 Bits :-P ) sono minime.

Il protocollo IP viene utilizzare per il routing dei pacchetti, di fatti l'header di questo protocollo

contiene informazioni come l'indirizzo ip sorgente (l'ip assegnato allanostra macchina dal

providier) e l'indirizzo ip di destinazione, questo protocollo non è affatto sicuro dato che non

viene controllata l'originalità degli indirizzi. L'insieme IP/TCP permette l'indirizzamento dei

pacchetti ed un controllo sugli stessi. Per prima cosa dobbiamo conoscere il protocollo TCP/IP

che è in realtà è un insieme di protocolli (TCP e IP). La struttura del header del protocollo TCP

è la seguente:

tcphdr.h - Inizio

struct tcphdr{

unsigned short portasorgente;

unsigned short portadestinazione;

unsigned long s_seq;

unsigned long s_ack;

unsigned short res1:4;

unsigned short doff:4;

unsigned short fin:1;

unsigned short syn:1;

unsigned short rst:1;

unsigned short psh:1;

unsigned short ack:1;

unsigned short urg:1;

unsigned short res2:2;

unsigned short window;

unsigned short cksum;

unsigned short urg_ptr;

};

tcphdr.h – Fine

mentre la struttura di un header IP è la seguente:

iphdr.h - Inizio

struct iphdr{

unsigned int ihl:4;

unsigned int versione:4;

unsigned char servizio;

unsigned short lunghe zza;

unsigned short id;

unsigned short frag_off;

unsigned char tempodivita;

unsigned char protocollo;

unsigned short cksum;

unsigned long indirizzosorgente;

unsigned long indirizzodestinazione;

};

iphdr.h - Fine

Analizziamo i campi del header TCP:

porta sorgente: la porta da cui viene trasmesso il pacchetto.

porta destinazione: la porta di destinazione.

s_seq: primo numero di controllo

s_ack: secondo numero di controllo

res: Rerserved - Riservato.

doff: Data Offset - Offset dei dati

Dopo vengono i flag:

fin: Finished - indica se la connessione di origine termina la connessione.

syn: Synchronise - Viene utilizzata per l'inizializzazione di una connessione, determina la

sincronizzazione dei seq e ack.

rst: Reset - (Connection broken :-) ) termina la connessione all'istante.

psh: Push - indica se i dati devono esssere salvati in memoria.

ack: Acknowledge - indica i dati inviati dal peer.

urg: Urgent - indica la priorità del pacchetto.

res2: Reserved 2 - Riservato.

window: dimensione della finestra (non ci interessa).

cksum: controllo del pacchetto.

urg_ptr: Urgent Pointer (non ci interessa).

 
<Pag 1

Pag 3>

 

Directory con Motore di ricerca di Moby Dyck.com