1 00:00:00,000 --> 00:00:04,884 2 00:00:04,884 --> 00:00:08,050 DOUG LLOYD: I denne videoen skal vi å snakke om Transmission Control 3 00:00:08,050 --> 00:00:10,440 Protokollen, TCP. 4 00:00:10,440 --> 00:00:13,290 Hvis du ikke har sett video på internett-protokollen, IP, 5 00:00:13,290 --> 00:00:15,290 du kan ønske å gjøre det før du ser denne videoen 6 00:00:15,290 --> 00:00:18,680 fordi de to er ganske beslektet. 7 00:00:18,680 --> 00:00:21,100 >> Så, internett-protokollen, igjen, en rask oppsummering, 8 00:00:21,100 --> 00:00:22,930 det er den protokollen som beveger informasjon 9 00:00:22,930 --> 00:00:28,210 fra en avsendermaskin til en mottaker maskinen gjennom nettverket. 10 00:00:28,210 --> 00:00:29,720 >> Så hva er TCP? 11 00:00:29,720 --> 00:00:33,310 Mens bare flytte fra en avsender maskin til å motta maskin, 12 00:00:33,310 --> 00:00:35,120 er ikke hele historien. 13 00:00:35,120 --> 00:00:38,040 Vi vet også at vårt program, våre datamaskiner, f.eks 14 00:00:38,040 --> 00:00:41,000 kjører flere programmer, og har flere tjenester 15 00:00:41,000 --> 00:00:45,140 kjører på disse maskinene. 16 00:00:45,140 --> 00:00:51,750 Og så, hvis vi ønsker å få en pakke, eller informasjon til et bestemt program, 17 00:00:51,750 --> 00:00:54,590 på en bestemt maskin, vi trenger mer informasjon 18 00:00:54,590 --> 00:00:59,490 enn bare hva IP tillater oss å få informasjon fra punkt A til punkt B. 19 00:00:59,490 --> 00:01:02,390 >> Så kan TCP betraktes som dirigere pakken 20 00:01:02,390 --> 00:01:07,590 til riktig program, eller riktig service, på mottakermaskinen. 21 00:01:07,590 --> 00:01:11,810 Og så det er viktig å, som du kanskje forvente, vet hvor den skal gå, 22 00:01:11,810 --> 00:01:14,550 og hvilke pakken er for på samme tid. 23 00:01:14,550 --> 00:01:18,370 Og så, ofte, når du snakker om Transmission Control Protocol, TCP, 24 00:01:18,370 --> 00:01:23,900 du virkelig ofte høre det i kontekst, TCP slash IP, eller bare TCP / IP. 25 00:01:23,900 --> 00:01:27,639 Disse to protokollene er så henger det, er de i utgangspunktet 26 00:01:27,639 --> 00:01:28,680 behandles som en enkelt enhet. 27 00:01:28,680 --> 00:01:31,630 Men de er to separate protokoller som gjør to separate ting. 28 00:01:31,630 --> 00:01:36,690 >> Igjen er IP ansvarlig for å få det fra en maskin til en annen. 29 00:01:36,690 --> 00:01:41,250 TCP og er ansvarlig for å få det til riktig program, 30 00:01:41,250 --> 00:01:43,490 eller korrekt tjeneste på en maskin. 31 00:01:43,490 --> 00:01:45,500 Og det gjør noe annet som IP ikke gjør, 32 00:01:45,500 --> 00:01:48,600 som er garantere levering. 33 00:01:48,600 --> 00:01:55,060 >> Så, hvis vi nå paret en maskinens IP adresse med den såkalte portnummer, 34 00:01:55,060 --> 00:01:58,750 og et portnummer er hvordan en spesifikk service, eller verktøy, eller program, 35 00:01:58,750 --> 00:02:00,350 er identifisert på en maskin. 36 00:02:00,350 --> 00:02:03,920 Hvis vi nå har en IP- adresse pluss et portnummer, 37 00:02:03,920 --> 00:02:07,240 Nå kan vi identifiserer en bestemt tjeneste 38 00:02:07,240 --> 00:02:09,479 kjører på en bestemt maskin. 39 00:02:09,479 --> 00:02:11,920 >> Så det er derfor TCP og IP er så ofte henger sammen, 40 00:02:11,920 --> 00:02:14,170 fordi at portnummeret på sin egen spiller egentlig ingen 41 00:02:14,170 --> 00:02:17,670 bety noe hvis du trenger en portnummer, og maskinen 42 00:02:17,670 --> 00:02:19,566 som du snakker om. 43 00:02:19,566 --> 00:02:24,060 Hva maskinen er ment å være med denne porten, f.eks. 44 00:02:24,060 --> 00:02:28,350 >> Den andre tingen som TCP gjør, som Jeg sa, det garanterer levering. 45 00:02:28,350 --> 00:02:30,810 Så, i tillegg til angivelse av portnummeret 46 00:02:30,810 --> 00:02:34,640 det indikerer også hvor mange pakker, internett-protokollen, IP, 47 00:02:34,640 --> 00:02:36,110 har delt dataene inn. 48 00:02:36,110 --> 00:02:41,200 Og det beordrer disse pakkene slik at de kan rekonstrueres på mottaker 49 00:02:41,200 --> 00:02:45,820 maskin, selv om de i en received-- annen rekkefølge enn de ble sendt. 50 00:02:45,820 --> 00:02:48,460 Som kan skje fordi IP er en forbindelsesløs protokoll, 51 00:02:48,460 --> 00:02:52,610 og så forskjellige pakker kan ta forskjellige baner gjennom systemet. 52 00:02:52,610 --> 00:02:53,660 53 00:02:53,660 --> 00:02:55,865 >> Noen av disse portnumre er svært vanlig, 54 00:02:55,865 --> 00:02:57,990 og de har blitt standardisert tvers av alle datamaskiner, 55 00:02:57,990 --> 00:03:00,500 lignende, ganske mye hver datamaskinprodusenten nå. 56 00:03:00,500 --> 00:03:03,612 Så noe som heter FTP, File Transfer Protocol, 57 00:03:03,612 --> 00:03:05,820 som brukes til å overføre filer, som du kanskje forventer, 58 00:03:05,820 --> 00:03:10,060 fra en maskin til en annen, som bruker port 21 konvensjonelt. 59 00:03:10,060 --> 00:03:13,000 E-post, SMTP, bruker port 25. 60 00:03:13,000 --> 00:03:16,070 DNS, domenenavnsystemet, som vi snakket om i vår internett primer 61 00:03:16,070 --> 00:03:17,976 video, bruker port 53. 62 00:03:17,976 --> 00:03:20,100 Hvis du noen gang surfer nettet, er du ganske mye 63 00:03:20,100 --> 00:03:23,440 alltid bruker port 80, med mindre du surfer på nettet sikkert, 64 00:03:23,440 --> 00:03:26,060 sikker nettsurfing, bruker port 443. 65 00:03:26,060 --> 00:03:28,610 66 00:03:28,610 --> 00:03:30,790 >> Så hva er dette TCP / IP-prosessen? 67 00:03:30,790 --> 00:03:33,730 Hva skjer med både av disse protokollene sammen? 68 00:03:33,730 --> 00:03:35,520 Vel, la oss snakke om det. 69 00:03:35,520 --> 00:03:39,420 Når et program ønsker å sende data, TCP bidrar til å bryte den i biter, 70 00:03:39,420 --> 00:03:42,700 og kommuniserer disse pakkene til nettverksprogramvare på datamaskinen. 71 00:03:42,700 --> 00:03:45,850 Så det tar dataene og det brytes informasjon rundt det 72 00:03:45,850 --> 00:03:48,700 som angir hvilken port er ment å gå til, 73 00:03:48,700 --> 00:03:52,500 og hvilken rekkefølge som pakke er ute av alt. 74 00:03:52,500 --> 00:03:56,940 Så gjør pakke en av ti, to- 10, tre 10, og så videre. 75 00:03:56,940 --> 00:04:01,750 >> IP blir disse data biter som har blitt pakket med TCP, 76 00:04:01,750 --> 00:04:06,447 og brytes mer informasjon om hvor pakken er ment å gå. 77 00:04:06,447 --> 00:04:08,780 Vi kan kalle dette IP sjikt som omgir pakken. 78 00:04:08,780 --> 00:04:11,210 Så, det er liksom, som, en av disse tredukker. 79 00:04:11,210 --> 00:04:14,780 Vi har data i midten, og deretter TCP på toppen av, 80 00:04:14,780 --> 00:04:17,920 forteller det hvor data innsiden av TCP er 81 00:04:17,920 --> 00:04:22,150 ment å gå i hvilken port eller hva tjenesten på en maskin. 82 00:04:22,150 --> 00:04:25,110 Rundt det er IP-sjiktet. 83 00:04:25,110 --> 00:04:29,230 Hva IP-adresse, hvilken maskin, er faktisk å få dette. 84 00:04:29,230 --> 00:04:32,070 >> Så da, at pakke som er blitt pakket med alle disse lagene, 85 00:04:32,070 --> 00:04:35,250 sendes via Internet Protocol gjennom ordningen med rutere, får 86 00:04:35,250 --> 00:04:39,960 fra punkt A til punkt B. Når mottar maskin eller enhet, blir 87 00:04:39,960 --> 00:04:42,790 det, ser det på IP lag, sier det, yup det er 88 00:04:42,790 --> 00:04:45,260 IP-adressen min, så det tar off, liksom sprekker egget, 89 00:04:45,260 --> 00:04:47,380 og tar av IP-sjiktet. 90 00:04:47,380 --> 00:04:49,530 Deretter ser det ut til at det er TCP lag, og det sier, 91 00:04:49,530 --> 00:04:52,720 OK, ser ut som dette er kommer til port x, eller port y. 92 00:04:52,720 --> 00:04:55,842 Og tydeligvis er det pakke nummer åtte av 15. 93 00:04:55,842 --> 00:04:56,800 Så det er godt å vite. 94 00:04:56,800 --> 00:05:01,240 Så da kan det ta denne informasjonen, ta av TCP lag nå, 95 00:05:01,240 --> 00:05:04,410 vel vitende om at det er for port x, og det er pakke nummer åtte, 96 00:05:04,410 --> 00:05:06,270 og få på data inne. 97 00:05:06,270 --> 00:05:09,460 Og det kan forberede dataene til organiseres på riktig måte. 98 00:05:09,460 --> 00:05:11,449 Og når alle de data er mottatt, TCP 99 00:05:11,449 --> 00:05:13,990 kan levere den til riktig service, og si, her du går. 100 00:05:13,990 --> 00:05:16,107 Her er opplysningene du har fått. 101 00:05:16,107 --> 00:05:17,940 Denne prosessen kan se noe sånt som dette. 102 00:05:17,940 --> 00:05:21,392 Så la oss sende en e-post fra en avsender til en mottaker. 103 00:05:21,392 --> 00:05:23,100 Og la oss si at dette e-post er ganske liten, 104 00:05:23,100 --> 00:05:25,975 så vi trenger bare å dele den opp i fire pakker, og vi kaller dem A, 105 00:05:25,975 --> 00:05:29,460 B, C og D. Vel, vi ønsker å flytte at første pakken hva skjer? 106 00:05:29,460 --> 00:05:34,491 Vel, tar vi som del av data, de data som er en del av pakke A, 107 00:05:34,491 --> 00:05:38,500 og rundt at vi skal å vikle den med en TCP lag. 108 00:05:38,500 --> 00:05:41,670 E-post, kan du husker, sendes via port 25, 109 00:05:41,670 --> 00:05:46,181 og vi har fire biter av data, her, at vi kommer til å bruke, 110 00:05:46,181 --> 00:05:47,430 og dette er den første av dem. 111 00:05:47,430 --> 00:05:50,013 Så kanskje vår TCP laget inneholder informasjon om, vel, vi er 112 00:05:50,013 --> 00:05:56,060 kommer til port 25, og dette pakke nummer én av fire. 113 00:05:56,060 --> 00:05:59,280 >> Rundt det, så nå har vi alt som informasjon buntet opp sammen, 114 00:05:59,280 --> 00:06:03,000 vi kommer til å si hvor vi vil ha det å gå, hva maskin, hva IP-adresse 115 00:06:03,000 --> 00:06:04,910 er ment å få denne pakken. 116 00:06:04,910 --> 00:06:06,604 Og det er en del av IP-laget. 117 00:06:06,604 --> 00:06:08,770 Og det er annen informasjon i der også, slik 118 00:06:08,770 --> 00:06:11,300 som returadresse i Hvis noe går galt, 119 00:06:11,300 --> 00:06:14,390 det vet hvor du skal sende informasjon tilbake, og så videre. 120 00:06:14,390 --> 00:06:16,475 >> Men IP laget går rundt alt dette. 121 00:06:16,475 --> 00:06:19,860 At hele greia er buntet sammen, som en stor enhet, 122 00:06:19,860 --> 00:06:22,080 og sendes via en IP-overføring. 123 00:06:22,080 --> 00:06:26,180 Så det blir rutet gjennom ruteren nettverk, ved hjelp av Internett-protokollen. 124 00:06:26,180 --> 00:06:28,700 Og mottakeren mottar hele greia. 125 00:06:28,700 --> 00:06:31,910 Og så kan det begynne å dekonstruere hva som skjer her. 126 00:06:31,910 --> 00:06:36,030 Den ser på IP-lag, utvendig lag av disse data, 127 00:06:36,030 --> 00:06:38,560 og sier: Jepp, det er min IP adresse slik at vi kan forkaste det. 128 00:06:38,560 --> 00:06:40,685 Jeg kan, på en måte, ignorere det, trenger ikke det lenger, 129 00:06:40,685 --> 00:06:42,480 og det kan se en dypere nivå. 130 00:06:42,480 --> 00:06:47,590 Det ser det, OK, dette er data som er beregnet til å bli mottatt på port 25. 131 00:06:47,590 --> 00:06:50,560 Det er tydeligvis den første delen av fire. 132 00:06:50,560 --> 00:06:54,260 Så, jeg kommer til å holde det i tankene, og se på dataene, 133 00:06:54,260 --> 00:06:57,349 og sporet den omtrent der Jeg tror det kommer til å gå. 134 00:06:57,349 --> 00:07:00,140 Nå, på grunn av Internett-protokollen det er ikke nødvendigvis tilfelle 135 00:07:00,140 --> 00:07:03,442 at den neste pakke i Mottakeren får, pakke to. 136 00:07:03,442 --> 00:07:05,150 Faktisk er den neste ting mottakeren får 137 00:07:05,150 --> 00:07:08,230 kanskje pakke nummer tre fordi disse pakkene 138 00:07:08,230 --> 00:07:11,777 tok ulike veier på grunn av annen trafikk i nettverket. 139 00:07:11,777 --> 00:07:14,360 Og så, jeg kommer ikke til å gå gjennom diagrammet for å bygge det 140 00:07:14,360 --> 00:07:17,560 opp igjen, men pakke tre- trekk, blir strippet bort 141 00:07:17,560 --> 00:07:20,410 av alle sine lag, idet det IP-lag, TCP lag, 142 00:07:20,410 --> 00:07:22,420 og dataene blir satt på rett sted. 143 00:07:22,420 --> 00:07:25,200 Og så, la oss si det mottar pakken fire. 144 00:07:25,200 --> 00:07:29,290 >> Nå la oss si, det er det, det ikke få noen flere data. 145 00:07:29,290 --> 00:07:30,300 Hva går det å gjøre? 146 00:07:30,300 --> 00:07:32,110 IP gjør ikke noe for oss. 147 00:07:32,110 --> 00:07:33,260 Men TCP gjør. 148 00:07:33,260 --> 00:07:38,250 TCP vet, vel, jeg har fått en av fire, tre av fire, og fire av fire. 149 00:07:38,250 --> 00:07:41,100 Jeg får ikke noe mer data. 150 00:07:41,100 --> 00:07:43,770 Så noe har gått galt. 151 00:07:43,770 --> 00:07:45,050 Men jeg kan garantere levering. 152 00:07:45,050 --> 00:07:49,300 Jeg vet at pakke nummer to er savnet. 153 00:07:49,300 --> 00:07:52,470 Og så TCP kan nå gjøre en forespørsel, slags, i motsatt retning. 154 00:07:52,470 --> 00:07:55,170 Bundling opp sin forespørsel mye på samme måte, 155 00:07:55,170 --> 00:07:57,230 og sende det via IP, som jeg vet, kunne 156 00:07:57,230 --> 00:08:00,880 føre til en slags uendelig løkke av alle slippe pakker på vei. 157 00:08:00,880 --> 00:08:05,580 >> Men nok det å si at TCP sier, jeg mangler en pakke. 158 00:08:05,580 --> 00:08:08,670 Jeg trenger å sende informasjon tilbake til avsenderen. 159 00:08:08,670 --> 00:08:12,025 Heldigvis avsenderens IP-adresse er, liksom, buntet opp i IP laget. 160 00:08:12,025 --> 00:08:15,780 Det er en del of-- det er avkastningen adresse på konvolutten. 161 00:08:15,780 --> 00:08:18,800 Og si, jeg mangler pakkenummer to, kan du vennligst sende den på nytt. 162 00:08:18,800 --> 00:08:20,550 Når senderen mottar denne informasjonen, 163 00:08:20,550 --> 00:08:22,599 det trenger ikke å sende hele e-posten på nytt. 164 00:08:22,599 --> 00:08:25,390 Den trenger bare å sende den enkelte bit av det som manglet, 165 00:08:25,390 --> 00:08:27,590 slik at vi kunne sende pakke nummer to. 166 00:08:27,590 --> 00:08:32,610 Og når det blir det, nå TCP sier: Jeg har alle fire stykker av data 167 00:08:32,610 --> 00:08:34,100 som jeg trenger. 168 00:08:34,100 --> 00:08:39,590 Så kan jeg sette dem sammen, og ta hele denne blokken av informasjon 169 00:08:39,590 --> 00:08:44,169 og sende det sammen til port 25, der det vil bli tolket som en e-post. 170 00:08:44,169 --> 00:08:47,010 Og at-- på denne måten vi har nå sende en e-post fra avsender 171 00:08:47,010 --> 00:08:49,273 til mottaker ved hjelp av TCP / IP. 172 00:08:49,273 --> 00:08:51,430 173 00:08:51,430 --> 00:08:54,180 Så, som jeg sa, hvis på noe punkt underveis noe gikk galt, 174 00:08:54,180 --> 00:08:56,600 TCP kan takle det. 175 00:08:56,600 --> 00:09:00,010 Det kan gjøre en anmodning om at informasjon blir sendt tilbake til det. 176 00:09:00,010 --> 00:09:01,840 Og det kan rekonstruere meldingen. 177 00:09:01,840 --> 00:09:05,090 Og når den er rekonstruert meldingen fra alle pakkene den er mottatt, 178 00:09:05,090 --> 00:09:10,350 så det kan organisere dem og levere dem til riktig tjeneste. 179 00:09:10,350 --> 00:09:11,990 >> Så det er TCP i et nøtteskall. 180 00:09:11,990 --> 00:09:14,550 Det er hvordan vi garantere levering av informasjon. 181 00:09:14,550 --> 00:09:16,540 Husk TCP ofte fungerer med IP, 182 00:09:16,540 --> 00:09:18,990 så disse to protokoller virkelig går hånd i hånd. 183 00:09:18,990 --> 00:09:22,160 Vi diskuterte dem i flere videoer her fordi de gjør forskjellige ting, 184 00:09:22,160 --> 00:09:26,190 men de er så beslektede, de vil du vanligvis bruker dem sammen. 185 00:09:26,190 --> 00:09:27,150 >> Jeg er Doug Lloyd. 186 00:09:27,150 --> 00:09:29,160 Dette er CS50. 187 00:09:29,160 --> 00:09:31,233