1
00:00:00,000 --> 00:00:08,000
Quando si utilizza il protocollo TCP, i dispositivi devono prima stabilire una connessione con un sistema peer prima che la trasmissione dei

2
00:00:09,000 --> 00:00:10,000
dati possa

3
00:00:11,000 --> 00:00:16,000
avvenire in modo tale che venga stabilita una sessione orientata alla connessione tra l'host

4
00:00:17,000 --> 00:00:23,000
A e l'host B. Una macchina avvierà la connessione che deve quindi essere accettata dall'altra macchina.

5
00:00:24,000 --> 00:00:28,000
I moduli software dei protocolli nei sistemi operativi dei dispositivi host comunicano tra

6
00:00:29,000 --> 00:00:33,000
loro inviando messaggi attraverso la rete per verificare che il trasferimento sia autorizzato

7
00:00:34,000 --> 00:00:36,000
e che entrambe le parti siano

8
00:00:37,000 --> 00:00:39,000
pronte per la trasmissione dei dati.

9
00:00:40,000 --> 00:00:48,000
Affinché ciò avvenga, si verifica una stretta di mano a tre vie tra i dispositivi host che utilizzano TCP.

10
00:00:49,000 --> 00:00:55,000
Quindi l'host che avvia la sessione imposterà il flag SYN o il bit SYN

11
00:00:56,000 --> 00:01:00,000
nell'intestazione TCP del segmento iniziale invia all'host B.

12
00:01:01,000 --> 00:01:05,000
L'host A sceglierà anche un numero di sequenza iniziale che

13
00:01:06,000 --> 00:01:08,000
in questo esempio diciamo 100.

14
00:01:09,000 --> 00:01:12,000
Quindi il flag di controllo SYN è impostato su e il

15
00:01:13,000 --> 00:01:16,000
numero di sequenza è impostato su un valore iniziale di 100.

16
00:01:17,000 --> 00:01:20,000
Questo viene quindi utilizzato per avviare il processo di handshake.

17
00:01:21,000 --> 00:01:27,000
Questo segmento di sincronizzazione specifica anche il numero della porta a cui il mittente desidera

18
00:01:28,000 --> 00:01:32,000
connettersi per la porta di esempio 80 o HTTP.

19
00:01:33,000 --> 00:01:38,000
L'host sul lato destro attenderà una richiesta di connessione dal client remoto, in

20
00:01:39,000 --> 00:01:41,000
questo caso l'host A.

21
00:01:42,000 --> 00:01:45,000
quando il SYN è ricevuto e

22
00:01:46,000 --> 00:01:53,000
accettato, l'host b invierà un segmento TCP con entrambi i flag SYN e ACK impostati.

23
00:01:54,000 --> 00:01:57,000
Quindi i flag di controllo SYN e ACK sono impostati e

24
00:01:58,000 --> 00:02:01,000
utilizzati per negoziare la connessione e confermare la ricezione del segmento

25
00:02:02,000 --> 00:02:04,000
di sincronizzazione delle iniziali del mittente.

26
00:02:05,000 --> 00:02:08,000
B imposta anche un numero di sequenza iniziale per indicare il

27
00:02:09,000 --> 00:02:12,000
prossimo numero di sequenza del prossimo byte di dati che

28
00:02:13,000 --> 00:02:15,000
si aspetta di ricevere dall'host A.

29
00:02:16,000 --> 00:02:21,000
l'host B imposta anche il flag di riconoscimento, in questo

30
00:02:22,000 --> 00:02:30,000
caso 101 indica un flag ACK, la porzione successiva di dati, l'host si aspetta di ricevere.

31
00:02:31,000 --> 00:02:34,000
Quindi l'host A inizialmente ha inviato un numero di sequenza di 100

32
00:02:35,000 --> 00:02:39,000
e l'host B, in questo caso si presupponeva che una dimensione della finestra di 1 restituisse

33
00:02:40,000 --> 00:02:41,000
un riconoscimento di 101.

34
00:02:42,000 --> 00:02:47,000
Il terzo passo nell'handshake a tre vie è dove l'host di avvio in

35
00:02:48,000 --> 00:02:56,000
questo caso l'host A ha ricevuto il SYN dall'host B e restituisce un segmento TCP con il campo di controllo impostato

36
00:03:01,000 --> 00:03:06,000
su ACK, in altre parole riconoscimento. 36 L'host A sta quindi riconoscendo il segmento successivo che si

37
00:03:07,000 --> 00:03:11,000
aspetta di ricevere dall'host B in questo caso 301, inizialmente l'host B ha inviato un numero di sequenza di 300.

38
00:03:12,000 --> 00:03:16,000
Quindi l'host A si aspetta il prossimo segmento 301.

39
00:03:17,000 --> 00:03:21,000
L'host A imposta il suo numero di sequenza su 101.

40
00:03:22,000 --> 00:03:29,000
Il segmento iniziale inviato era 100 e il prossimo in questo caso è 101 perché il bit SYN o il

41
00:03:30,000 --> 00:03:32,000
flag SYN non è impostato,

42
00:03:33,000 --> 00:03:37,000
ciò conferma che l'handshake a tre vie è stato completato con successo.

43
00:03:38,000 --> 00:03:45,000
Solo per reiterare, i bit di controllo o i flag inizialmente A manda un

44
00:03:46,000 --> 00:03:51,000
segmento con il bit SYN o il flag SYN attivato.

45
00:03:55,000 --> 00:04:00,000
Quindi il flag di controllo SYN è impostato su 1. 46 L'host B nella seconda fase dell'handshake a tre

46
00:04:01,000 --> 00:04:04,000
vie imposta i suoi flag di controllo o bit su SYN ACK.

47
00:04:05,000 --> 00:04:07,000
In altre parole, il bit SYN è impostato su

48
00:04:08,000 --> 00:04:10,000
1 e il bit ACK è impostato su 1.

49
00:04:11,000 --> 00:04:13,000
Nell'ultimo passaggio dell'handshake a tre

50
00:04:14,000 --> 00:04:19,000
vie, l'host A imposta il bit ACK su 1 o il flag ACK è attivo.

51
00:04:21,000 --> 00:04:24,000
Il bit SYN o il flag SYN è impostato su 0 per indicare che

52
00:04:25,000 --> 00:04:27,000
l'handshake a tre vie è stato completato correttamente.

53
00:04:28,000 --> 00:04:32,000
Ora i numeri di sequenza e i riconoscimenti possono causare molta confusione, quindi ho intenzione di

54
00:04:33,000 --> 00:04:34,000
spiegarli più dettagliatamente ora.

55
00:04:35,000 --> 00:04:39,000
In questo esempio assumiamo che venga utilizzata una dimensione della finestra pari a 1.

56
00:04:40,000 --> 00:04:42,000
Ora, se si ricorda che la dimensione della finestra è la quantità massima

57
00:04:48,000 --> 00:04:52,000
di dati che il ricevitore può ricevere da un mittente e elaborare correttamente. 59 Quindi supponiamo che solo un segmento

58
00:04:53,000 --> 00:04:56,000
possa essere trasmesso in qualsiasi momento prima che venga ricevuta una conferma

59
00:04:57,000 --> 00:04:59,000
per confermare la ricezione di quel segmento.

60
00:05:00,000 --> 00:05:03,000
Quindi supponiamo che A inizi con un numero di sequenza iniziale di

61
00:05:04,000 --> 00:05:09,000
5 a causa di una dimensione della finestra di 1, solo un segmento può essere inviato da A a B.

62
00:05:10,000 --> 00:05:14,000
B riceve con successo il segmento da A

63
00:05:15,000 --> 00:05:19,000
e riconosce il segmento successivo che desidera ricevere.

64
00:05:20,000 --> 00:05:23,000
quindi, anziché riconoscere la ricezione del numero di

65
00:05:24,000 --> 00:05:26,000
sequenza 5, riconosce la sequenza

66
00:05:27,000 --> 00:05:32,000
numero 6 che implica che tutti i numeri di sequenza precedenti riceveranno correttamente.

67
00:05:33,000 --> 00:05:37,000
Quindi B riconosce in questo caso la sequenza numero 6 ma B può iniziare

68
00:05:42,000 --> 00:05:47,000
con un numero di sequenza iniziale di 10. 71 così nell'intestazione TCP B dice A che il suo

69
00:05:48,000 --> 00:05:52,000
numero di sequenza iniziale è 10 e che il suo numero di sequenza 5 ricevuto con successo da

70
00:05:53,000 --> 00:05:56,000
A e si aspetta la sequenza numero 6 da A nel pacchetto successivo.

71
00:05:57,000 --> 00:06:00,000
Supponiamo che questo segmento riceva con successo, così

72
00:06:01,000 --> 00:06:05,000
A ora invierà il segmento da 6 a B, in altre parole

73
00:06:06,000 --> 00:06:08,000
il prossimo numero di sequenza.

74
00:06:09,000 --> 00:06:14,000
A conferma anche la ricezione del segmento 10 dall'host B.

75
00:06:15,000 --> 00:06:19,000
Quindi A ha ricevuto con successo il segmento con il numero di sequenza 10.

76
00:06:20,000 --> 00:06:21,000
Si prega di

77
00:06:22,000 --> 00:06:24,000
notare ancora una volta che l'host può scegliere

78
00:06:25,000 --> 00:06:27,000
casualmente i numeri di sequenza iniziali e quindi

79
00:06:28,000 --> 00:06:31,000
nell'handshake a tre vie iniziale che le informazioni devono essere comunicate tra

80
00:06:35,000 --> 00:06:42,000
i 2 host in modo che sappiano quali sono i numeri di sequenza iniziali. 84
Quindi, ancora una volta A invia la sequenza da 6 a B e conferma la sequenza 11.

81
00:06:43,000 --> 00:06:45,000
Supponiamo che B riceva correttamente

82
00:06:46,000 --> 00:06:49,000
quel segmento e pertanto confermerà per il segmento 7.

83
00:06:50,000 --> 00:06:52,000
Il segmento successivo che si aspetta

84
00:06:53,000 --> 00:06:58,000
di ricevere ancora una volta 7 nel riconoscimento indica che il segmento precedente è stato ricevuto con successo.

85
00:06:59,000 --> 00:07:03,000
Quindi l'host B impostando il numero di sequenza su 7 sta dicendo all'host A che la

86
00:07:04,000 --> 00:07:06,000
sequenza numero 6 è stata ricevuta con successo.

87
00:07:07,000 --> 00:07:10,000
L'host B invia la sequenza numero 11 perché è il

88
00:07:11,000 --> 00:07:14,000
prossimo numero di sequenza che A si aspetta di ricevere.

89
00:07:15,000 --> 00:07:19,000
La cosa da notare ancora una volta, è che i numeri di sequenza

90
00:07:25,000 --> 00:07:29,000
iniziale che l'host si aspetta di ricevere e la sequenza di numeri di

91
00:07:30,000 --> 00:07:36,000
11 per esempio implica che il numero di sequenza 10 e il numero di sequenza precedente siano stati ricevuti con successo.

92
00:07:37,000 --> 00:07:41,000
Ora, ancora una volta il controllo del flusso previene un problema in cui il mittente invia così tanti dati

93
00:07:45,000 --> 00:07:47,000
99 che i buffer del ricevitore sono in overflow.

94
00:08:05,000 --> 00:08:09,000
Se questa è una macchina molto potente e questa è una macchina più vecchia

non è così potente, è possibile che A possa invadere

i buffer di B perché sta inviando così tanti dati. 103 Quindi B ha bisogno di un meccanismo per dire A al rallentamento in modo che D

95
00:08:14,000 --> 00:08:16,000
possa elaborare correttamente il traffico che sta ricevendo. 105 Quindi, ad esempio, supponiamo che la dimensione della finestra in questo esempio

96
00:08:49,000 --> 00:08:51,000
sia 3 anziché 1. 107
Quindi A può inviare 3 segmenti di dati prima di ottenere un riconoscimento. 108
Il vantaggio di aumentare le dimensioni della finestra è la velocità effettiva

può aumentare notevolmente perché un host può inviare più dati

con meno riconoscimenti e quindi i tempi di andata e ritorno diminuiscono drasticamente. 111
Quindi in questo esempio A invia 3 segmenti a B. 112 Supponiamo che il

97
00:09:00,000 --> 00:09:03,000
buffer ricevuto di B sia pieno e che non possa gestire quella quantità di dati 114 B invierà un indicatore non pronto ad A 115 e lo fa impostando la dimensione della finestra a 0.

98
00:09:20,000 --> 00:09:27,000
Questo dice al mittente di interrompere l'invio di dati

e attendere l'indicatore pronto dal ricevitore. 118
Supponendo che l'host B sia ora in grado di elaborare i dati

nel suo buffer di ricezione e ora può ricevere più dati. 120
Può inviare un indicatore pronto ad A, per dirgli di riprendere l'invio di datagrammi.

99
00:09:37,000 --> 00:09:42,000
quindi A riprende la trasmissione inviando per esempio 3 segmenti a B. 122
Perché la dimensione della finestra è 3. 123 Quindi, per favore nota in sottofondo che l'host TCP coinvolto nella conversazione può negoziare vari parametri

100
00:09:54,000 --> 00:09:58,000
e uno di essi è il controllo del flusso 125 dove un ricevitore, può dire a un mittente di rallentare o di interrompere l'invio di dati 126 fino a quando il ricevitore non ha spazio disponibile per ricevere i segmenti trasmessi.

101
00:10:08,000 --> 00:10:12,000
Questo consente la comunicazione tra un molto potente

o macchina veloce e una macchina più lenta o meno potente

dove possono negoziare il tasso di trasmissione.
