1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:09,640 [MUSIC PLAYING] 3 00:00:09,640 --> 00:00:11,120 DAVID J. MALAN: The internet. 4 00:00:11,120 --> 00:00:13,170 Odds are, you use this every day, and odds 5 00:00:13,170 --> 00:00:15,630 are you have internet connectivity at home these days, 6 00:00:15,630 --> 00:00:17,220 or at work, or at school. 7 00:00:17,220 --> 00:00:18,900 But how does it all work? 8 00:00:18,900 --> 00:00:21,210 How is it that you can use your phone wirelessly, 9 00:00:21,210 --> 00:00:23,584 how is it that you can use your laptop, and your desktop, 10 00:00:23,584 --> 00:00:27,250 and so many other devices all, somehow, on a network. 11 00:00:27,250 --> 00:00:31,140 Well let's consider what you yourself might have at home, or in your office, 12 00:00:31,140 --> 00:00:34,050 or at school, and let's assume for the sake of discussion 13 00:00:34,050 --> 00:00:35,580 that it's a home network. 14 00:00:35,580 --> 00:00:39,270 So over here is, of course, your home, and inside of that door 15 00:00:39,270 --> 00:00:42,340 some number of devices that actually get you on the internet. 16 00:00:42,340 --> 00:00:43,740 But what are those devices? 17 00:00:43,740 --> 00:00:46,710 Well odds are, inside of your home for instance, 18 00:00:46,710 --> 00:00:52,050 you have a device that might be called a cable modem, or a DSL modem, 19 00:00:52,050 --> 00:00:55,065 or a FiOS device these days, and that device 20 00:00:55,065 --> 00:00:57,690 is something you generally pay some number of dollars per month 21 00:00:57,690 --> 00:01:01,380 for because you're paying for an ISP, an internet service provider. 22 00:01:01,380 --> 00:01:05,920 So that device is somehow connected to the internet, 23 00:01:05,920 --> 00:01:09,060 which for now for our purposes right now we'll just draws a cloud, 24 00:01:09,060 --> 00:01:10,920 and that there is the internet. 25 00:01:10,920 --> 00:01:14,580 And that device comes from an internet service provider like Verizon, 26 00:01:14,580 --> 00:01:17,760 or Comcast, or any number of other providers, 27 00:01:17,760 --> 00:01:20,012 and somehow they themselves are on the internet. 28 00:01:20,012 --> 00:01:22,470 But how do we now get the rest of your home on the internet 29 00:01:22,470 --> 00:01:24,690 if all you have is just this one device? 30 00:01:24,690 --> 00:01:26,760 Well depending on how this device functions, 31 00:01:26,760 --> 00:01:28,500 it might just be all that you need. 32 00:01:28,500 --> 00:01:31,260 And wirelessly, somehow now, your phone and your laptop, 33 00:01:31,260 --> 00:01:33,210 and all of your other devices just work. 34 00:01:33,210 --> 00:01:35,490 Or, maybe you need a second device, that we 35 00:01:35,490 --> 00:01:39,960 might call home router, that somehow connected to that cable modem, 36 00:01:39,960 --> 00:01:43,680 or FiOS device, or the like, that in turn makes network 37 00:01:43,680 --> 00:01:45,475 connectivity possible in your own home. 38 00:01:45,475 --> 00:01:47,850 And maybe this little home router does a little bit more, 39 00:01:47,850 --> 00:01:49,683 and maybe it's got a couple of antennas that 40 00:01:49,683 --> 00:01:51,840 actually provide the Wi-Fi service. 41 00:01:51,840 --> 00:01:55,680 Meanwhile, maybe it also has some jacks or some physical ports in back 42 00:01:55,680 --> 00:01:57,450 into it you can plug cables so that if you 43 00:01:57,450 --> 00:02:00,360 have a wired device like a DVR, or an XBox, 44 00:02:00,360 --> 00:02:02,730 or something else that's not necessarily wireless, 45 00:02:02,730 --> 00:02:06,870 you have some place to plug those devices into as well. 46 00:02:06,870 --> 00:02:11,160 But this is so high level, and this sense this is so poorly drawn. 47 00:02:11,160 --> 00:02:13,650 What is actually going on underneath the hood, so to speak, 48 00:02:13,650 --> 00:02:18,570 and how is it that bits, zeros and ones, can transmit themselves from my house 49 00:02:18,570 --> 00:02:20,990 to everywhere else in the world and back. 50 00:02:20,990 --> 00:02:23,040 Well, let's take a closer look. 51 00:02:23,040 --> 00:02:26,500 Every computer on the internet, it turns out, 52 00:02:26,500 --> 00:02:29,730 has something that looks like this, so-called IP address, 53 00:02:29,730 --> 00:02:31,980 or internet protocol address, which really 54 00:02:31,980 --> 00:02:36,970 is just a number dot another number dot another number dot another number. 55 00:02:36,970 --> 00:02:40,050 So four numbers separated by dots, and each of those numbers 56 00:02:40,050 --> 00:02:43,540 is a value between zero and 255. 57 00:02:43,540 --> 00:02:46,800 So there's 256 total possibilities for each of those values. 58 00:02:46,800 --> 00:02:49,800 Now it turns out there's other types of IP addresses today 59 00:02:49,800 --> 00:02:53,560 that are actually much bigger than this, but more on that in a bit. 60 00:02:53,560 --> 00:02:57,120 So these IP addresses, much like our postal addresses, 61 00:02:57,120 --> 00:03:00,400 uniquely identify computers on the internet. 62 00:03:00,400 --> 00:03:02,400 So if you have a laptop, if you have a desktop, 63 00:03:02,400 --> 00:03:06,060 if you have a mobile phone, if you have an Xbox on the internet, that device, 64 00:03:06,060 --> 00:03:08,750 by definition of how the internet works, has an IP address. 65 00:03:08,750 --> 00:03:13,170 It has a unique address that allows other computers on the internet to talk 66 00:03:13,170 --> 00:03:18,780 to it, much like you might live at 123 Main Street in Anytown, USA, 67 00:03:18,780 --> 00:03:21,900 or the computer science building down the road at 33 Oxford Street, 68 00:03:21,900 --> 00:03:24,720 Cambridge, Massachusetts 02138, USA. 69 00:03:24,720 --> 00:03:29,370 These very specific phrases describe uniquely some building 70 00:03:29,370 --> 00:03:33,510 in the world, much like these numbers just fine uniquely 71 00:03:33,510 --> 00:03:35,869 some computer in the world. 72 00:03:35,869 --> 00:03:37,410 But where does this number come from? 73 00:03:37,410 --> 00:03:41,260 If I open up my laptop, or turn on my desktop, or take out my phone, 74 00:03:41,260 --> 00:03:45,030 how does any of those devices know what IP address to use? 75 00:03:45,030 --> 00:03:47,760 Because, it might have just been some time, 76 00:03:47,760 --> 00:03:52,080 but I don't remember ever having typed in a value like that into my phone, 77 00:03:52,080 --> 00:03:54,330 so it's got to be coming from somewhere else. 78 00:03:54,330 --> 00:03:55,195 But where? 79 00:03:55,195 --> 00:03:58,320 Well this is one of the things you get from your Internet Service Provider, 80 00:03:58,320 --> 00:03:59,460 or ISP. 81 00:03:59,460 --> 00:04:01,260 You get an IP address. 82 00:04:01,260 --> 00:04:03,540 And back in the day, not all that many years ago, 83 00:04:03,540 --> 00:04:05,130 there would actually be a technician that would probably 84 00:04:05,130 --> 00:04:07,230 come to your house, or your home, or business, 85 00:04:07,230 --> 00:04:11,400 and actually configure your computers to use this numeric address. 86 00:04:11,400 --> 00:04:13,920 But these days, software is a bit fancier. 87 00:04:13,920 --> 00:04:19,620 There's actually something called DHCP, Dynamic Host Configuration Protocol, 88 00:04:19,620 --> 00:04:24,330 which is software that ISPs, Internet Service Providers, run and really 89 00:04:24,330 --> 00:04:28,080 provide to you that allowed your Mac, or your PC, or your iPhone, 90 00:04:28,080 --> 00:04:31,320 or Android device to say upon turning on, hello world, 91 00:04:31,320 --> 00:04:32,760 I need a unique address. 92 00:04:32,760 --> 00:04:39,420 And that DHCP server responds to those open ended questions with a specific IP 93 00:04:39,420 --> 00:04:42,030 address that the internet service provider controls and has 94 00:04:42,030 --> 00:04:45,300 allocated specifically for your home. 95 00:04:45,300 --> 00:04:46,980 Well, that's all fine and good. 96 00:04:46,980 --> 00:04:50,880 But if my ISP is only providing me with one such address, 97 00:04:50,880 --> 00:04:53,340 how is it that I can have multiple devices at home 98 00:04:53,340 --> 00:04:54,950 on the internet at the same time? 99 00:04:54,950 --> 00:04:57,780 A whole family, indeed, could be on the internet simultaneously, 100 00:04:57,780 --> 00:05:01,830 and yet if that means four separate, or five, or more separate devices, 101 00:05:01,830 --> 00:05:07,100 gosh, that means that somehow each of those devices needs its own IP address. 102 00:05:07,100 --> 00:05:08,650 So where do those come from? 103 00:05:08,650 --> 00:05:13,650 Well those two come from DHCP, but not necessarily from your ISP, 104 00:05:13,650 --> 00:05:15,180 your Internet Service Provider. 105 00:05:15,180 --> 00:05:21,010 Those additional IP addresses come from a device in your very home, 106 00:05:21,010 --> 00:05:24,120 that home router to which I alluded earlier that's 107 00:05:24,120 --> 00:05:27,330 probably connected to your cable modem or your FiOS device. 108 00:05:27,330 --> 00:05:31,590 It's this home router that might have those little antennas that itself also 109 00:05:31,590 --> 00:05:32,555 supports DHCP. 110 00:05:32,555 --> 00:05:36,180 So when you turn on your laptop, turn on your desktop, power up your Xbox, 111 00:05:36,180 --> 00:05:38,160 or take out your phone, and those devices say, 112 00:05:38,160 --> 00:05:43,530 hello world, I need an IP address, odds are it's this device within your home 113 00:05:43,530 --> 00:05:48,207 that's answering that question, but it's providing other answers as well. 114 00:05:48,207 --> 00:05:50,040 It's not just giving you an IP address, it's 115 00:05:50,040 --> 00:05:54,180 also telling you how to communicate, it turns out, with the rest of the world. 116 00:05:54,180 --> 00:05:59,050 Because indeed, when I type an address into a browser, 117 00:05:59,050 --> 00:06:00,822 it's not numeric last time I checked. 118 00:06:00,822 --> 00:06:03,030 Indeed the last time I typed something into a browser 119 00:06:03,030 --> 00:06:05,529 was not something dot something dot something dot something, 120 00:06:05,529 --> 00:06:08,610 it was like Facebook.com, or Twitter.com, or Gmail.com 121 00:06:08,610 --> 00:06:11,910 or any number of other domain names. 122 00:06:11,910 --> 00:06:15,480 Because indeed, recall that most any web sites certainly these days 123 00:06:15,480 --> 00:06:18,130 that you'd visit has a domain name. 124 00:06:18,130 --> 00:06:21,090 It's something.com, or something.edu, or something 125 00:06:21,090 --> 00:06:25,080 dot any number of other Top Level Domains, or TLDs. 126 00:06:25,080 --> 00:06:29,080 So we humans are much better at remembering, I would think words, 127 00:06:29,080 --> 00:06:32,220 and/or phrases like dot come and dot edu, 128 00:06:32,220 --> 00:06:38,160 then we are arbitrary numeric addresses, like 1.2.3.4, or 5.6.7.8, 129 00:06:38,160 --> 00:06:41,460 or completely arbitrary numbers that aren't even so 130 00:06:41,460 --> 00:06:43,960 simple to remember as those. 131 00:06:43,960 --> 00:06:47,190 So how is it that when I type in Facebook.com or Google.com, 132 00:06:47,190 --> 00:06:52,260 my computer knows how to find that computer in the world, if in the world 133 00:06:52,260 --> 00:06:55,920 there are computers with just these IP addresses? 134 00:06:55,920 --> 00:06:56,770 135 00:06:56,770 --> 00:07:00,300 Well, it turns out that computers not only 136 00:07:00,300 --> 00:07:05,040 have IP addresses that they get from DHCP servers, they also have 137 00:07:05,040 --> 00:07:07,890 what are called DNS servers. 138 00:07:07,890 --> 00:07:13,090 And indeed, DHCP provides us with access to exactly that as well. 139 00:07:13,090 --> 00:07:17,400 So in addition to having a DHCP server somewhere out there 140 00:07:17,400 --> 00:07:22,410 in the world from your ISP or maybe even your home, you also have DNS servers. 141 00:07:22,410 --> 00:07:26,430 And DNS servers or Domain Name System servers, and their sole purpose in life 142 00:07:26,430 --> 00:07:30,180 really is to convert domain names like Facebook.com and Gmail.com 143 00:07:30,180 --> 00:07:33,780 to corresponding IP addresses. 144 00:07:33,780 --> 00:07:37,530 And these DNS servers, therefore, can help our computers talk 145 00:07:37,530 --> 00:07:40,320 to computers that, by definition, have IP addresses 146 00:07:40,320 --> 00:07:44,700 but that we humans would never know if someone didn't tell us. 147 00:07:44,700 --> 00:07:47,730 So there's already so many acronyms piling up here. 148 00:07:47,730 --> 00:07:50,890 Just to recap, every computer has an IP address. 149 00:07:50,890 --> 00:07:54,270 That IP address typically comes from a special server 150 00:07:54,270 --> 00:07:58,290 called the DHCP server, that lives within your ISP, Internet Service 151 00:07:58,290 --> 00:08:01,920 Provider, whoever that is, or maybe even within your own home, 152 00:08:01,920 --> 00:08:03,220 more on that in a bit. 153 00:08:03,220 --> 00:08:06,150 And meanwhile, there's also DNS servers in the world, 154 00:08:06,150 --> 00:08:12,270 also controlled by your ISP, that convert domain names to IP addresses 155 00:08:12,270 --> 00:08:15,780 so that when you actually try to go to Facebook.com your computer, 156 00:08:15,780 --> 00:08:21,990 Mac, PC, iPhone, Android, whatever, knows what the actual IP address is. 157 00:08:21,990 --> 00:08:22,920 So why is that? 158 00:08:22,920 --> 00:08:24,340 Why does that matter? 159 00:08:24,340 --> 00:08:27,980 Well turns out that the way computers intercommunicate on the internet 160 00:08:27,980 --> 00:08:32,700 is by sending packets to one another, or virtual envelopes or much 161 00:08:32,700 --> 00:08:36,260 like you might, or once much like you might have in the past 162 00:08:36,260 --> 00:08:40,200 sent someone a physical letter, a handwritten letter inside an envelope 163 00:08:40,200 --> 00:08:42,990 with an address on the front and probably even a stamp, 164 00:08:42,990 --> 00:08:46,650 so can computers communicate in very much the same way, 165 00:08:46,650 --> 00:08:47,700 but it's all digital. 166 00:08:47,700 --> 00:08:49,230 It's all zeros and ones. 167 00:08:49,230 --> 00:08:51,210 So what do these envelopes look like? 168 00:08:51,210 --> 00:08:52,742 What are these packets look like? 169 00:08:52,742 --> 00:08:54,450 Well, why don't we go ahead and construct 170 00:08:54,450 --> 00:08:57,550 something a little more physical? 171 00:08:57,550 --> 00:08:59,650 All right so I really like cats, and I want 172 00:08:59,650 --> 00:09:02,110 to find myself a cat on the internet. 173 00:09:02,110 --> 00:09:05,940 And so, I'm going to send a request to someone, a server, in fact. 174 00:09:05,940 --> 00:09:09,250 Maybe someone like Google, and I'm going to say literally 175 00:09:09,250 --> 00:09:16,550 get me a cat dot jpeg, where jpeg is a common file format for cats, 176 00:09:16,550 --> 00:09:19,050 so this is the message I want to send to some server. 177 00:09:19,050 --> 00:09:21,270 Of course it doesn't have any information on it, 178 00:09:21,270 --> 00:09:22,860 so who is actually going to feel this? 179 00:09:22,860 --> 00:09:25,200 Well I also have to go ahead and put it in an envelope, 180 00:09:25,200 --> 00:09:31,751 so I might go ahead and do this, put this message here in an envelope. 181 00:09:31,751 --> 00:09:34,250 Just a moment, I'll make the envelope and message disappear. 182 00:09:34,250 --> 00:09:38,140 No, we'll now go ahead and address the envelope to the destination. 183 00:09:38,140 --> 00:09:40,380 So as a destination on the internet, this server 184 00:09:40,380 --> 00:09:43,380 is going to have its own IP address, and little old me 185 00:09:43,380 --> 00:09:46,830 as a computer on the internet laptop, desktop, phone, or whatnot, 186 00:09:46,830 --> 00:09:48,710 I too am going to have an IP address. 187 00:09:48,710 --> 00:09:50,418 And so, what I'm going to go ahead and do 188 00:09:50,418 --> 00:09:55,140 is put my IP address in the top left corner-- 189 00:09:55,140 --> 00:09:57,210 doesn't really matters since this is imaginary-- 190 00:09:57,210 --> 00:10:01,170 and my IP address shall be 1.2.3.4 just for the sake of discussion. 191 00:10:01,170 --> 00:10:05,880 The server, meanwhile, I don't know what the IP address of the server is. 192 00:10:05,880 --> 00:10:10,830 I know my own IP address because that came from my ISP's DHCP server, 193 00:10:10,830 --> 00:10:14,220 but the other server's address, unless they really know Google's IP address, 194 00:10:14,220 --> 00:10:15,660 I wouldn't know it myself. 195 00:10:15,660 --> 00:10:18,690 So I'm going to have to rely on DNS. 196 00:10:18,690 --> 00:10:23,530 So I, as a computer, would actually send a request to my ISP's DNS server, 197 00:10:23,530 --> 00:10:26,833 saying, hey, DNS server, what is the IP address of Google.com. 198 00:10:26,833 --> 00:10:32,250 Hopefully, my ISP knows, and a response will come back, and maybe it's 5.6.7.8, 199 00:10:32,250 --> 00:10:37,230 and so I'm going to go ahead and write 5.6.7.8. 200 00:10:37,230 --> 00:10:40,890 And frankly, if my ISP doesn't know-- which is unlikely these days just given 201 00:10:40,890 --> 00:10:44,070 how popular Google is, but smaller web sites might not be as well known 202 00:10:44,070 --> 00:10:45,090 to an ISP-- 203 00:10:45,090 --> 00:10:50,340 well, my ISP is going to be configured by the owners of the ISP 204 00:10:50,340 --> 00:10:52,860 to know about some other DNS server in the world. 205 00:10:52,860 --> 00:10:55,450 And so, they will simply escalate it to another DNS server, 206 00:10:55,450 --> 00:10:57,908 and maybe that DNS server will escalate it to someone else. 207 00:10:57,908 --> 00:11:01,810 And thankfully, by nature of how the domain name system works, 208 00:11:01,810 --> 00:11:05,140 there's going to be some number of root servers, special servers, that 209 00:11:05,140 --> 00:11:08,670 in the worst case, at least know, who else knows, 210 00:11:08,670 --> 00:11:12,030 what the IPs are of all of the dot coms, or all of dot edus, 211 00:11:12,030 --> 00:11:15,030 or all of the something other top level domain. 212 00:11:15,030 --> 00:11:18,744 So there's this recursive system, this tiered system of questions, 213 00:11:18,744 --> 00:11:21,660 that can be asked for that finally someone knows, and then my own Mac, 214 00:11:21,660 --> 00:11:23,940 or PC, or phone, can remember it. 215 00:11:23,940 --> 00:11:30,450 So this message is going to go 2.5.6.7.8, which I'm presuming 216 00:11:30,450 --> 00:11:35,970 is the IP address of Google.com as per the response from my ISP's DNS server, 217 00:11:35,970 --> 00:11:40,740 and it's going to be from little old me at IP address 1.2.3.4. 218 00:11:40,740 --> 00:11:45,780 So I'm going to go ahead and seal this, all right, 219 00:11:45,780 --> 00:11:49,140 and I'm going to hand it off on the internet. 220 00:11:49,140 --> 00:11:50,430 Now where does it go? 221 00:11:50,430 --> 00:11:52,060 More on that in just a moment. 222 00:11:52,060 --> 00:11:54,990 But some number of seconds, or hopefully some number of milliseconds 223 00:11:54,990 --> 00:11:57,720 later, I'm going to get back a response, and indeed I'm 224 00:11:57,720 --> 00:12:01,251 going to get back, of course, a cat, this here happy cat. 225 00:12:01,251 --> 00:12:03,000 But it's not going to be as simple as just 226 00:12:03,000 --> 00:12:05,790 being handed a cat off the internet. 227 00:12:05,790 --> 00:12:10,050 This cat too, meanwhile, is going to be in one or more envelopes. 228 00:12:10,050 --> 00:12:15,520 That is to say Google's own server is going to put this cat into an envelope. 229 00:12:15,520 --> 00:12:19,290 But maybe, Google when trying to do that, oh, maybe it doesn't quite fit. 230 00:12:19,290 --> 00:12:22,710 And frankly, maybe this image is so big that it would just 231 00:12:22,710 --> 00:12:27,240 be rude to other customers to cram this whole big image of a cat 232 00:12:27,240 --> 00:12:31,006 into just one envelope, thereby blocking other customers' data from potentially 233 00:12:31,006 --> 00:12:32,130 getting to them as quickly. 234 00:12:32,130 --> 00:12:35,940 And so, what Google might actually do, and this is very common, 235 00:12:35,940 --> 00:12:41,130 is divide the cat into fragments. 236 00:12:41,130 --> 00:12:43,310 So hang in there little guy. 237 00:12:43,310 --> 00:12:49,200 But we might chop up this larger image into four or so smaller fragments, 238 00:12:49,200 --> 00:12:51,300 so that now these are much more reasonably sized, 239 00:12:51,300 --> 00:12:55,350 and what Google can do is put one of these into one envelope, 240 00:12:55,350 --> 00:13:00,350 can put another of these into another envelope, and then of course 241 00:13:00,350 --> 00:13:05,350 if there's four fragments in total, we can put like a third in this envelope, 242 00:13:05,350 --> 00:13:09,360 and then we can go ahead and put the fourth in a fourth and final envelope. 243 00:13:09,360 --> 00:13:12,210 Now of course, I'm going to have to write some information on each 244 00:13:12,210 --> 00:13:13,860 of these four envelopes. 245 00:13:13,860 --> 00:13:15,930 So what goes on the outside here? 246 00:13:15,930 --> 00:13:22,470 Well previously, my IP address was 1.2.3.4, and Google's was 5.6.7.8. 247 00:13:22,470 --> 00:13:26,365 If they're responding to my original request with this response, 248 00:13:26,365 --> 00:13:29,490 those numbers are going to have to be reversed so that this packet is going 249 00:13:29,490 --> 00:13:35,130 to be coming from Google at 5.6.7.8, and it's 250 00:13:35,130 --> 00:13:40,260 going to be going to me, which is 1.2.3.4. 251 00:13:40,260 --> 00:13:42,780 And they're going to go ahead and put that same information 252 00:13:42,780 --> 00:13:48,690 on every one of these envelopes. 253 00:13:48,690 --> 00:13:50,940 But that's not quite enough, it turns out. 254 00:13:50,940 --> 00:13:56,577 It's not quite enough for them to just put my address on these envelopes, 255 00:13:56,577 --> 00:13:58,160 because there's four of these packets. 256 00:13:58,160 --> 00:14:00,380 And so, you know what, they're going to have to provide another clue. 257 00:14:00,380 --> 00:14:02,050 They're going to have to tell me how many total packets there 258 00:14:02,050 --> 00:14:03,140 are in the response. 259 00:14:03,140 --> 00:14:08,440 So I'm going to put one of four, and this one will be two of four, 260 00:14:08,440 --> 00:14:13,480 this one will be three of four, and this of course will be four of four. 261 00:14:13,480 --> 00:14:15,970 So what Google has put on each of their envelopes 262 00:14:15,970 --> 00:14:17,780 now looks a little something like this. 263 00:14:17,780 --> 00:14:25,000 To 1.2.3.4, which is me, from them, it's 5.6.7.8, and per this mark 264 00:14:25,000 --> 00:14:28,450 down here, this is packet number one of four. 265 00:14:28,450 --> 00:14:32,530 So this is to say that IP goes beyond addresses. 266 00:14:32,530 --> 00:14:35,560 IP, Internet Protocol, is really a set of conventions. 267 00:14:35,560 --> 00:14:38,710 It's a set of rules that computers and servers are supposed to follow, 268 00:14:38,710 --> 00:14:42,280 so that when they enter communicate, one knows what to expect from the other, 269 00:14:42,280 --> 00:14:45,140 and the other knows how to respond to the first. 270 00:14:45,140 --> 00:14:49,420 And so, this support for fragmentation is also part of this feature of IP. 271 00:14:49,420 --> 00:14:51,730 Now what is the benefit of this? 272 00:14:51,730 --> 00:14:55,270 Well this way, if I now get as little old me 273 00:14:55,270 --> 00:14:58,200 off the internet, packet two of four-- 274 00:14:58,200 --> 00:15:01,460 it's a little strange that it's out of order-- packet three of four, 275 00:15:01,460 --> 00:15:06,690 and packet four of four, but I don't seem to have actually received 276 00:15:06,690 --> 00:15:07,900 packet one of four. 277 00:15:07,900 --> 00:15:12,340 I can logically infer from the packets I did get which of them I'm missing. 278 00:15:12,340 --> 00:15:14,950 But IP, Internet Protocol, alone says nothing 279 00:15:14,950 --> 00:15:17,870 about what I should do as a computer in that situation. 280 00:15:17,870 --> 00:15:23,560 So it turns out that computers actually use not just IP, Internet Protocol, 281 00:15:23,560 --> 00:15:26,931 but another protocol, another standard called TCP. 282 00:15:26,931 --> 00:15:28,930 And in fact, these are so commonly used together 283 00:15:28,930 --> 00:15:33,010 that you might have heard or read at some point of something called TCP/IP, 284 00:15:33,010 --> 00:15:38,410 or TCP slash IP, which is just Transmission Control Protocol slash 285 00:15:38,410 --> 00:15:43,330 Internet Protocol, which just refers to the combination of these two protocols 286 00:15:43,330 --> 00:15:45,280 in order to transmit data on the internet. 287 00:15:45,280 --> 00:15:49,990 Now among the roles that IP plays is to support addressing, and fragmentation, 288 00:15:49,990 --> 00:15:51,620 and a bunch of other things too. 289 00:15:51,620 --> 00:15:57,490 And among the roles that TCP plays is to ensure that packets 290 00:15:57,490 --> 00:15:59,870 can get to their destination. 291 00:15:59,870 --> 00:16:03,400 And in fact, TCP support something called sequence numbers in addition 292 00:16:03,400 --> 00:16:05,290 to any fragment identifiers that also allows 293 00:16:05,290 --> 00:16:09,530 to ensure that data gets to its intended destination. 294 00:16:09,530 --> 00:16:12,520 And so upon receiving just three of these packets, 295 00:16:12,520 --> 00:16:16,300 clearly missing fourth, what I, a computer, can do is say, hey Google, 296 00:16:16,300 --> 00:16:20,091 I need you to send one or more packets because I know I'm missing them, 297 00:16:20,091 --> 00:16:22,090 because they haven't been properly acknowledged. 298 00:16:22,090 --> 00:16:26,920 And so, oh, thankfully, Google has retransmitted to me this packet. 299 00:16:26,920 --> 00:16:31,750 And so now, I have all four, and I can, of course, on my end, 300 00:16:31,750 --> 00:16:35,830 reassemble albeit with some virtual tape, the cat 301 00:16:35,830 --> 00:16:41,350 in its final form, which is going to look like-- 302 00:16:41,350 --> 00:16:48,200 if all of the packets indeed came through the cat in question. 303 00:16:48,200 --> 00:16:51,260 And because of course, these are all just bits, all just zeros and ones. 304 00:16:51,260 --> 00:16:53,134 They can certainly be stitched back together, 305 00:16:53,134 --> 00:16:56,540 so that we never actually know that the splitting happened. 306 00:16:56,540 --> 00:16:59,360 So, turns out TCP does something a little more. 307 00:16:59,360 --> 00:17:04,369 Because what if my original request to Google 308 00:17:04,369 --> 00:17:06,589 went to a server that does multiple things? 309 00:17:06,589 --> 00:17:08,048 Like Google is obviously a website. 310 00:17:08,048 --> 00:17:10,672 They have search results, they have email, they have calendars, 311 00:17:10,672 --> 00:17:11,599 and so much more. 312 00:17:11,599 --> 00:17:13,640 But they also have email servers, right? 313 00:17:13,640 --> 00:17:16,400 Gmail itself, not to mention their own employees' e-mails. 314 00:17:16,400 --> 00:17:19,460 And they probably have chat servers, or video conferencing servers, 315 00:17:19,460 --> 00:17:20,930 like Google Hangouts and the like. 316 00:17:20,930 --> 00:17:25,339 So when I originally sent a packet to Google.com, 317 00:17:25,339 --> 00:17:29,390 it probably needed a little more information than I gave it. 318 00:17:29,390 --> 00:17:32,750 It probably wasn't sufficient for that original message for me, 319 00:17:32,750 --> 00:17:40,640 get cat.jpeg, to contain only Google's IP address, which again was 5.6.7.8, 320 00:17:40,640 --> 00:17:45,500 and my own from address, which was again 1.2.3.4. 321 00:17:45,500 --> 00:17:48,950 I, just for thoroughness, could on this envelope say one of one, 322 00:17:48,950 --> 00:17:53,510 because it's a pretty small request to just say get cat.jpeg, 323 00:17:53,510 --> 00:17:56,360 but I probably need a bit more information to make clear to Google 324 00:17:56,360 --> 00:18:00,800 that this is a request for a web page, not a request for an email, 325 00:18:00,800 --> 00:18:04,850 or not a chat message, or not certainly a video stream from me. 326 00:18:04,850 --> 00:18:07,460 And so I'm going to actually append one piece of information. 327 00:18:07,460 --> 00:18:10,580 I'm going to put literally a colon after Google's IP address, 328 00:18:10,580 --> 00:18:14,840 and I'm going to go ahead and say 80, the number 80. 329 00:18:14,840 --> 00:18:19,280 So it turns out that per TCP, the world has standardized 330 00:18:19,280 --> 00:18:21,950 on certain numbers that represent different services, 331 00:18:21,950 --> 00:18:23,510 that servers might provide. 332 00:18:23,510 --> 00:18:27,114 80 means HTTP, Hypertext Transfer Protocol, 333 00:18:27,114 --> 00:18:29,280 and that's just the language that web servers speak, 334 00:18:29,280 --> 00:18:32,279 and it's the language that I've been speaking inside of these envelopes. 335 00:18:32,279 --> 00:18:35,120 So that little message I wrote a moment ago, 336 00:18:35,120 --> 00:18:37,790 get cat.jpeg, that was an HTTP message. 337 00:18:37,790 --> 00:18:40,900 And this cat that came back in several parts, that together 338 00:18:40,900 --> 00:18:42,800 was an HTTP response. 339 00:18:42,800 --> 00:18:45,920 And so by clarifying on the envelope, this message 340 00:18:45,920 --> 00:18:48,110 is meant specifically for port 80. 341 00:18:48,110 --> 00:18:52,610 That is the service, known as HTTP, Google's physical servers know 342 00:18:52,610 --> 00:18:56,870 we should hand this packet and any others to our web server, 343 00:18:56,870 --> 00:19:00,787 not to our email server, or chat server, or video server, or the like. 344 00:19:00,787 --> 00:19:02,120 And it might not actually be 80. 345 00:19:02,120 --> 00:19:04,880 In fact, odds are these days Google, like many websites, 346 00:19:04,880 --> 00:19:09,200 is using SSL, or HTTPS, a secure connection, 347 00:19:09,200 --> 00:19:11,930 and that actually happens to use a different number than 80, 348 00:19:11,930 --> 00:19:13,385 technically 443. 349 00:19:13,385 --> 00:19:15,260 You don't tend to see either of these numbers 350 00:19:15,260 --> 00:19:18,706 because they're just assumed to be the default in modern web browsers, 351 00:19:18,706 --> 00:19:20,330 but they are there underneath the hood. 352 00:19:20,330 --> 00:19:22,460 They are there on the virtual envelopes. 353 00:19:22,460 --> 00:19:23,960 Turns out there's other numbers too. 354 00:19:23,960 --> 00:19:29,000 E-mail tends to use 25, TCP port 25 and a few others, 355 00:19:29,000 --> 00:19:32,060 FTP, File Transfer Protocol, and many other protocols all 356 00:19:32,060 --> 00:19:36,770 have their own numeric port identifiers, and indeed that's all this number is. 357 00:19:36,770 --> 00:19:41,000 Whether it's 80, 443, or something else, it's a so-called port number. 358 00:19:41,000 --> 00:19:43,370 So this then is a more representative picture 359 00:19:43,370 --> 00:19:47,210 of what it is that's going across the internet and coming back to me. 360 00:19:47,210 --> 00:19:49,250 This is more of the information, though not all 361 00:19:49,250 --> 00:19:54,380 of it that's going back and forth across the wires, or wirelessly. 362 00:19:54,380 --> 00:19:57,430 So these things, protocols, IP is Internet Protocol, 363 00:19:57,430 --> 00:19:59,930 TCP is Transmission Control Protocol. 364 00:19:59,930 --> 00:20:01,152 What is a protocol? 365 00:20:01,152 --> 00:20:03,860 Well again, it's just kind of a set of standards, a set of rules. 366 00:20:03,860 --> 00:20:06,500 And in fact, we humans have protocols. 367 00:20:06,500 --> 00:20:09,530 And some of them, if you stop to think about it, are a little silly. 368 00:20:09,530 --> 00:20:13,910 Like in a lot of cultures, when you meet some other human for the first time, 369 00:20:13,910 --> 00:20:16,700 you do something kind of weird and you extend your a hand 370 00:20:16,700 --> 00:20:21,180 to shake that person's hand, and then you just 371 00:20:21,180 --> 00:20:25,200 do this down thing for like a second or two, sometimes longer awkwardly, 372 00:20:25,200 --> 00:20:27,840 and that somehow completes the transaction. 373 00:20:27,840 --> 00:20:30,720 Well that's actually what's going on with computers. 374 00:20:30,720 --> 00:20:35,700 When I send that message originally, get cat.jpeg, Google 375 00:20:35,700 --> 00:20:39,265 according to the HTTP protocol, Hypertext Transfer Protocol, 376 00:20:39,265 --> 00:20:41,140 it's going to read that message, and realize, 377 00:20:41,140 --> 00:20:45,780 oh this user wants a picture of a cat, let's search for that file, and let's 378 00:20:45,780 --> 00:20:48,285 actually return cat.jpeg. 379 00:20:48,285 --> 00:20:50,160 And I'm simplifying the format of the message 380 00:20:50,160 --> 00:20:52,000 because when you're actually searching for results, 381 00:20:52,000 --> 00:20:54,690 the message actually looks a little more complicated than that. 382 00:20:54,690 --> 00:20:57,773 But we're assuming we're just getting a very specific cat from the server. 383 00:20:57,773 --> 00:21:00,722 And according to HTTP, Google's web server, 384 00:21:00,722 --> 00:21:03,180 because it supports that protocol, it speaks that protocol, 385 00:21:03,180 --> 00:21:07,230 it speaks human just like I and my colleagues do, 386 00:21:07,230 --> 00:21:11,070 it knows to respond with one or more envelopes of its own 387 00:21:11,070 --> 00:21:12,410 containing that cat. 388 00:21:12,410 --> 00:21:14,160 But there's even more protocols than this. 389 00:21:14,160 --> 00:21:18,990 There's a UDP, which you don't use quite as often, but actually has value. 390 00:21:18,990 --> 00:21:22,830 And the biggest difference between UDP and TCP 391 00:21:22,830 --> 00:21:27,630 is that UDP does not guarantee delivery, and we're guaranteed delivery 392 00:21:27,630 --> 00:21:30,120 so long as the internet is actually up and running 393 00:21:30,120 --> 00:21:32,010 between you and some endpoint. 394 00:21:32,010 --> 00:21:34,840 Why does TCP then guarantee delivery? 395 00:21:34,840 --> 00:21:38,790 Well, it knows how to respond packets as needed, UDP by definition 396 00:21:38,790 --> 00:21:39,720 does not do that. 397 00:21:39,720 --> 00:21:41,400 That is just not a feature you get. 398 00:21:41,400 --> 00:21:43,810 You can still use it with IP to get data somewhere, 399 00:21:43,810 --> 00:21:47,292 but it's not necessarily going to come back what you request. 400 00:21:47,292 --> 00:21:51,560 So why would you ever want to send a request, and maybe or maybe not 401 00:21:51,560 --> 00:21:53,410 get a response? 402 00:21:53,410 --> 00:21:55,230 Well sometimes, this is useful. 403 00:21:55,230 --> 00:22:00,030 Like if-- video conferencing-- if you've ever used FaceTime, or Google Hangouts, 404 00:22:00,030 --> 00:22:03,370 or Skype, you sometimes see things buffering. 405 00:22:03,370 --> 00:22:06,810 But if while you're trying to talk to some other human in real time 406 00:22:06,810 --> 00:22:10,200 so to speak, if the video kept buffering, and kept buffering, 407 00:22:10,200 --> 00:22:13,470 and kept buffering, and prevented you from seeing that person, 408 00:22:13,470 --> 00:22:16,380 or hearing them in real time, frankly it would get pretty annoying 409 00:22:16,380 --> 00:22:18,296 pretty quickly and you just take to your phone 410 00:22:18,296 --> 00:22:20,370 or take a phone off the wall, an old landline, 411 00:22:20,370 --> 00:22:24,870 and make a call which is much more synchronous, much more real time. 412 00:22:24,870 --> 00:22:26,460 But movies of course do this. 413 00:22:26,460 --> 00:22:29,299 If you're watching Apple TV, or Netflix, or iTunes, or something, 414 00:22:29,299 --> 00:22:31,590 those videos do tend to buffer because you don't really 415 00:22:31,590 --> 00:22:33,660 want to miss a few seconds of, or a minute, 416 00:22:33,660 --> 00:22:36,270 of a movie or some climactic ending. 417 00:22:36,270 --> 00:22:38,310 But in real time when talking to another human, 418 00:22:38,310 --> 00:22:43,350 it's not really ideal to just delay the conversation while someone else is 419 00:22:43,350 --> 00:22:45,030 there on the other end of the line. 420 00:22:45,030 --> 00:22:47,367 And because there's so many packets going back and forth 421 00:22:47,367 --> 00:22:49,200 for things like video conferencing, you know 422 00:22:49,200 --> 00:22:52,590 what, if you drop a few, literally, like if some of those packets 423 00:22:52,590 --> 00:22:57,050 just kind of get lost, don't worry about it I will infer from context, 424 00:22:57,050 --> 00:22:59,940 I'll infer from the conversation I'm having what it is I missed 425 00:22:59,940 --> 00:23:01,087 and we'll just forge ahead. 426 00:23:01,087 --> 00:23:03,420 Or you know what, I'm just going to say hey, hey, buddy, 427 00:23:03,420 --> 00:23:07,520 what is it you said, can you repeat that, and he or she can simply oblige. 428 00:23:07,520 --> 00:23:10,592 So sometimes, when you want the data they keep coming, and keep 429 00:23:10,592 --> 00:23:12,300 coming, especially when it's high volume, 430 00:23:12,300 --> 00:23:14,091 you don't want to stop and resend data, you 431 00:23:14,091 --> 00:23:17,810 want to just ignore it and trust that the users are going to be OK with that. 432 00:23:17,810 --> 00:23:19,560 And for live video conferencing that might 433 00:23:19,560 --> 00:23:21,437 make sense, for live sporting events that 434 00:23:21,437 --> 00:23:24,520 might make sense so that you're not drifting behind the rest of the world. 435 00:23:24,520 --> 00:23:28,380 So some applications that actually does make good sense. 436 00:23:28,380 --> 00:23:32,160 But where do these packets keep going as they leave my hand, 437 00:23:32,160 --> 00:23:35,610 and where are they coming from when they land in my hand? 438 00:23:35,610 --> 00:23:41,100 Well there's a whole internet out there that uses TCP or UDP, and uses IP, 439 00:23:41,100 --> 00:23:44,070 but there's a lot of devices between me and Google, me and anyone else 440 00:23:44,070 --> 00:23:48,837 in the world, that somehow routes that data left, right, top, bottom. 441 00:23:48,837 --> 00:23:49,920 So how does all that work? 442 00:23:49,920 --> 00:23:52,830 443 00:23:52,830 --> 00:23:55,650 So we know then that my computer has an IP address, 444 00:23:55,650 --> 00:23:57,950 and we know that it's of this format. 445 00:23:57,950 --> 00:24:01,160 And this format, again, is just a number dot a number, dot a number, 446 00:24:01,160 --> 00:24:04,432 dot a number, and each of those numbers is between zero and 255. 447 00:24:04,432 --> 00:24:06,390 And we dive in a little deeper, if you remember 448 00:24:06,390 --> 00:24:11,184 your binary, that actually means that each of those numbers is 8 bits. 449 00:24:11,184 --> 00:24:13,350 So that's eight, plus eight, plus eight, plus eight. 450 00:24:13,350 --> 00:24:16,440 So that's 32 bits, and-- hang in there-- 451 00:24:16,440 --> 00:24:18,630 that means there's two to the 32. 452 00:24:18,630 --> 00:24:21,840 That's four billion possible IP addresses. 453 00:24:21,840 --> 00:24:23,760 But I mentioned a bit ago that there's also 454 00:24:23,760 --> 00:24:26,340 a longer formed format because the world, it turns out, 455 00:24:26,340 --> 00:24:27,810 is running out of IP addresses. 456 00:24:27,810 --> 00:24:30,450 Even though there's as many as four billion possible, 457 00:24:30,450 --> 00:24:33,720 there are so many phones, and people, and laptops, and servers, 458 00:24:33,720 --> 00:24:37,230 and an internet of things, IoT devices these days, all of which 459 00:24:37,230 --> 00:24:40,840 need an IP address that frankly, we've been running out for some time. 460 00:24:40,840 --> 00:24:45,930 And so instead of using this format moving forward, IP Version 4, or v4, 461 00:24:45,930 --> 00:24:49,350 the world is gradually starting to use IPv6, 462 00:24:49,350 --> 00:24:54,820 which actually uses 128-bit addresses which are much, much larger. 463 00:24:54,820 --> 00:24:58,890 If you were to actually multiply this out, if you have two to the 32, 464 00:24:58,890 --> 00:25:02,290 that's roughly four billion possible IP addresses. 465 00:25:02,290 --> 00:25:08,070 But if you use not a 32-bit IP address, but a 128-bit IP address, 466 00:25:08,070 --> 00:25:12,120 it doesn't sound like that much bigger of a number, but this is exponents, 467 00:25:12,120 --> 00:25:13,170 not just multiplication. 468 00:25:13,170 --> 00:25:15,870 And so, that is how many IP addresses. 469 00:25:15,870 --> 00:25:19,410 I can't even pronounce that but the world is now going to have access to. 470 00:25:19,410 --> 00:25:22,326 So with that said, where can you see this kind of information? 471 00:25:22,326 --> 00:25:24,450 Well turns out that if you have a Mac for instance, 472 00:25:24,450 --> 00:25:27,120 you could to go to System Preferences and then Network, 473 00:25:27,120 --> 00:25:29,760 and then poke around, hopefully without changing anything, 474 00:25:29,760 --> 00:25:33,900 and you'll see something like this, that you'll see a mention of IPv4, 475 00:25:33,900 --> 00:25:37,140 and you'll actually see a mention of this protocol using DHCP 476 00:25:37,140 --> 00:25:41,310 unless for some reason it's been statically hardcoded or configured 477 00:25:41,310 --> 00:25:42,730 by perhaps someone else. 478 00:25:42,730 --> 00:25:45,063 And you'll see that at the moment the screenshot suggest 479 00:25:45,063 --> 00:25:50,250 that I'm connected with IP address 10.0.1.34 480 00:25:50,250 --> 00:25:53,340 and actually, as it turns out, there's a lot of IP addresses 481 00:25:53,340 --> 00:25:55,680 that are actually private. 482 00:25:55,680 --> 00:26:00,750 And so, if you have an address that starts with 10 dot something, 483 00:26:00,750 --> 00:26:10,620 or an address that starts with 192.168 dot something, or 172.16 dot something, 484 00:26:10,620 --> 00:26:13,770 turns out your computer is using a private IP address that 485 00:26:13,770 --> 00:26:18,390 most likely came from a home router, or a business router, or maybe even 486 00:26:18,390 --> 00:26:22,140 your ISP, but it's private in the sense that only with special configuration 487 00:26:22,140 --> 00:26:24,000 can someone talk to your computer. 488 00:26:24,000 --> 00:26:27,609 And this is OK, because generally our phones and our Xboxes, 489 00:26:27,609 --> 00:26:29,400 and our laptops, and desktops in our homes, 490 00:26:29,400 --> 00:26:32,970 and generally in our businesses, and schools themselves are not servers. 491 00:26:32,970 --> 00:26:36,170 People are not trying to contact us directly per se, 492 00:26:36,170 --> 00:26:37,982 we are trying to contact them. 493 00:26:37,982 --> 00:26:39,690 And even when someone sends you an email, 494 00:26:39,690 --> 00:26:43,215 it doesn't go to your own laptop or desktop per se, 495 00:26:43,215 --> 00:26:47,310 it generally goes to a server like Gmail, or Outlook, or the like, 496 00:26:47,310 --> 00:26:51,000 and your phone or laptop or desktop connects to that server 497 00:26:51,000 --> 00:26:52,650 in order to get the information. 498 00:26:52,650 --> 00:26:55,654 If now on Mac OS, you happened to click on Advanced here, 499 00:26:55,654 --> 00:26:57,570 you'll see some additional settings and you'll 500 00:26:57,570 --> 00:27:01,830 see that my IP address is again 10.0.1.34 in this case, 501 00:27:01,830 --> 00:27:04,620 you'll see a subnet mask which is used to decide whether or not 502 00:27:04,620 --> 00:27:06,930 some other computer is on the same network as you, 503 00:27:06,930 --> 00:27:11,850 and then most importantly, you'll see router, sometimes called gateway. 504 00:27:11,850 --> 00:27:15,090 And in this case, it seems that my gateway has an address, 505 00:27:15,090 --> 00:27:17,620 or my router has an address of 10.0.1.1. 506 00:27:17,620 --> 00:27:19,920 So that too of course is an IP address. 507 00:27:19,920 --> 00:27:23,580 And a router, as the name suggests, is responsible for doing 508 00:27:23,580 --> 00:27:26,680 this kind of thing, routing data in some direction. 509 00:27:26,680 --> 00:27:29,100 And if you run Windows, here's what a similar screen might 510 00:27:29,100 --> 00:27:33,190 look like on that operating system which shows, of course, your IPv4 address, 511 00:27:33,190 --> 00:27:37,090 and in this case, multiple addresses for DNS servers. 512 00:27:37,090 --> 00:27:39,510 Router's purpose in life is to be computers 513 00:27:39,510 --> 00:27:43,110 on the internet that have bunches of wires usually coming into them 514 00:27:43,110 --> 00:27:45,450 and going out of them, and they have essentially 515 00:27:45,450 --> 00:27:49,050 kind of a table, like a big list, like an Excel spreadsheet, 516 00:27:49,050 --> 00:27:52,620 inside of themselves like inside the RAM, Random Access Memory. 517 00:27:52,620 --> 00:27:56,490 And that table, generally has at least like two columns, conceptually. 518 00:27:56,490 --> 00:27:59,430 One of which has an IP address or a prefix, 519 00:27:59,430 --> 00:28:03,000 the first few numbers of an IP address, and then some explanation 520 00:28:03,000 --> 00:28:06,510 of where data should be routed to if it's destined 521 00:28:06,510 --> 00:28:08,330 for that IP address or that prefix. 522 00:28:08,330 --> 00:28:10,080 So maybe if an IP address starts with one, 523 00:28:10,080 --> 00:28:12,060 it should go that way out that cable. 524 00:28:12,060 --> 00:28:14,940 Or if it starts with two, it should go that way instead. 525 00:28:14,940 --> 00:28:18,210 Routers' purpose in life is to route data in some direction 526 00:28:18,210 --> 00:28:22,600 to some next hop, or that is to say to some next router. 527 00:28:22,600 --> 00:28:28,320 And so this means that this Mac here with IP address 10.0.1.34 528 00:28:28,320 --> 00:28:30,540 is preconfigured by DHCP-- 529 00:28:30,540 --> 00:28:34,650 which again, came from my ISP, or from my university, or company-- 530 00:28:34,650 --> 00:28:37,560 is going to go to either local computers on the internet 531 00:28:37,560 --> 00:28:40,170 if I happen to be talking to another Mac or PC 532 00:28:40,170 --> 00:28:43,140 maybe to transfer file just a few feet or somewhere else 533 00:28:43,140 --> 00:28:45,030 on campus or in the office. 534 00:28:45,030 --> 00:28:48,280 But if it's destined for somewhere in the outside world like Google.com, 535 00:28:48,280 --> 00:28:51,300 well that's where the router comes in, because routers purpose in life 536 00:28:51,300 --> 00:28:54,680 is to get data toward another destination. 537 00:28:54,680 --> 00:28:59,930 And my little old laptop frankly doesn't know where in the world Google.com is, 538 00:28:59,930 --> 00:29:02,930 but maybe this router does because that's its purpose in life. 539 00:29:02,930 --> 00:29:06,720 And frankly, if that router doesn't know, no big deal. 540 00:29:06,720 --> 00:29:08,240 There's other routers in the world. 541 00:29:08,240 --> 00:29:11,900 And so long as that router can route data to some other server, 542 00:29:11,900 --> 00:29:16,220 well then hopefully that other router can get data closer to its destination. 543 00:29:16,220 --> 00:29:20,290 And hopefully indeed, within some number of hops, some number of steps, 544 00:29:20,290 --> 00:29:23,190 transmissions of packets from one router to another to another, 545 00:29:23,190 --> 00:29:24,690 the data will reach its destination. 546 00:29:24,690 --> 00:29:28,400 And frankly, generally speaking, data will reach its destination 547 00:29:28,400 --> 00:29:31,460 within 30 or fewer such hops. 548 00:29:31,460 --> 00:29:34,760 There will be 30 or fewer routers between me and some destination 549 00:29:34,760 --> 00:29:38,390 because humans and software have gotten really good at configuring 550 00:29:38,390 --> 00:29:42,860 the internet dynamically, so that data can route across continents, 551 00:29:42,860 --> 00:29:46,920 across countries, across oceans even, in order to get from one place to another. 552 00:29:46,920 --> 00:29:51,180 So if this then is little old me on my laptop here, 553 00:29:51,180 --> 00:29:55,850 and I want to talk to Google.com which of course is a big company over here, 554 00:29:55,850 --> 00:29:59,840 inside of whose door is a whole bunch of servers, well between us 555 00:29:59,840 --> 00:30:06,080 is the internet, and somehow we're both connected, 556 00:30:06,080 --> 00:30:10,820 and somehow or other data is going across the internet from me to Google. 557 00:30:10,820 --> 00:30:13,850 And that's because inside of this internet, 558 00:30:13,850 --> 00:30:16,880 there's a whole bunch of routers which I'll draw here as dots, 559 00:30:16,880 --> 00:30:20,630 and each of these routers is controlled by other big internet service 560 00:30:20,630 --> 00:30:23,420 providers, big companies, maybe even big universities, 561 00:30:23,420 --> 00:30:26,432 and they all have agreed to connect their routers. 562 00:30:26,432 --> 00:30:27,890 That's indeed what the internet is. 563 00:30:27,890 --> 00:30:29,580 It's a network of networks. 564 00:30:29,580 --> 00:30:32,900 So it's a network of Harvard and MIT's network, and UC Berkeley, 565 00:30:32,900 --> 00:30:34,820 and Stanford's, and Comcast, and Verizon, 566 00:30:34,820 --> 00:30:38,540 and all of these very big entities have connections among themselves, 567 00:30:38,540 --> 00:30:41,180 and each of them have some number of routers. 568 00:30:41,180 --> 00:30:43,940 And what happens ultimately, is that these routers 569 00:30:43,940 --> 00:30:47,840 are interconnected with cables, or some kind of satellite 570 00:30:47,840 --> 00:30:50,600 connectivity, or radio waves, or the like, 571 00:30:50,600 --> 00:30:56,240 and notice too there's very often multiple ways to go from one location 572 00:30:56,240 --> 00:30:59,330 to another, and indeed there might be multiple ways 573 00:30:59,330 --> 00:31:02,390 to reach your destination, depending on which path you take. 574 00:31:02,390 --> 00:31:03,560 And this is a feature. 575 00:31:03,560 --> 00:31:07,130 The internet of course, has its origins in US military design, 576 00:31:07,130 --> 00:31:10,760 and among the goals was to have some resilience against downtime. 577 00:31:10,760 --> 00:31:14,809 If one or more cities or one or more routers went down for whatever reason, 578 00:31:14,809 --> 00:31:16,850 that one of the design principles of the internet 579 00:31:16,850 --> 00:31:19,280 was to be able to route around that issue. 580 00:31:19,280 --> 00:31:22,310 And so it stands to reason that it's a good thing if data 581 00:31:22,310 --> 00:31:25,700 can flow from one point to another, but following different intermediate stops. 582 00:31:25,700 --> 00:31:30,130 Which is to say, when Google sent that cat over the internet back to me, 583 00:31:30,130 --> 00:31:35,180 that cats four parts might have gone in four different directions, 584 00:31:35,180 --> 00:31:38,270 but somehow all made their way back to me because the routers know 585 00:31:38,270 --> 00:31:40,830 how to get data to me again-- 586 00:31:40,830 --> 00:31:44,240 based on that envelope, based on that IP address-- 587 00:31:44,240 --> 00:31:47,030 but they might take different paths just because. 588 00:31:47,030 --> 00:31:48,076 Now what does that mean? 589 00:31:48,076 --> 00:31:49,700 Well sometimes, the internet gets busy. 590 00:31:49,700 --> 00:31:52,370 Routers get busy, they get overloaded with lots of packets, 591 00:31:52,370 --> 00:31:55,340 and so sometimes routers have to say go this way instead. 592 00:31:55,340 --> 00:31:58,940 Or sometimes, packets-- some things are just so busy that the router just gets 593 00:31:58,940 --> 00:32:04,370 overwhelmed and it has to literally, but slowly, drop packets on the floor 594 00:32:04,370 --> 00:32:07,070 so to speak, deleting the packets without ever delivering them, 595 00:32:07,070 --> 00:32:09,890 at which point, hopefully, if the users are using TCP, 596 00:32:09,890 --> 00:32:13,910 their computers will retransmit that data so it's not actually a problem. 597 00:32:13,910 --> 00:32:16,820 And all of this is happening so quickly, that you never 598 00:32:16,820 --> 00:32:21,500 really notice some of these delays or some of these reroutings, 599 00:32:21,500 --> 00:32:24,410 and so here might be several paths that data 600 00:32:24,410 --> 00:32:28,172 takes to get from me to Google.com and maybe a different path back, 601 00:32:28,172 --> 00:32:30,380 and each of these represents a hop, and each of these 602 00:32:30,380 --> 00:32:32,280 takes some amount of time. 603 00:32:32,280 --> 00:32:35,870 So how much time does it take for data to go across the internet? 604 00:32:35,870 --> 00:32:38,100 Well let's actually take a look. 605 00:32:38,100 --> 00:32:44,870 I'm going to go ahead here and run a program that is called traceroute. 606 00:32:44,870 --> 00:32:47,630 And this is going to, per its name, actually allow me 607 00:32:47,630 --> 00:32:52,640 to trace the route between me and some other computer. 608 00:32:52,640 --> 00:32:57,050 To do this, I'm going to type traceroute into the special window here on my Mac, 609 00:32:57,050 --> 00:33:02,660 and I'm going to do traceroute of-- well let's try it-- www.google.com Enter, 610 00:33:02,660 --> 00:33:05,976 and I'm going to see some interesting information here. 611 00:33:05,976 --> 00:33:08,600 Seems to be a little slow at the moment and that's interesting, 612 00:33:08,600 --> 00:33:11,120 it seems stars probably don't mean good things. 613 00:33:11,120 --> 00:33:14,000 So let's scroll up here and see what's going on. 614 00:33:14,000 --> 00:33:17,960 I'm tracing the route to www.google.com, and it turns out parenthetically, 615 00:33:17,960 --> 00:33:21,620 that is in fact Google's IP address at least at this moment in time 616 00:33:21,620 --> 00:33:25,220 here on campus, 4.53.56.109. 617 00:33:25,220 --> 00:33:28,400 So it's not, as it turns out, 5.6.7.8. 618 00:33:28,400 --> 00:33:29,870 It's that instead. 619 00:33:29,870 --> 00:33:34,610 And each of these rows of output-- one, two, three, four, five, six-- 620 00:33:34,610 --> 00:33:37,940 represent a router between me and Google.com. 621 00:33:37,940 --> 00:33:41,372 So what traceroute does is it sends a message to the first router, 622 00:33:41,372 --> 00:33:44,330 then a message essentially to the second router, then the third router, 623 00:33:44,330 --> 00:33:47,240 then the fourth router, and it asks it, one, for its IP address-- 624 00:33:47,240 --> 00:33:48,380 or it figures it out-- 625 00:33:48,380 --> 00:33:49,061 or its name. 626 00:33:49,061 --> 00:33:50,810 In fact, notice that some of these routers 627 00:33:50,810 --> 00:33:54,470 seem to have somewhat cryptic, but English-like names, 628 00:33:54,470 --> 00:33:58,430 and it also tells me, traceroute, how many milliseconds it took for the data 629 00:33:58,430 --> 00:34:01,130 to get from me to that destination. 630 00:34:01,130 --> 00:34:02,047 Look how fast this is. 631 00:34:02,047 --> 00:34:05,130 I don't know exactly where all these routers are, but all of these numbers 632 00:34:05,130 --> 00:34:06,140 are super small. 633 00:34:06,140 --> 00:34:10,670 3 milliseconds just to get from one point, my computer, to another router. 634 00:34:10,670 --> 00:34:12,830 Now, you can infer what some of these are. 635 00:34:12,830 --> 00:34:16,250 I don't know where these IP addresses are, but odds are they're on campus. 636 00:34:16,250 --> 00:34:19,660 Odds are rows one and two, both of whose IP addresses start with 10, 637 00:34:19,660 --> 00:34:22,639 are somewhere on campus, routers on campus. 638 00:34:22,639 --> 00:34:26,449 Step three, I'm very confident that it is one of Harvard's routers 639 00:34:26,449 --> 00:34:29,750 because it's called Core GW, which I just know by convention means Core 640 00:34:29,750 --> 00:34:35,090 Gateway or Core router, and it belongs to the faculty of Arts and Sciences 641 00:34:35,090 --> 00:34:36,710 on Harvard's network. 642 00:34:36,710 --> 00:34:39,440 Then there's another one also called Core Gateway, which 643 00:34:39,440 --> 00:34:41,819 is probably somewhere slightly different on campus, 644 00:34:41,819 --> 00:34:43,610 maybe not the faculty of Arts and Sciences, 645 00:34:43,610 --> 00:34:45,448 but in the core Harvard network. 646 00:34:45,448 --> 00:34:47,239 And then it gets a little more interesting. 647 00:34:47,239 --> 00:34:50,837 Then apparently gets handed off to a bear on rows five and six, 648 00:34:50,837 --> 00:34:53,670 or two routers whose names have the word bear in it for some reason, 649 00:34:53,670 --> 00:34:55,469 but odds are they're indeed in Boston-- 650 00:34:55,469 --> 00:34:57,380 which is not too far here from Harvard-- 651 00:34:57,380 --> 00:35:02,300 on level three's network which is a very big common ISP, Internet Service 652 00:35:02,300 --> 00:35:02,900 Provider. 653 00:35:02,900 --> 00:35:03,770 Level three. 654 00:35:03,770 --> 00:35:08,210 Now thereafter, for whatever reason, the routers between me and Google 655 00:35:08,210 --> 00:35:10,094 are not responding to this inquiry. 656 00:35:10,094 --> 00:35:10,760 And that's fine. 657 00:35:10,760 --> 00:35:13,400 They might just be configured to ignore this type of request, 658 00:35:13,400 --> 00:35:14,940 but it's not all that enlightening. 659 00:35:14,940 --> 00:35:18,490 I just know that it's taking more steps to actually reach Google.com 660 00:35:18,490 --> 00:35:21,296 because their servers are beyond that sixth router. 661 00:35:21,296 --> 00:35:22,670 So let's try another destination. 662 00:35:22,670 --> 00:35:26,720 When in doubt let's just try again, and let's try someone like our friends at, 663 00:35:26,720 --> 00:35:29,210 maybe UC Berkeley who maybe are a little looser when 664 00:35:29,210 --> 00:35:31,500 it comes to sharing information. 665 00:35:31,500 --> 00:35:34,940 And let me go ahead and hit Enter now, and wow, just flew by. 666 00:35:34,940 --> 00:35:38,030 19 steps later, notice what's happened. 667 00:35:38,030 --> 00:35:40,340 Looks like two of Harvard's nameless routers 668 00:35:40,340 --> 00:35:45,200 up top, then that ACore router-- this one's a little different-- northeast 669 00:35:45,200 --> 00:35:48,230 gateway, so it actually took a different route this time off campus. 670 00:35:48,230 --> 00:35:53,550 Then this border gateway, BDR, probably meaning border also in harvard.edu. 671 00:35:53,550 --> 00:35:57,710 Row five is some nameless router somewhere else, not sure where. 672 00:35:57,710 --> 00:36:01,200 Row six is something in northerncrossroads.org. 673 00:36:01,200 --> 00:36:02,090 Nox.org. 674 00:36:02,090 --> 00:36:05,609 This is a very big peering point were lots of ISPs interconnect. 675 00:36:05,609 --> 00:36:07,900 And then we're going to have to take some guesses here. 676 00:36:07,900 --> 00:36:11,310 Then we have SDN, SW. 677 00:36:11,310 --> 00:36:13,490 I don't know where this is, but internet2 678 00:36:13,490 --> 00:36:16,475 is a network, a very high speed network of a lot of universities. 679 00:36:16,475 --> 00:36:17,310 So that's great. 680 00:36:17,310 --> 00:36:21,140 It looks like our packet's got on kind of the superhighway 681 00:36:21,140 --> 00:36:24,315 academically speaking, which is good because it tends to be pretty fast. 682 00:36:24,315 --> 00:36:26,190 And now, I don't know where all of these are. 683 00:36:26,190 --> 00:36:28,023 But I'm going to go out on the limb and say, 684 00:36:28,023 --> 00:36:31,940 you know what, this router in row eight is probably in Chicago just because 685 00:36:31,940 --> 00:36:33,050 of that abbreviation. 686 00:36:33,050 --> 00:36:36,740 The next one is as well, rows 10 and 11, maybe 687 00:36:36,740 --> 00:36:38,990 if you're familiar with US cities, Denver, 688 00:36:38,990 --> 00:36:42,350 probably there, Las Vegas, these next two, Los Angeles 689 00:36:42,350 --> 00:36:47,180 here in row 14, 15, probably [? LosLA ?] as well for LAX. 690 00:36:47,180 --> 00:36:48,950 For whatever reason, system administrators 691 00:36:48,950 --> 00:36:53,331 have historically often named their routers after airport codes like LAX. 692 00:36:53,331 --> 00:36:55,580 And then of course, we're in California at that point, 693 00:36:55,580 --> 00:36:58,520 so it's not all that far from UC Berkeley. 694 00:36:58,520 --> 00:37:04,130 Up north and indeed, it looks like the official name of UC Berkeley's web 695 00:37:04,130 --> 00:37:06,740 server is CalWeb for California Web Server. 696 00:37:06,740 --> 00:37:09,440 Farm, which means a cluster of computers. 697 00:37:09,440 --> 00:37:12,760 Prod, which means production like the official web servers in use. 698 00:37:12,760 --> 00:37:15,340 Then ist.berkeley.edu. 699 00:37:15,340 --> 00:37:18,950 Now it took me way longer to tell this story than for the actual data 700 00:37:18,950 --> 00:37:20,090 to get from here to there. 701 00:37:20,090 --> 00:37:22,580 It only took 80 milliseconds for that data 702 00:37:22,580 --> 00:37:26,720 to get from Cambridge, Massachusetts on the east coast of the US, 703 00:37:26,720 --> 00:37:29,960 to Berkeley, California, on the west coast of the US, 704 00:37:29,960 --> 00:37:33,577 and that might take a human like five hours, six hours at least to fly, 705 00:37:33,577 --> 00:37:36,410 not to mention waiting in the airport and then getting your luggage. 706 00:37:36,410 --> 00:37:40,070 That can be an all-day affair, when if I just want a cab from UC Berkeley, 707 00:37:40,070 --> 00:37:42,590 for instance, it's going to take me 80 milliseconds 708 00:37:42,590 --> 00:37:46,970 to make that request it would seem, with less than 1/10 of one second. 709 00:37:46,970 --> 00:37:50,120 And then the cab probably takes about that much time to come back. 710 00:37:50,120 --> 00:37:51,800 And notice the variability, though. 711 00:37:51,800 --> 00:37:54,770 Sometimes, routers are a little busier than at other times, 712 00:37:54,770 --> 00:37:58,877 and so there's variance between all of these various measurements, 713 00:37:58,877 --> 00:38:00,960 and each of these, to be clear, is not cumulative. 714 00:38:00,960 --> 00:38:02,168 So they might go up and down. 715 00:38:02,168 --> 00:38:06,215 It's how much time it takes to go from my laptop to each of those routers. 716 00:38:06,215 --> 00:38:09,090 You don't just keep adding them, you keep looking back at the origin. 717 00:38:09,090 --> 00:38:11,640 So about 80 milliseconds in total. 718 00:38:11,640 --> 00:38:14,810 Well let's try another one, one that's a little closer to home here. 719 00:38:14,810 --> 00:38:19,490 Traceroute www.mit.edu, which is also in Cambridge. 720 00:38:19,490 --> 00:38:20,420 Already done. 721 00:38:20,420 --> 00:38:22,910 Also in Cambridge, Massachusetts, only eight 722 00:38:22,910 --> 00:38:25,850 hops away, eight routers between us, and indeed we 723 00:38:25,850 --> 00:38:29,600 seem to be going through Harvard's Core network again 724 00:38:29,600 --> 00:38:31,790 then we get connected to Quest, another ISP, 725 00:38:31,790 --> 00:38:34,370 and this is actually kind of interesting. 726 00:38:34,370 --> 00:38:38,750 It looks like my data is making a little stop in New York City 727 00:38:38,750 --> 00:38:40,940 if these names are to be believed. 728 00:38:40,940 --> 00:38:44,590 And that's kind of wild, and yet it doesn't even seem to go to mit.edu, 729 00:38:44,590 --> 00:38:47,250 but akamaitechnologies.com. 730 00:38:47,250 --> 00:38:49,580 So this is interesting, and my inference here 731 00:38:49,580 --> 00:38:53,060 is that MIT has probably outsourced parts of its website 732 00:38:53,060 --> 00:38:57,260 to a company called Akamai, which ironically is themselves based 733 00:38:57,260 --> 00:38:59,370 in Cambridge itself, but their servers seem 734 00:38:59,370 --> 00:39:02,270 to be in New York City or thereabouts, and it 735 00:39:02,270 --> 00:39:06,470 seems that MIT is essentially using them as some kind of CDN, Content Delivery 736 00:39:06,470 --> 00:39:10,280 Network, which is indeed Akamai's business to host MIT'S website. 737 00:39:10,280 --> 00:39:14,420 So even though I think of MIT as being walkable from this theater here just 738 00:39:14,420 --> 00:39:17,300 down the road, their servers can certainly be somewhere else. 739 00:39:17,300 --> 00:39:21,020 And thanks to DNS, Domain Name System, and thanks to these routers, 740 00:39:21,020 --> 00:39:24,710 nonetheless can my laptop reach MIT'S web servers really wherever 741 00:39:24,710 --> 00:39:26,180 they are in the world. 742 00:39:26,180 --> 00:39:29,180 And in this case, they're only six milliseconds away. 743 00:39:29,180 --> 00:39:33,650 So not necessarily as compelling when I can still walk to MIT pretty quickly, 744 00:39:33,650 --> 00:39:37,100 but six milliseconds is certainly faster than the six minutes 745 00:39:37,100 --> 00:39:41,330 it might take me to drive, or the half hour it might take me to walk. 746 00:39:41,330 --> 00:39:43,160 And what about places even farther? 747 00:39:43,160 --> 00:39:48,380 What if I am interested in the news somewhere abroad relative to here? 748 00:39:48,380 --> 00:39:55,400 I might do traceroute www.cnn.co.jp if I wanted to trace the route between here 749 00:39:55,400 --> 00:39:59,810 and what I presume is CNN's Japanese web server for news. 750 00:39:59,810 --> 00:40:04,520 And here, we again see the data leaving Harvard's routers in steps 751 00:40:04,520 --> 00:40:06,250 one, and two, and three, and four. 752 00:40:06,250 --> 00:40:08,309 Seven didn't really answer, it seems. 753 00:40:08,309 --> 00:40:11,100 And then it got a little private, didn't really respond thereafter. 754 00:40:11,100 --> 00:40:15,170 But notice something interesting here is going on. 755 00:40:15,170 --> 00:40:18,260 Somewhere among these first few steps, I'm 756 00:40:18,260 --> 00:40:21,029 going through internet2, which is encouraging 757 00:40:21,029 --> 00:40:22,820 because that's a fast connection typically, 758 00:40:22,820 --> 00:40:27,050 then a nameless router, step 7, can't quite make sense of all of these. 759 00:40:27,050 --> 00:40:31,040 But maybe SEA is Seattle if those airport codes are to be believed. 760 00:40:31,040 --> 00:40:33,320 And then, wow, notice this gap. 761 00:40:33,320 --> 00:40:36,170 We're starting at like less than one millisecond, 762 00:40:36,170 --> 00:40:40,160 less than one millisecond, one millisecond, 20 milliseconds, then 85, 763 00:40:40,160 --> 00:40:45,560 then 106, then like 193, from 213, 191. 764 00:40:45,560 --> 00:40:48,770 That's a big jump, and it doesn't seem to just be a bit of variance. 765 00:40:48,770 --> 00:40:50,728 It doesn't look like just the routers are busy, 766 00:40:50,728 --> 00:40:53,600 it seems to persist because getting to each subsequent router 767 00:40:53,600 --> 00:40:56,480 takes about the same amount of time. 768 00:40:56,480 --> 00:40:59,660 Why is my connection so much slower all of a sudden? 769 00:40:59,660 --> 00:41:05,010 Why is it taking so long between steps nine and 10? 770 00:41:05,010 --> 00:41:06,340 Well, Seattle, where is that? 771 00:41:06,340 --> 00:41:12,390 That happens to be on the far west coast of the US, 772 00:41:12,390 --> 00:41:17,220 and maybe Osaka, Japan is right there across-- 773 00:41:17,220 --> 00:41:19,350 what-- Pacific Ocean? 774 00:41:19,350 --> 00:41:22,770 And so it would seem that between steps nine and 10, 775 00:41:22,770 --> 00:41:28,030 maybe there's a really being body of water between these two routers, 776 00:41:28,030 --> 00:41:31,260 and that explains why all of a sudden there's so much of a delay. 777 00:41:31,260 --> 00:41:34,950 And indeed, the internet of course spans the globe these days. 778 00:41:34,950 --> 00:41:39,150 It spans oceans, either through big trans-Atlantic, trans-Pacific, 779 00:41:39,150 --> 00:41:43,020 trans-oceanic cables that are laid down by really large ships, 780 00:41:43,020 --> 00:41:45,840 or maybe it's via satellite, or microwave, or other technologies. 781 00:41:45,840 --> 00:41:48,090 The world is so incredibly interconnected, 782 00:41:48,090 --> 00:41:54,270 but you can see visually how those interconnections are laid out, 783 00:41:54,270 --> 00:41:56,130 and where they actually are. 784 00:41:56,130 --> 00:42:01,230 In fact, thanks to this animation, we can see even more visually 785 00:42:01,230 --> 00:42:04,986 what the internet looks like around the whole world. 786 00:42:04,986 --> 00:43:05,580 [MUSIC PLAYING] 787 00:43:05,580 --> 00:43:06,080 All right. 788 00:43:06,080 --> 00:43:07,470 Demonstration time. 789 00:43:07,470 --> 00:43:11,270 So within your home, or campus, or office, we had a number of devices, 790 00:43:11,270 --> 00:43:15,420 and one of them was like a cable modem, or DSL modem, or a FiOS device. 791 00:43:15,420 --> 00:43:17,000 So what does that device look like? 792 00:43:17,000 --> 00:43:20,600 Well if you have a cable modem, maybe from a company like Comcast whose brand 793 00:43:20,600 --> 00:43:23,270 name is Xfinity, you might have a device like this, 794 00:43:23,270 --> 00:43:25,680 and it usually stands up on your counter like this. 795 00:43:25,680 --> 00:43:28,320 It's got some blinking lights in front, and in the back 796 00:43:28,320 --> 00:43:29,970 are a whole bunch of connectors. 797 00:43:29,970 --> 00:43:31,220 Now what are these connectors? 798 00:43:31,220 --> 00:43:33,920 Well the biggest of them, and frankly the oldest one of them, 799 00:43:33,920 --> 00:43:37,280 is this metal thing here which is a coaxial connector, 800 00:43:37,280 --> 00:43:41,270 and this is what's long been used for TV antennas and cable connections 801 00:43:41,270 --> 00:43:43,310 for your own TV into the wall. 802 00:43:43,310 --> 00:43:45,770 And the kind of cable that you might use to plug into that 803 00:43:45,770 --> 00:43:49,430 generally is pretty thick, and it's got a cylindrical end, and a little pin 804 00:43:49,430 --> 00:43:52,860 in the middle, and it's often kind of annoying to screw the thing in there. 805 00:43:52,860 --> 00:43:54,800 But if you have a cable modem, odds are you've 806 00:43:54,800 --> 00:43:58,700 got a jack that looks also like this somewhere on one of your walls, maybe 807 00:43:58,700 --> 00:44:02,750 near your actual TV, and what you really just need is a cable like this. 808 00:44:02,750 --> 00:44:05,990 One and it goes into the cable modem, the other end goes into the wall, 809 00:44:05,990 --> 00:44:08,990 and that's a haul physically you need in terms of a connection 810 00:44:08,990 --> 00:44:13,522 to the wall beyond, of course, the power cable which would plug into down here. 811 00:44:13,522 --> 00:44:15,480 And those are going to vary based on the model. 812 00:44:15,480 --> 00:44:17,900 But there's some interesting ports up top here too. 813 00:44:17,900 --> 00:44:20,720 There's some phone jacks it seems, because it turns out 814 00:44:20,720 --> 00:44:24,470 that a lot of internet service providers these days, especially those 815 00:44:24,470 --> 00:44:29,810 who have digital's support for not just internet services but also TV 816 00:44:29,810 --> 00:44:33,350 and phone, you can actually plug one or two landline telephones in here 817 00:44:33,350 --> 00:44:35,030 and get telephone service. 818 00:44:35,030 --> 00:44:37,670 And then below that are four jacks that look pretty similar, 819 00:44:37,670 --> 00:44:40,010 but they're actually a bit wider, a bit fatter. 820 00:44:40,010 --> 00:44:44,540 And so these phone jacks, if you never knew are called RJ11 connectors, 821 00:44:44,540 --> 00:44:48,319 and that is what, historically, you would plug into the wall of your home 822 00:44:48,319 --> 00:44:49,610 or now the back of this device. 823 00:44:49,610 --> 00:44:52,340 And these other bigger ones are RJ45 jacks 824 00:44:52,340 --> 00:44:54,860 into which you plug generally the ethernet cables, which 825 00:44:54,860 --> 00:44:56,600 is the name given to network cables. 826 00:44:56,600 --> 00:45:01,040 So if back in the day, you had a phone with one of these things on the wall, 827 00:45:01,040 --> 00:45:03,724 you would have one of these RJ11 connectors, super small, 828 00:45:03,724 --> 00:45:06,140 and you'd plug that into the phone and then into the wall, 829 00:45:06,140 --> 00:45:07,430 or the back of this device. 830 00:45:07,430 --> 00:45:10,760 Meanwhile though, you might have a ethernet cable, 831 00:45:10,760 --> 00:45:12,080 which is a little wider. 832 00:45:12,080 --> 00:45:14,942 So whereas the phone connector might look like this-- 833 00:45:14,942 --> 00:45:17,150 yeah-- ethernet connector is going to look like that, 834 00:45:17,150 --> 00:45:21,750 and you can probably tell here just how much bigger one is than the other. 835 00:45:21,750 --> 00:45:23,930 And so inside of those cables are just a whole bunch 836 00:45:23,930 --> 00:45:27,890 of wires that actually allow the electricity to flow, the electrons 837 00:45:27,890 --> 00:45:30,920 traveling across them copper wires from this device into the wall. 838 00:45:30,920 --> 00:45:35,030 And from there, Comcast, or Time Warner, or whoever your internet service 839 00:45:35,030 --> 00:45:38,460 provider takes care of the technology there on out. 840 00:45:38,460 --> 00:45:41,052 But what you can plug into this device via those cables-- 841 00:45:41,052 --> 00:45:43,010 not the phone cables, but the ethernet cables-- 842 00:45:43,010 --> 00:45:46,130 is your desktop computer, your Xbox, or some other devices 843 00:45:46,130 --> 00:45:47,660 that use wired internet. 844 00:45:47,660 --> 00:45:52,220 Or if your cable modem has, like this one does, Wi-Fi support, 845 00:45:52,220 --> 00:45:55,460 wireless capabilities, and even though there aren't antennas on this one, 846 00:45:55,460 --> 00:45:58,190 they're actually inside the case, which frankly might partly 847 00:45:58,190 --> 00:45:59,910 explain why this thing is so darn big. 848 00:45:59,910 --> 00:46:03,830 There's absolutely no good reason that these devices need to be this large, 849 00:46:03,830 --> 00:46:09,290 but this device happens to be not just a cable modem, but also a home router 850 00:46:09,290 --> 00:46:13,040 inside of which is support for DNS and DHCP. 851 00:46:13,040 --> 00:46:15,030 It also has Wi-Fi capabilities. 852 00:46:15,030 --> 00:46:18,440 So you don't actually need, with this cable modem, a second device. 853 00:46:18,440 --> 00:46:20,870 You don't need your own Wi-Fi device in the house. 854 00:46:20,870 --> 00:46:23,390 You can get all of that from your ISP. 855 00:46:23,390 --> 00:46:27,907 Now if you have FiOS, another technology that's in some cities here and abroad, 856 00:46:27,907 --> 00:46:29,990 you might have a device that looks pretty similar. 857 00:46:29,990 --> 00:46:31,948 This one, frankly, looks a little more elegant, 858 00:46:31,948 --> 00:46:34,400 and it probably has very similar jacks on the back. 859 00:46:34,400 --> 00:46:38,540 Some kind of coaxial connector that goes into the wall, and from there, Verizon 860 00:46:38,540 --> 00:46:43,160 or whoever your provider is might take it from there, Frontier in this case, 861 00:46:43,160 --> 00:46:46,040 and then you might again have some RJ45 jacks 862 00:46:46,040 --> 00:46:50,990 that allow you to connect devices in your home to this very device. 863 00:46:50,990 --> 00:46:52,850 But not all devices are this big. 864 00:46:52,850 --> 00:46:56,360 Here is another cable modem made by a company called Netgear, 865 00:46:56,360 --> 00:46:57,220 and it's this small. 866 00:46:57,220 --> 00:47:02,600 So case in point, ridiculous, not necessary, same technology, 867 00:47:02,600 --> 00:47:03,559 much smaller. 868 00:47:03,559 --> 00:47:06,350 Much smaller form factor, so the hardware that's inside this device 869 00:47:06,350 --> 00:47:07,850 is obviously much smaller. 870 00:47:07,850 --> 00:47:11,210 But we still see the coaxial connector, some kind of power connector there, 871 00:47:11,210 --> 00:47:14,300 just one jack for an ethernet cable, but that's probably fine 872 00:47:14,300 --> 00:47:18,510 so long as you have another device, a home router, or a switch 873 00:47:18,510 --> 00:47:19,550 to connect it to. 874 00:47:19,550 --> 00:47:23,330 Indeed, if you simply want to provide your home with a bunch more wired 875 00:47:23,330 --> 00:47:25,210 jacks, you might use something like this. 876 00:47:25,210 --> 00:47:26,930 So this is a Cisco Linksys this device. 877 00:47:26,930 --> 00:47:28,013 It's a pretty dumb device. 878 00:47:28,013 --> 00:47:31,790 It's just a switch that's got a whole bunch of those RJ45 connectors. 879 00:47:31,790 --> 00:47:36,030 So you plug one of these into your cable modem, or into your home router, 880 00:47:36,030 --> 00:47:38,750 and then you can plug up to seven other devices into this device, 881 00:47:38,750 --> 00:47:41,600 thereby creating kind of a mesh network among those many devices. 882 00:47:41,600 --> 00:47:44,540 And this switch simply switches data, switches 883 00:47:44,540 --> 00:47:48,530 traffic among the several ports based on who's talking to who. 884 00:47:48,530 --> 00:47:52,760 Or, you might have something a little beefier that looks pretty darn amazing, 885 00:47:52,760 --> 00:47:53,840 I must say. 886 00:47:53,840 --> 00:47:55,590 Very geometric these days. 887 00:47:55,590 --> 00:47:58,370 This one also made by a company called Linksys, owned by Cisco. 888 00:47:58,370 --> 00:48:00,440 This might have these antennas on back, which 889 00:48:00,440 --> 00:48:02,360 suggests that this has Wi-Fi support. 890 00:48:02,360 --> 00:48:05,570 This device happens to be a home router, and it also 891 00:48:05,570 --> 00:48:08,300 has firewalling capabilities, Wi-Fi capabilities, 892 00:48:08,300 --> 00:48:09,920 and switching capabilities. 893 00:48:09,920 --> 00:48:13,520 Indeed, in back, it has not just a connection for your home 894 00:48:13,520 --> 00:48:17,120 router, or rather your cable modem, or your FiOS device to plug into, 895 00:48:17,120 --> 00:48:20,810 it also has a few, but not as many, ethernet jacks, or RJ45 896 00:48:20,810 --> 00:48:23,430 jacks for your several devices. 897 00:48:23,430 --> 00:48:27,170 So which devices you need entirely depends on your own situation, 898 00:48:27,170 --> 00:48:30,170 and odds are the first person to ask is your internet service provider. 899 00:48:30,170 --> 00:48:32,750 Increasingly these days are internet service providers 900 00:48:32,750 --> 00:48:35,567 bringing you, or selling you, or renting you a device that 901 00:48:35,567 --> 00:48:36,650 takes care of all of this. 902 00:48:36,650 --> 00:48:40,280 So odds are you just need these days one device, and not several, 903 00:48:40,280 --> 00:48:43,310 but sometimes you might get something lower profile like this one here, 904 00:48:43,310 --> 00:48:45,726 and maybe you'd buy it yourself and plug it into the wall, 905 00:48:45,726 --> 00:48:48,000 and all your ISP does is take it from there. 906 00:48:48,000 --> 00:48:51,220 They don't give you any devices for your own home, 907 00:48:51,220 --> 00:48:54,530 so you might have to wire some of this up together on your own. 908 00:48:54,530 --> 00:48:58,640 Now at the end of the day though, it is all kind of pretty simple, 909 00:48:58,640 --> 00:49:01,430 whether your cable is this to connect your various devices, 910 00:49:01,430 --> 00:49:04,310 or this, the coaxial connector, or even this, which 911 00:49:04,310 --> 00:49:09,350 is a fiber optic cable which essentially has little strands across which 912 00:49:09,350 --> 00:49:13,910 light travel even faster than electrons across these copper wires. 913 00:49:13,910 --> 00:49:18,790 Inside of many of these cables, like this one here, is just a bunch of wires 914 00:49:18,790 --> 00:49:20,540 and they're actually pretty cheap devices. 915 00:49:20,540 --> 00:49:24,110 And in fact, I thought it'd be fun to maybe get our hands dirty here 916 00:49:24,110 --> 00:49:26,810 with a cable that hopefully I won't need any more, 917 00:49:26,810 --> 00:49:29,630 and see if we can't see inside this here thing. 918 00:49:29,630 --> 00:49:33,140 So wouldn't necessarily do this more than once 919 00:49:33,140 --> 00:49:38,680 because scissors aren't going to work very well on this one. 920 00:49:38,680 --> 00:49:42,070 And actually, we can see what's starting to happen before I even finish. 921 00:49:42,070 --> 00:49:45,730 Notice that as I pull back, the blue part of the cable, which is really 922 00:49:45,730 --> 00:49:50,350 just a rubbery sheath, you can see that there's eight different wires in there, 923 00:49:50,350 --> 00:49:52,510 two of which I've cut, so hopefully those 924 00:49:52,510 --> 00:49:54,850 were the bomb diffusing wires I cut. 925 00:49:54,850 --> 00:50:00,020 If we just keep pulling, you can see a lot of the wires inside. 926 00:50:00,020 --> 00:50:02,440 And these wires all are different colors. 927 00:50:02,440 --> 00:50:05,050 Some of them are striped, some of them are solid, some of them 928 00:50:05,050 --> 00:50:07,630 have been cut so they're shorter than others, and so 929 00:50:07,630 --> 00:50:10,720 long as the right colors on this end line 930 00:50:10,720 --> 00:50:13,960 up with the right colors on this end, your two devices 931 00:50:13,960 --> 00:50:17,140 will be able to talk because some of these wires are used for transmission, 932 00:50:17,140 --> 00:50:19,090 some of them are used for receiving, some of them 933 00:50:19,090 --> 00:50:20,631 might not technically be used at all. 934 00:50:20,631 --> 00:50:24,190 They're really used for insulation and cancellation of what might otherwise 935 00:50:24,190 --> 00:50:25,270 be interference. 936 00:50:25,270 --> 00:50:27,970 So inside of here is pretty simple technology, 937 00:50:27,970 --> 00:50:29,830 and much like we've seen in other contexts 938 00:50:29,830 --> 00:50:33,290 is there's just this layering, and layering, and layering of complexity 939 00:50:33,290 --> 00:50:36,370 so that at the end of the day, this is what's carrying your data, 940 00:50:36,370 --> 00:50:40,600 but there's just so much software and so many interesting advanced ideas on top 941 00:50:40,600 --> 00:50:44,710 of it, all of which ultimately make the internet work. 942 00:50:44,710 --> 00:50:45,970 Now how about some homework? 943 00:50:45,970 --> 00:50:49,100 So your homework for tonight, perhaps, is when you go back home, 944 00:50:49,100 --> 00:50:51,370 whether it's your house, or your dorm, or maybe 945 00:50:51,370 --> 00:50:53,932 your company if you're staying late, find a device that 946 00:50:53,932 --> 00:50:55,390 looks a little something like this. 947 00:50:55,390 --> 00:50:57,730 Maybe it's your cable modem, or your FiOS device, 948 00:50:57,730 --> 00:51:01,000 or maybe it's your home router, or maybe it's someone else's home router, 949 00:51:01,000 --> 00:51:03,790 and turn it around carefully, take a look at the various, 950 00:51:03,790 --> 00:51:07,960 connectors on the back see if you don't recognize some of the various shapes, 951 00:51:07,960 --> 00:51:11,037 and some of the various labels, and some of the, ultimately, technologies 952 00:51:11,037 --> 00:51:12,370 that we've been discussing here. 953 00:51:12,370 --> 00:51:15,910 If you really want to be brazen, go ahead and hold your breath 954 00:51:15,910 --> 00:51:19,640 and unplug everything, and see if you can, via a bit of pattern matching, 955 00:51:19,640 --> 00:51:20,890 plug everything back together. 956 00:51:20,890 --> 00:51:24,130 Of course in the process, you'll take down your entire internet most likely, 957 00:51:24,130 --> 00:51:26,780 or your company's, or your neighbor's, in fact very much, 958 00:51:26,780 --> 00:51:28,630 possibly your neighbor's as well. 959 00:51:28,630 --> 00:51:31,840 And that's OK if you're sort of confident you can reassemble that. 960 00:51:31,840 --> 00:51:34,960 I mean, if you're really daring, and you have an extra ethernet 961 00:51:34,960 --> 00:51:37,470 cable lying around, go to town on one of these things here. 962 00:51:37,470 --> 00:51:39,970 You're not really going to be able to put this back together 963 00:51:39,970 --> 00:51:42,370 without special hardware and a spare little clip, 964 00:51:42,370 --> 00:51:45,580 but that would be the extreme form of getting your hands dirty here 965 00:51:45,580 --> 00:51:48,300 with the internet. 966 00:51:48,300 --> 00:51:49,940