1 00:00:00,000 --> 00:00:04,884 2 00:00:04,884 --> 00:00:08,050 DOUG LLOYD: In questo video andremo per parlare del controllo della trasmissione 3 00:00:08,050 --> 00:00:10,440 Protocollo, TCP. 4 00:00:10,440 --> 00:00:13,290 Se non hai guardato il video su protocollo Internet, IP, 5 00:00:13,290 --> 00:00:15,290 si potrebbe desiderare di farlo prima di guardare questo video 6 00:00:15,290 --> 00:00:18,680 perché i due sono abbastanza correlati. 7 00:00:18,680 --> 00:00:21,100 >> Così, il protocollo Internet, ancora una volta, un breve riassunto, 8 00:00:21,100 --> 00:00:22,930 questo è il protocollo che si muove informazioni 9 00:00:22,930 --> 00:00:28,210 da una macchina che invia un ricevente macchina tramite la rete. 10 00:00:28,210 --> 00:00:29,720 >> Allora, qual è il protocollo TCP? 11 00:00:29,720 --> 00:00:33,310 Mentre solo passando da un invio Macchina a ricevere la macchina, 12 00:00:33,310 --> 00:00:35,120 non è la storia completa. 13 00:00:35,120 --> 00:00:38,040 Sappiamo anche che il nostro programma, nostri computer, per esempio, 14 00:00:38,040 --> 00:00:41,000 sono in esecuzione più programmi, e avere più servizi 15 00:00:41,000 --> 00:00:45,140 in esecuzione su quelle macchine. 16 00:00:45,140 --> 00:00:51,750 E così, se vogliamo ottenere un pacchetto, o informazioni ad un programma specifico, 17 00:00:51,750 --> 00:00:54,590 su una specifica macchina, abbiamo bisogno di maggiori informazioni 18 00:00:54,590 --> 00:00:59,490 noi che solo ciò che permette di ottenere IP informazioni dal punto A al punto B. 19 00:00:59,490 --> 00:01:02,390 >> Quindi, TCP può essere pensato a dirigere il pacchetto 20 00:01:02,390 --> 00:01:07,590 al programma corretto, o il corretto il servizio, sulla macchina ricevente. 21 00:01:07,590 --> 00:01:11,810 E così è importante, come si potrebbe aspettare, sapere dove si suppone di andare, 22 00:01:11,810 --> 00:01:14,550 e ciò è il pacchetto per allo stesso tempo. 23 00:01:14,550 --> 00:01:18,370 E così, spesso, quando si parla di Transmission Control Protocol, il protocollo TCP, 24 00:01:18,370 --> 00:01:23,900 davvero sente spesso nella contesto, TCP taglio su IP, o semplicemente il protocollo TCP / IP. 25 00:01:23,900 --> 00:01:27,639 Questi due protocolli sono così interconnessi che, sono fondamentalmente 26 00:01:27,639 --> 00:01:28,680 trattata come una singola unità. 27 00:01:28,680 --> 00:01:31,630 Ma si tratta di due protocolli separati che fare due cose separate. 28 00:01:31,630 --> 00:01:36,690 >> Ancora una volta, IP è responsabile per ottenere da una macchina all'altra. 29 00:01:36,690 --> 00:01:41,250 E TCP è responsabile ottenerlo al programma corretto, 30 00:01:41,250 --> 00:01:43,490 o il servizio corretto su una macchina. 31 00:01:43,490 --> 00:01:45,500 E lo fa qualcosa altra cosa che IP non fa, 32 00:01:45,500 --> 00:01:48,600 che è garanzia di consegna. 33 00:01:48,600 --> 00:01:55,060 >> Quindi, se ora paio IP di una macchina affrontare con il cosiddetto numero di porta, 34 00:01:55,060 --> 00:01:58,750 e un numero di porta è come una specifica servizio o l'utilità, o un programma, 35 00:01:58,750 --> 00:02:00,350 è identificato su una macchina. 36 00:02:00,350 --> 00:02:03,920 Se ora abbiamo un IP indirizzo e un numero di porta, 37 00:02:03,920 --> 00:02:07,240 ora siamo in grado di identificare in modo univoco un particolare servizio 38 00:02:07,240 --> 00:02:09,479 esecuzione su una particolare macchina. 39 00:02:09,479 --> 00:02:11,920 >> Ecco, questo è il motivo per cui TCP e IP sono così spesso interconnessi, 40 00:02:11,920 --> 00:02:14,170 perché tale numero di porta di per sé non ha veramente 41 00:02:14,170 --> 00:02:17,670 significa nulla se avete bisogno di un il numero di porta, e la macchina 42 00:02:17,670 --> 00:02:19,566 che si sta parlando. 43 00:02:19,566 --> 00:02:24,060 Quello che la macchina dovrebbe essere mediante questo porta particolare, per esempio. 44 00:02:24,060 --> 00:02:28,350 >> L'altra cosa che fa TCP, come Ho detto, è garantisce la consegna. 45 00:02:28,350 --> 00:02:30,810 Così, oltre al specificando il numero di porta, 46 00:02:30,810 --> 00:02:34,640 esso indica anche il numero di i pacchetti, il protocollo Internet, IP, 47 00:02:34,640 --> 00:02:36,110 ha diviso i dati in. 48 00:02:36,110 --> 00:02:41,200 E ordina questi pacchetti in modo che può essere ricostruito sulla ricevente 49 00:02:41,200 --> 00:02:45,820 macchina, anche se in un received-- ordine diverso da quello sono stati inviati. 50 00:02:45,820 --> 00:02:48,460 Che può accadere perché IP è un protocollo senza connessione, 51 00:02:48,460 --> 00:02:52,610 e così diversi pacchetti possono prendere diversi percorsi attraverso il sistema. 52 00:02:52,610 --> 00:02:53,660 53 00:02:53,660 --> 00:02:55,865 >> Alcuni di questi numeri di porta sono molto comunemente usato, 54 00:02:55,865 --> 00:02:57,990 e che sono stati standardizzati tutti i computer, 55 00:02:57,990 --> 00:03:00,500 come, praticamente ogni produttore di computer ora. 56 00:03:00,500 --> 00:03:03,612 Quindi qualcosa chiamato FTP, il protocollo di trasferimento file, 57 00:03:03,612 --> 00:03:05,820 che viene utilizzato per trasmettere file, come ci si potrebbe aspettare, 58 00:03:05,820 --> 00:03:10,060 da una macchina all'altra, che utilizza la porta 21 in modo convenzionale. 59 00:03:10,060 --> 00:03:13,000 E-mail, SMTP, utilizza la porta 25. 60 00:03:13,000 --> 00:03:16,070 DNS, Domain Name System, che abbiamo parlato nel nostro fondo internet 61 00:03:16,070 --> 00:03:17,976 video, utilizza la porta 53. 62 00:03:17,976 --> 00:03:20,100 Se stai navigando sempre il web, sei praticamente 63 00:03:20,100 --> 00:03:23,440 sempre utilizzando la porta 80, a meno che si sta navigando sul web in modo sicuro, 64 00:03:23,440 --> 00:03:26,060 navigazione web sicura, utilizzando la porta 443. 65 00:03:26,060 --> 00:03:28,610 66 00:03:28,610 --> 00:03:30,790 >> Così che cosa è questo processo TCP / IP? 67 00:03:30,790 --> 00:03:33,730 Che cosa sta accadendo con di questi protocolli insieme? 68 00:03:33,730 --> 00:03:35,520 Bene, parliamo di esso. 69 00:03:35,520 --> 00:03:39,420 Quando un programma vuole inviare dati, TCP aiuta romperlo in pezzi, 70 00:03:39,420 --> 00:03:42,700 e comunica i pacchetti a software di rete del computer. 71 00:03:42,700 --> 00:03:45,850 Così prende i dati e che avvolge informazioni intorno ad esso 72 00:03:45,850 --> 00:03:48,700 che indica quale porta si suppone per andare, 73 00:03:48,700 --> 00:03:52,500 e ciò affinché pacchetto è fuori tutto. 74 00:03:52,500 --> 00:03:56,940 Quindi, fare un pacchetto di 10, due 10, tre 10, e così via. 75 00:03:56,940 --> 00:04:01,750 >> IP ottiene quei blocchi di dati che sono stati avvolti con il protocollo TCP, 76 00:04:01,750 --> 00:04:06,447 e avvolge ulteriori informazioni su dove il pacchetto dovrebbe andare. 77 00:04:06,447 --> 00:04:08,780 Potremmo chiamare questo l'IP strati circostanti il ​​pacchetto. 78 00:04:08,780 --> 00:04:11,210 Quindi, è una specie di, come, una di quelle bambole di nidificazione. 79 00:04:11,210 --> 00:04:14,780 Abbiamo i dati nel mezzo, e quindi TCP in cima, 80 00:04:14,780 --> 00:04:17,920 dicendogli dove il dati all'interno di TCP è 81 00:04:17,920 --> 00:04:22,150 dovrebbe andare, a quale porta o quale servizio su una macchina. 82 00:04:22,150 --> 00:04:25,110 Intorno a quel è il livello IP. 83 00:04:25,110 --> 00:04:29,230 Quale indirizzo IP, quale macchina, è in realtà sempre presente. 84 00:04:29,230 --> 00:04:32,070 >> Allora, quel pacchetto che è stato avvolto con tutti quegli strati, 85 00:04:32,070 --> 00:04:35,250 viene inviato tramite protocollo Internet attraverso il sistema di router, ottenendo 86 00:04:35,250 --> 00:04:39,960 dal punto A al punto B. Quando il ricevere la macchina, o un dispositivo, ottiene 87 00:04:39,960 --> 00:04:42,790 esso, esamina il PI strato, si dice, che è proprio così 88 00:04:42,790 --> 00:04:45,260 il mio indirizzo IP, quindi ci vuole fuori, una sorta di crepe dell'uovo, 89 00:04:45,260 --> 00:04:47,380 e si toglie il livello IP. 90 00:04:47,380 --> 00:04:49,530 Poi si vede che non c'è uno strato TCP, e si dice, 91 00:04:49,530 --> 00:04:52,720 OK, sembra che questo è andando a porta x, o la porta a. 92 00:04:52,720 --> 00:04:55,842 E a quanto pare si tratta di numero di pacchetto di otto di 15. 93 00:04:55,842 --> 00:04:56,800 Così che è bene sapere. 94 00:04:56,800 --> 00:05:01,240 Allora si può prendere questa informazione, togliere il livello TCP ora, 95 00:05:01,240 --> 00:05:04,410 sapendo che è per la porta x, ed è il numero di pacchetti di otto, 96 00:05:04,410 --> 00:05:06,270 e ottenere i dati al suo interno. 97 00:05:06,270 --> 00:05:09,460 E può preparare i dati a essere organizzata in modo corretto. 98 00:05:09,460 --> 00:05:11,449 E una volta tutti i si ricevono i dati, TCP 99 00:05:11,449 --> 00:05:13,990 può mano fuori al corretto il servizio, e dire, qui si va. 100 00:05:13,990 --> 00:05:16,107 Ecco i dati che hai ricevuto. 101 00:05:16,107 --> 00:05:17,940 Tale processo potrebbe apparire qualcosa come questo. 102 00:05:17,940 --> 00:05:21,392 Quindi cerchiamo di inviare una e-mail da un mittente ad un ricevitore. 103 00:05:21,392 --> 00:05:23,100 E diciamo questo email è piuttosto piccolo, 104 00:05:23,100 --> 00:05:25,975 così abbiamo solo bisogno di rompere in quattro pacchetti, e noi li una chiamata, 105 00:05:25,975 --> 00:05:29,460 B, C, e D. Bene, vogliamo spostare che primo pacchetto che cosa succede? 106 00:05:29,460 --> 00:05:34,491 Bene, prendiamo quel pezzo di dati, i dati che è parte del pacchetto A, 107 00:05:34,491 --> 00:05:38,500 e intorno che stiamo andando per avvolgere con uno strato TCP. 108 00:05:38,500 --> 00:05:41,670 Messaggi di posta elettronica, si possono ricordare, vengono inviati tramite la porta 25, 109 00:05:41,670 --> 00:05:46,181 e abbiamo quattro blocchi di dati, qui, che stiamo andando a utilizzare, 110 00:05:46,181 --> 00:05:47,430 e questo è il primo di essi. 111 00:05:47,430 --> 00:05:50,013 Quindi forse il nostro livello TCP contiene informazioni su, bene, siamo 112 00:05:50,013 --> 00:05:56,060 andando a porta 25, e questo numero di pacchetto è una delle quattro. 113 00:05:56,060 --> 00:05:59,280 >> Intorno a questo, così ora abbiamo tutto ciò che informazioni in bundle insieme, 114 00:05:59,280 --> 00:06:03,000 stiamo andando a dire dove vogliamo andare, quale macchina, quale indirizzo IP 115 00:06:03,000 --> 00:06:04,910 si suppone per ottenere questo pacchetto. 116 00:06:04,910 --> 00:06:06,604 E questo è parte del livello IP. 117 00:06:06,604 --> 00:06:08,770 E c'è altra informazione in là pure, tale 118 00:06:08,770 --> 00:06:11,300 come l'indirizzo di ritorno in caso qualcosa vada storto, 119 00:06:11,300 --> 00:06:14,390 sa dove inviare informazioni di nuovo, e così via. 120 00:06:14,390 --> 00:06:16,475 >> Ma il livello IP va intorno a tutto questo. 121 00:06:16,475 --> 00:06:19,860 Quella intera cosa è in bundle insieme, come una grande unità, 122 00:06:19,860 --> 00:06:22,080 e inviato attraverso un trasferimento IP. 123 00:06:22,080 --> 00:06:26,180 Così viene instradato attraverso il router rete, utilizzando il protocollo Internet. 124 00:06:26,180 --> 00:06:28,700 Il ricevitore riceve l'intera cosa. 125 00:06:28,700 --> 00:06:31,910 E allora si può iniziare a decostruire quello che sta succedendo qui. 126 00:06:31,910 --> 00:06:36,030 Sembra a livello IP, il strato esterno di questi dati, 127 00:06:36,030 --> 00:06:38,560 e dice, sì, questo è il mio IP indirizzo in modo che possiamo scartare tale. 128 00:06:38,560 --> 00:06:40,685 Posso, sorta di, ignorarlo, non ha bisogno di più, 129 00:06:40,685 --> 00:06:42,480 e si può guardare un livello più profondo. 130 00:06:42,480 --> 00:06:47,590 Si vede che, OK, questo è un dato che è destinato ad essere ricevuto sulla porta 25. 131 00:06:47,590 --> 00:06:50,560 È apparentemente la prima parte di quattro. 132 00:06:50,560 --> 00:06:54,260 Così, ho intenzione di tenerlo a mente, e guardare i dati, 133 00:06:54,260 --> 00:06:57,349 e inserirlo o meno dove Penso che sta per andare. 134 00:06:57,349 --> 00:07:00,140 Ora, a causa del protocollo Internet che non è necessariamente il caso 135 00:07:00,140 --> 00:07:03,442 che il pacchetto successivo ricevente ottiene, è pacchetto due. 136 00:07:03,442 --> 00:07:05,150 Infatti, il successivo cosa che il ricevente ottiene 137 00:07:05,150 --> 00:07:08,230 potrebbe essere il numero di pacchetti tre perché questi pacchetti 138 00:07:08,230 --> 00:07:11,777 ha preso percorsi diversi a causa di traffico diverso in rete. 139 00:07:11,777 --> 00:07:14,360 E così, io non ho intenzione di andare attraverso il diagramma di costruirlo 140 00:07:14,360 --> 00:07:17,560 di nuovo, ma pacchetto tre si muove, ottiene spogliato di distanza 141 00:07:17,560 --> 00:07:20,410 di tutti i suoi livelli, la Livello IP, il livello TCP, 142 00:07:20,410 --> 00:07:22,420 e il dato viene messo al posto giusto. 143 00:07:22,420 --> 00:07:25,200 E poi, diciamolo riceve pacchetto quattro. 144 00:07:25,200 --> 00:07:29,290 >> Ora diciamo, il gioco è fatto, si Non c'è niente di più dati. 145 00:07:29,290 --> 00:07:30,300 Che cosa sta andando a fare? 146 00:07:30,300 --> 00:07:32,110 IP non fa niente per noi. 147 00:07:32,110 --> 00:07:33,260 Ma TCP fa. 148 00:07:33,260 --> 00:07:38,250 TCP sa, beh, ho ricevuto una delle quattro, tre di quattro, e quattro di quattro. 149 00:07:38,250 --> 00:07:41,100 Non ricevo altri dati. 150 00:07:41,100 --> 00:07:43,770 Quindi qualcosa è andato storto. 151 00:07:43,770 --> 00:07:45,050 Ma posso garantire la consegna. 152 00:07:45,050 --> 00:07:49,300 Io so che pacchetto numero due è mancante. 153 00:07:49,300 --> 00:07:52,470 E così TCP può ora fare una richiesta, sorta di, in direzione inversa. 154 00:07:52,470 --> 00:07:55,170 Bundling la sua richiesta in modo molto simile, 155 00:07:55,170 --> 00:07:57,230 e inviandolo via IP, che, lo so, potevo 156 00:07:57,230 --> 00:08:00,880 portare a una sorta di loop infinito di tutti la perdita di pacchetti sulla strada. 157 00:08:00,880 --> 00:08:05,580 >> Ma è sufficiente dire che il protocollo TCP dice, mi manca un pacchetto. 158 00:08:05,580 --> 00:08:08,670 Ho bisogno di inviare informazioni indietro al mittente. 159 00:08:08,670 --> 00:08:12,025 Fortunatamente l'indirizzo IP del mittente è, una sorta di, infagottato nel livello IP. 160 00:08:12,025 --> 00:08:15,780 Fa parte di-- è il ritorno indirizzo sulla busta. 161 00:08:15,780 --> 00:08:18,800 E dico, mi manca il numero di pacchetti due, ti invitiamo a inviarlo di nuovo. 162 00:08:18,800 --> 00:08:20,550 Quando il mittente riceve tali informazioni, 163 00:08:20,550 --> 00:08:22,599 non deve inviare l'intera posta di nuovo. 164 00:08:22,599 --> 00:08:25,390 Ha solo bisogno di inviare quell'individuo pezzo di essa che mancava, 165 00:08:25,390 --> 00:08:27,590 così abbiamo potuto inviare il numero due pacchetti. 166 00:08:27,590 --> 00:08:32,610 E quando si ottiene, ora dice di TCP, Ho tutti i quattro pezzi di dati 167 00:08:32,610 --> 00:08:34,100 che ho bisogno. 168 00:08:34,100 --> 00:08:39,590 Quindi, posso montarli insieme, e prendere questo intero blocco di informazioni 169 00:08:39,590 --> 00:08:44,169 e passare lungo alla porta 25, dove sarà interpretato come una e-mail. 170 00:08:44,169 --> 00:08:47,010 E che-- in questo modo in cui abbiamo invia una e-mail dal mittente 171 00:08:47,010 --> 00:08:49,273 al ricevitore utilizzando il protocollo TCP / IP. 172 00:08:49,273 --> 00:08:51,430 173 00:08:51,430 --> 00:08:54,180 Quindi, come ho detto, se in qualsiasi punto lungo la strada qualcosa è andato storto, 174 00:08:54,180 --> 00:08:56,600 TCP può trattare con esso. 175 00:08:56,600 --> 00:09:00,010 Si può fare una richiesta che il informazioni viene inviato di nuovo esso. 176 00:09:00,010 --> 00:09:01,840 E può ricostruire il messaggio. 177 00:09:01,840 --> 00:09:05,090 Ed una volta che è ricostruito il messaggio da tutti i pacchetti è ricevuto, 178 00:09:05,090 --> 00:09:10,350 allora può organizzarli e consegnarli al servizio corretto. 179 00:09:10,350 --> 00:09:11,990 >> Ecco, questo è il protocollo TCP in poche parole. 180 00:09:11,990 --> 00:09:14,550 Ecco come possiamo garantire invio di informazioni. 181 00:09:14,550 --> 00:09:16,540 Ricordate il protocollo TCP lavora frequentemente con IP, 182 00:09:16,540 --> 00:09:18,990 così questi due protocolli davvero non vanno di pari passo. 183 00:09:18,990 --> 00:09:22,160 Li abbiamo discusso in diversi video qui perché fanno cose diverse, 184 00:09:22,160 --> 00:09:26,190 ma sono così correlati, è solitamente usarli insieme. 185 00:09:26,190 --> 00:09:27,150 >> Sono Doug Lloyd. 186 00:09:27,150 --> 00:09:29,160 Questo è CS50. 187 00:09:29,160 --> 00:09:31,233