Diagramma temporale dello scambio di segmenti TCP tra client e server dopo commando HTTP

BoG3
Ciao a tutti, ho una domanda da farvi e spero possiate aiutarmi:

Rappresentare il diagramma temporale dello scambio di segmenti TCP tra un client e un
server conseguente all'invio del comando HTTP

GET /path/to/file/file1.html HTTP/1.0


dal client al server. La dimensione di file1.html è di 6500 bytes e gli host negoziano una
dimensione massima del segmento di 1400 bytes.
La connessione viene chiusa terminato il trasferimento del file.


Non sono sicuro di come si faccia, quindi chiedo a voi:

1. come prima cosa il client dovrebbe identificare il server, quindi ci sarebbero' una query e una risposta ARP per identificar e il server DNS

2. Poi ci sarebbe una query al server dns e gli si chiederebbe dove sta il server contenente il file che sto cercando (/path/to/file/file1.html)

3. Poi manderebbe una richiesta di connessione tcp al server e durante il three way handshake si meterebbero d'accordo sulla MMS=1400bytes, sequence number del client e del server.

4. Poi comincerebbe l'invio di pacchetti del server e ad ogni pkg il client gli invierebbe un ack oppure gli invierebbe un ack solo alla fine di tutta la trasmissione a seconda se la connessione è persistente o meno. (pero', se non fosse persistente allora si dovrebbe instaurare una connessione per ogni oggetto della pagina html, dato che non si parla di numero di oggetti, immagino sia una conn. persistente)

5. al termine entrambi dovrebbero mandarsi un FIN e entrambi rispondere con un ACK al fin.

Giusto?

Grazie mille

Risposte
Luc@s
Su rete locale o server remoto?
Comunque il tcp è SYN,SYN ACK,ACK

BoG3
"Luc@s":
Su rete locale o server remoto?

Bella domanda, l'esercizio non lo specifica. La consegna dell'esercizio è esattamente quella che ho scritto nel primo post.

"Luc@s":

Comunque il tcp è SYN,SYN ACK,ACK

Ti riferisci al three way handshake?
client:SYN, server: SYN+ACK, client: ACK+primo payload?

Luc@s
Arp è solo locale, per quello chiedevo.
Altrimenti tu mandi la richiesta al default gateway (router) e lui poi lo manda al prossimo gw...

BoG3
Si, non lo avevo scritto. grazie. ma come ragionamento base ha senso quello che ho scritto?

Luc@s
E' da completare.
Una volta che ho ip <-> host che tipo di richiesta faccio ?
Comunque in base c'è

BoG3
una volta che ho l'ip di un host, doro' trovare il MAC dell'interfaccia del host (con una richiesta broadcast ARP o invio la mia richiesta al default gayaway (se la sottorete mia non combacia con la sottorete dell'host destinatario)). solo allora potro' iniziare con il 3way handshake.

è questo che intendi con "dopo che ho host <-> ip"?

Luc@s
Ok.
A livello di HTTP (a che layer è?) hai una richiesta e una risposta,no?

BoG3
HTTP è a livello Applicazione.

Mi stai chiedendo se il testo mi ha dato anche una risposta del server? No.
Se mi stai chiedendo cosa accade tra server e client: beh, se non sbaglio, dopo il messaggio GET del client verso il server, questo rispondera' con uno o piu' messaggi. no?

Luc@s
Ok.
Ti servono anche dettagli come gethostbyname() ?

BoG3
no no ...grazie, ivece vorrei farti un altra domanda:
mettiamo che ci sia una connessione persistente tra client e host.
Il client riccùhiede una pagina web con $n$ oggetti. Il server glieli manda tutti nella stessa connessione.
Il client manda un ACK relativo all'ultimo segmento ricevuto o per ogni segmento ricevuto gli manda un ACK.
Lo chiedo perchè se i lserver manda $n$ oggetti, lo faroa' uno dietro l'altro, quindi velocissimo.
Al client non converrebbe piu' dire "aspetto un momentino per vedere se mi arrivano anche gli altri poi gli mando un ACK relativo all'ultimo frame ricevuto in sequenza" ?

Luc@s
I dati vengono inviati con un segment number e con i vari ACK.
E il modo in cui TCP permette di recuperare pacchetti persi (e udp no).
Per la quantità di dati, entra in gioco il windowing (https://en.wikipedia.org/wiki/TCP_window_scale_option)

BoG3
tutto chiaro, grazie mille. Ho l'orale tra un oretta :\
Ora l'unica cosa che non so fare è calcolare la dimensione del collision domani :| ma mica mi chiede quello, dai ... :D

Luc@s
"BoG":
tutto chiaro, grazie mille. Ho l'orale tra un oretta :\
Ora l'unica cosa che non so fare è calcolare la dimensione del collision domani :| ma mica mi chiede quello, dai ... :D


Ogni porta di un router è un collision domain diverso.
Ogni porta di uno switch è un collision domain diverso.
Ogni porta di un hub conta come un solo domain.

I broadcast domain invece sono in relazione alle VLAN.

In culo alla balena.

BoG3
Si, lo so, ma se non sbaglio in un esercizio aveva chiesto la lunghezza in metri, fornendo: tempo di propagazione del segnale e.. non ricordo cosa... comunque non importa

Luc@s
Boh.. io ho conoscenze pratiche (per lavoro) :P

BoG3
:D
GRazie mille per l'aiuto, vado a riverede gli Header tcp, ip, ecc ... forse riusciro' a ricordarne uno a memoria :D (quanto odio le cose imparate a memoria... :evil: )

Rggb1
Sono un po' in ritardo[nota]A proposito, come e' andato l'orale?[/nota], comunque
"BoG":
1. come prima cosa il client dovrebbe identificare il server, quindi ci sarebbero' una query e una risposta ARP per identificar e il server DNS

A che pro? Stiamo parlando di "scambio di segmenti TCP fra un client e un server".

"BoG":
2. Poi ci sarebbe una query al server dns e gli si chiederebbe dove sta il server contenente il file che sto cercando (/path/to/file/file1.html)

3. Poi manderebbe una richiesta di connessione tcp al server e durante il three way handshake si meterebbero d'accordo sulla MMS=1400bytes, sequence number del client e del server.

Vedi sopra.

"BoG":
4. Poi comincerebbe l'invio di pacchetti del server e ad ogni pkg il client gli invierebbe un ack oppure gli invierebbe un ack solo alla fine di tutta la trasmissione a seconda se la connessione è persistente o meno...

What? :?:

Secondo me devi rileggere attentamente la domanda.

BoG3
Ciao, grazie dell'interesse, è andato bene! non ho fatto i calcoli sull'orale ma ho preso complessivamente 24 (tra scritto e orale) ...che va beh, non è alto ma ho preparato l'esame in 3 settimane e contando che sono studente lavoratore, sono soddisfatto :D

Ritornando alla domanda:
tu che consigli? io ho disegnato il server, il client, le linee temporali e poi ho fatto vedere lo scambio di pacchetti come riassunto nel post iniziale. il prof lo ha accettato.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.