1 00:00:00,000 --> 00:00:04,884 2 00:00:04,884 --> 00:00:08,050 DOUG LLOYD: I den här videon vi ska att tala om Transmission Control 3 00:00:08,050 --> 00:00:10,440 Protokoll, TCP. 4 00:00:10,440 --> 00:00:13,290 Om du inte har sett den video på Internet Protocol, IP, 5 00:00:13,290 --> 00:00:15,290 Du kanske vill göra det innan du tittar här videon 6 00:00:15,290 --> 00:00:18,680 eftersom de två är ganska ihop. 7 00:00:18,680 --> 00:00:21,100 >> Så, Internetprotokollet, igen, en snabb sammanfattning, 8 00:00:21,100 --> 00:00:22,930 det är protokollet som rör sig informationen 9 00:00:22,930 --> 00:00:28,210 från en sändande maskin till en mottagande maskin via nätverket. 10 00:00:28,210 --> 00:00:29,720 >> Så vad är TCP? 11 00:00:29,720 --> 00:00:33,310 Medan bara flytta från en sändande maskinen till mottagande maskin, 12 00:00:33,310 --> 00:00:35,120 är inte hela historien. 13 00:00:35,120 --> 00:00:38,040 Vi vet också att vårt program, våra datorer, till exempel, 14 00:00:38,040 --> 00:00:41,000 kör flera program, och har flera tjänster 15 00:00:41,000 --> 00:00:45,140 körs på dessa maskiner. 16 00:00:45,140 --> 00:00:51,750 Och så, om vi vill få ett paket, eller information till ett visst program, 17 00:00:51,750 --> 00:00:54,590 på en specifik maskin, vi behöver mer information 18 00:00:54,590 --> 00:00:59,490 än vad IP tillåter oss att få information från punkt A till punkt B. 19 00:00:59,490 --> 00:01:02,390 >> Så kan TCP ses som att rikta paketet 20 00:01:02,390 --> 00:01:07,590 till rätt program, eller rätt tjänsten på den mottagande maskinen. 21 00:01:07,590 --> 00:01:11,810 Och så är det viktigt att, som du kanske förväntar sig, vet var det är tänkt att gå, 22 00:01:11,810 --> 00:01:14,550 och vad paketet är för samtidigt. 23 00:01:14,550 --> 00:01:18,370 Och så ofta, när man talar om Transmission Control Protocol, TCP, 24 00:01:18,370 --> 00:01:23,900 du verkligen ofta höra det i sammanhang TCP snedstreck IP eller bara TCP / IP. 25 00:01:23,900 --> 00:01:27,639 Dessa två protokoll är så varandra att de är i grund och botten 26 00:01:27,639 --> 00:01:28,680 behandlas som en enda enhet. 27 00:01:28,680 --> 00:01:31,630 Men de är två separata protokoll att göra två separata saker. 28 00:01:31,630 --> 00:01:36,690 >> Återigen, är IP ansvarig för att få det från en maskin till en annan. 29 00:01:36,690 --> 00:01:41,250 Och TCP ansvarar för få det till rätt program, 30 00:01:41,250 --> 00:01:43,490 eller rätt tjänst på en maskin. 31 00:01:43,490 --> 00:01:45,500 Och det gör något annat som IP inte gör, 32 00:01:45,500 --> 00:01:48,600 vilket är garantera leverans. 33 00:01:48,600 --> 00:01:55,060 >> Så om vi nu koppla en maskins IP Att med den så kallade portnummer, 34 00:01:55,060 --> 00:01:58,750 och ett portnummer är hur en specifik tjänsten, eller verktyg, eller program, 35 00:01:58,750 --> 00:02:00,350 identifieras på en maskin. 36 00:02:00,350 --> 00:02:03,920 Om vi ​​nu har en IP adress plus ett portnummer, 37 00:02:03,920 --> 00:02:07,240 Nu kan vi identifiera en viss tjänst 38 00:02:07,240 --> 00:02:09,479 körs på en viss maskin. 39 00:02:09,479 --> 00:02:11,920 >> Så det är därför TCP och IP är så ofta sammankopplade, 40 00:02:11,920 --> 00:02:14,170 eftersom det portnumret på egen hand inte riktigt 41 00:02:14,170 --> 00:02:17,670 betyder någonting om du behöver en portnummer, och maskinen 42 00:02:17,670 --> 00:02:19,566 att du pratar om. 43 00:02:19,566 --> 00:02:24,060 Vilken maskin är tänkt att använda denna speciella porten, till exempel. 44 00:02:24,060 --> 00:02:28,350 >> Den andra saken som TCP gör, som Jag sa, är det garanterar leverans. 45 00:02:28,350 --> 00:02:30,810 Så, förutom att ange portnumret, 46 00:02:30,810 --> 00:02:34,640 Det visar också hur många paket, internetprotokoll, IP, 47 00:02:34,640 --> 00:02:36,110 har delat in data i. 48 00:02:36,110 --> 00:02:41,200 Och det beställer dessa paket så att de kan rekonstrueras på den mottagande 49 00:02:41,200 --> 00:02:45,820 maskin, även om de received-- i en annan ordning än de sändes. 50 00:02:45,820 --> 00:02:48,460 Vilket kan hända eftersom IP är ett anslutningsfritt protokoll, 51 00:02:48,460 --> 00:02:52,610 och så olika paket kan ta olika vägar genom systemet. 52 00:02:52,610 --> 00:02:53,660 53 00:02:53,660 --> 00:02:55,865 >> Några av dessa portnummer är mycket vanligt, 54 00:02:55,865 --> 00:02:57,990 och de har standardiserats i alla datorer, 55 00:02:57,990 --> 00:03:00,500 som, ganska mycket varje datortillverkare nu. 56 00:03:00,500 --> 00:03:03,612 Så något som kallas FTP, File Transfer Protocol, 57 00:03:03,612 --> 00:03:05,820 som används för att sända filer, som man kan förvänta sig, 58 00:03:05,820 --> 00:03:10,060 från en maskin till en annan, som använder port 21 på konventionellt sätt. 59 00:03:10,060 --> 00:03:13,000 E-post, SMTP, använder port 25. 60 00:03:13,000 --> 00:03:16,070 DNS, domännamnssystemet, som vi talade om i vår internet primer 61 00:03:16,070 --> 00:03:17,976 video, använder port 53. 62 00:03:17,976 --> 00:03:20,100 Om du någonsin surfar webben, du är ganska mycket 63 00:03:20,100 --> 00:03:23,440 alltid använder port 80, såvida du surfar på webben på ett säkert sätt 64 00:03:23,440 --> 00:03:26,060 säker surfning, använder port 443. 65 00:03:26,060 --> 00:03:28,610 66 00:03:28,610 --> 00:03:30,790 >> Så vad är det här TCP / IP processen? 67 00:03:30,790 --> 00:03:33,730 Vad händer med både av dessa protokoll tillsammans? 68 00:03:33,730 --> 00:03:35,520 Nåväl, låt oss prata om det. 69 00:03:35,520 --> 00:03:39,420 När ett program vill skicka data, TCP hjälper till att bryta den i bitar, 70 00:03:39,420 --> 00:03:42,700 och kommunicerar dessa paket till datorns nätverks programvara. 71 00:03:42,700 --> 00:03:45,850 Så det tar data och det sveper information kring det 72 00:03:45,850 --> 00:03:48,700 som anger vilken port är tänkt att gå till, 73 00:03:48,700 --> 00:03:52,500 och vilken ordning som paket är ur alla. 74 00:03:52,500 --> 00:03:56,940 Så gör paket en av 10, två av 10, tre av 10, och så vidare. 75 00:03:56,940 --> 00:04:01,750 >> IP får de data bitar som har lindats med TCP, 76 00:04:01,750 --> 00:04:06,447 och sveper mer information om där paketet är tänkt att gå. 77 00:04:06,447 --> 00:04:08,780 Vi kan kalla detta IP skikt som omger paketet. 78 00:04:08,780 --> 00:04:11,210 Så det är liksom, liksom, en av de dockorna. 79 00:04:11,210 --> 00:04:14,780 Vi har data i mitten och sedan TCP ovanpå, 80 00:04:14,780 --> 00:04:17,920 berättar det där data i TCP är 81 00:04:17,920 --> 00:04:22,150 tänkt att gå till vilken port eller vad tjänsten på en maskin. 82 00:04:22,150 --> 00:04:25,110 Runt det är IP-skiktet. 83 00:04:25,110 --> 00:04:29,230 Vilken IP-adress, vilken maskin, faktiskt få detta. 84 00:04:29,230 --> 00:04:32,070 >> Alltså, det paket som är varit lindade med alla dessa skikt, 85 00:04:32,070 --> 00:04:35,250 sänds via Internet Protocol genom systemet routrar, få 86 00:04:35,250 --> 00:04:39,960 från punkt A till punkt B. När mottagande maskin eller anordning, får 87 00:04:39,960 --> 00:04:42,790 det, ser det på IP lagret, säger, Japp det är 88 00:04:42,790 --> 00:04:45,260 min IP-adress, så det tar off, typ av sprickor ägget, 89 00:04:45,260 --> 00:04:47,380 och tar bort IP-lagret. 90 00:04:47,380 --> 00:04:49,530 Då ser att det finns ett TCP-lager, och det står, 91 00:04:49,530 --> 00:04:52,720 OK, ser ut så här är gå till hamn x eller y port. 92 00:04:52,720 --> 00:04:55,842 Och tydligen är det paket nummer åtta av 15. 93 00:04:55,842 --> 00:04:56,800 Så det är bra att veta. 94 00:04:56,800 --> 00:05:01,240 Så då kan ta denna information, ta av TCP-lager nu, 95 00:05:01,240 --> 00:05:04,410 att veta att det är för hamn x, och det är paket nummer åtta, 96 00:05:04,410 --> 00:05:06,270 och komma åt data i. 97 00:05:06,270 --> 00:05:09,460 Och det kan förbereda data till organiseras på rätt sätt. 98 00:05:09,460 --> 00:05:11,449 Och när alla data mottas, TCP 99 00:05:11,449 --> 00:05:13,990 kan lämna bort det till rätt service och säga, här har du. 100 00:05:13,990 --> 00:05:16,107 Här är de data som du har fått. 101 00:05:16,107 --> 00:05:17,940 Den processen kan se något som det här. 102 00:05:17,940 --> 00:05:21,392 Så låt oss skicka ett mail från en sändare till en mottagare. 103 00:05:21,392 --> 00:05:23,100 Och låt oss säga detta e-post är ganska liten, 104 00:05:23,100 --> 00:05:25,975 så vi behöver bara dela upp den i fyra paket, och vi ska kalla dem A, 105 00:05:25,975 --> 00:05:29,460 B, C och D. Tja, vi vill flytta det första paketet vad som händer? 106 00:05:29,460 --> 00:05:34,491 Tja, tar vi den bit av data, de data som är en del av paket A, 107 00:05:34,491 --> 00:05:38,500 och runt att vi kommer att linda den med en TCP skikt. 108 00:05:38,500 --> 00:05:41,670 E-post, kan du minns, skickas via port 25, 109 00:05:41,670 --> 00:05:46,181 och vi har fyra bitar data, här, att vi kommer att använda, 110 00:05:46,181 --> 00:05:47,430 och detta är den första av dem. 111 00:05:47,430 --> 00:05:50,013 Så kanske vår TCP skiktet innehåller information om, ja, vi är 112 00:05:50,013 --> 00:05:56,060 gå till port 25, och detta paket nummer ett av fyra. 113 00:05:56,060 --> 00:05:59,280 >> Runt det, så nu har vi allt att Information paketerade tillsammans, 114 00:05:59,280 --> 00:06:03,000 vi kommer att säga var vi vill ha det att gå, vilken maskin, vilken IP-adress 115 00:06:03,000 --> 00:06:04,910 är tänkt att få detta paket. 116 00:06:04,910 --> 00:06:06,604 Och det är en del av IP-lagret. 117 00:06:06,604 --> 00:06:08,770 Och det finns andra uppgifter där också, till exempel 118 00:06:08,770 --> 00:06:11,300 som avsändaradress i om något går fel, 119 00:06:11,300 --> 00:06:14,390 det vet vart du ska skicka information tillbaka, och så vidare. 120 00:06:14,390 --> 00:06:16,475 >> Men IP-lagret går kring allt detta. 121 00:06:16,475 --> 00:06:19,860 Det hela som medföljer tillsammans, som en stor enhet, 122 00:06:19,860 --> 00:06:22,080 och skickas via en IP-överföring. 123 00:06:22,080 --> 00:06:26,180 Så det blir dirigeras via routern nätverk, med hjälp av Internetprotokollet. 124 00:06:26,180 --> 00:06:28,700 Och mottagaren tar emot hela saken. 125 00:06:28,700 --> 00:06:31,910 Och då kan det börja dekonstruera vad som händer här. 126 00:06:31,910 --> 00:06:36,030 Det ser på IP-lagret, den utsidesskikt av dessa data, 127 00:06:36,030 --> 00:06:38,560 och säger, yep, det är min IP adress så att vi kan kasta det. 128 00:06:38,560 --> 00:06:40,685 Jag kan typ av, ignorera det, behöver inte det längre, 129 00:06:40,685 --> 00:06:42,480 och det kan se en nivå djupare. 130 00:06:42,480 --> 00:06:47,590 Det ser att, OK, är dessa data som är avsedd att tas emot på port 25. 131 00:06:47,590 --> 00:06:50,560 Det är uppenbarligen den första delen av fyra. 132 00:06:50,560 --> 00:06:54,260 Så jag kommer att hålla det i sinne och titta på data, 133 00:06:54,260 --> 00:06:57,349 och urtaget det ungefär där Jag tror att det kommer att gå. 134 00:06:57,349 --> 00:07:00,140 Nu, på grund av internetprotokoll det är inte nödvändigtvis fallet 135 00:07:00,140 --> 00:07:03,442 att nästa paket den Mottagaren får, är paketet två. 136 00:07:03,442 --> 00:07:05,150 I själva verket, den nästa sak mottagaren får 137 00:07:05,150 --> 00:07:08,230 kan vara paketnummer tre eftersom dessa paket 138 00:07:08,230 --> 00:07:11,777 tog olika vägar på grund av annan trafik i nätverket. 139 00:07:11,777 --> 00:07:14,360 Och så, jag kommer inte att gå genom diagrammet i bygga det 140 00:07:14,360 --> 00:07:17,560 upp igen, men paket tre flyttar, blir skalat bort 141 00:07:17,560 --> 00:07:20,410 av alla dess skikt, varvid det IP-skiktet, TCP skiktet, 142 00:07:20,410 --> 00:07:22,420 och data får sätta på rätt plats. 143 00:07:22,420 --> 00:07:25,200 Och då, låt oss säga att det mottar paketet fyra. 144 00:07:25,200 --> 00:07:29,290 >> Låt oss nu säga att det är det inte få några fler uppgifter. 145 00:07:29,290 --> 00:07:30,300 Vad kommer det att göra? 146 00:07:30,300 --> 00:07:32,110 IP inte göra något för oss. 147 00:07:32,110 --> 00:07:33,260 Men TCP gör. 148 00:07:33,260 --> 00:07:38,250 TCP vet, ja, jag har fått en av fyra, tre av fyra, och fyra av fyra. 149 00:07:38,250 --> 00:07:41,100 Jag får inte några fler uppgifter. 150 00:07:41,100 --> 00:07:43,770 Så något har gått fel. 151 00:07:43,770 --> 00:07:45,050 Men jag kan garantera leverans. 152 00:07:45,050 --> 00:07:49,300 Jag vet att paketet nummer två saknas. 153 00:07:49,300 --> 00:07:52,470 Och så TCP kan nu göra en förfrågan, sortera av, i den omvända riktningen. 154 00:07:52,470 --> 00:07:55,170 Buntning upp sin begäran på ungefär samma sätt, 155 00:07:55,170 --> 00:07:57,230 och skicka det via IP, som jag vet, kunde 156 00:07:57,230 --> 00:08:00,880 leda till någon form av oändlig slinga av alla släppa paket på vägen. 157 00:08:00,880 --> 00:08:05,580 >> Men det räcker att säga att TCP säger jag saknar ett paket. 158 00:08:05,580 --> 00:08:08,670 Jag behöver skicka information tillbaka till avsändaren. 159 00:08:08,670 --> 00:08:12,025 Lyckligtvis avsändarens IP-adress är, sorts, paketerade i IP-skiktet. 160 00:08:12,025 --> 00:08:15,780 Det är en del of-- det är avkastningen adress på kuvertet. 161 00:08:15,780 --> 00:08:18,800 Och säg, jag saknar paketnummer två, kan du vara snäll och skicka det. 162 00:08:18,800 --> 00:08:20,550 När avsändaren tar emot denna information, 163 00:08:20,550 --> 00:08:22,599 det behöver inte skicka hela e-post igen. 164 00:08:22,599 --> 00:08:25,390 Det behöver bara skicka den enskilde bit av det som saknades, 165 00:08:25,390 --> 00:08:27,590 så vi kunde skicka paket nummer två. 166 00:08:27,590 --> 00:08:32,610 Och när det blir det, nu TCP säger, Jag har alla fyra bitar data 167 00:08:32,610 --> 00:08:34,100 som jag behöver. 168 00:08:34,100 --> 00:08:39,590 Så kan jag samla ihop dem, och ta hela denna informationsblock 169 00:08:39,590 --> 00:08:44,169 och sprida den vidare till port 25, där Det kommer att tolkas som ett e-postmeddelande. 170 00:08:44,169 --> 00:08:47,010 Och that-- på detta sätt vi har nu skicka ett mail från avsändare 171 00:08:47,010 --> 00:08:49,273 till mottagare med hjälp av TCP / IP. 172 00:08:49,273 --> 00:08:51,430 173 00:08:51,430 --> 00:08:54,180 Så, som sagt, om vid något tillfälle längs vägen något gick fel, 174 00:08:54,180 --> 00:08:56,600 TCP kan ta itu med det. 175 00:08:56,600 --> 00:09:00,010 Det kan göra en begäran om att Information får skickas tillbaka till det. 176 00:09:00,010 --> 00:09:01,840 Och det kan rekonstruera meddelandet. 177 00:09:01,840 --> 00:09:05,090 Och när det är rekonstruerat meddelandet från alla paket det emot, 178 00:09:05,090 --> 00:09:10,350 då kan organisera dem och leverera dem till rätt tjänst. 179 00:09:10,350 --> 00:09:11,990 >> Så det är TCP i ett nötskal. 180 00:09:11,990 --> 00:09:14,550 Det är så vi garanterar leverans av information. 181 00:09:14,550 --> 00:09:16,540 Kom ihåg TCP ofta arbetar med IP, 182 00:09:16,540 --> 00:09:18,990 så dessa två protokoll verkligen går hand i hand. 183 00:09:18,990 --> 00:09:22,160 Vi diskuterade dem i flera videor här eftersom de gör olika saker, 184 00:09:22,160 --> 00:09:26,190 men de är så varandra, de du brukar använda dem tillsammans. 185 00:09:26,190 --> 00:09:27,150 >> Jag är Doug Lloyd. 186 00:09:27,150 --> 00:09:29,160 Detta är CS50. 187 00:09:29,160 --> 00:09:31,233