WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000 00:00:00.500 --> 00:00:09.640 [MUSIC PLAYING] 00:00:09.640 --> 00:00:11.120 DAVID J. MALAN: The internet. 00:00:11.120 --> 00:00:13.170 Odds are, you use this every day, and odds 00:00:13.170 --> 00:00:15.630 are you have internet connectivity at home these days, 00:00:15.630 --> 00:00:17.220 or at work, or at school. 00:00:17.220 --> 00:00:18.900 But how does it all work? 00:00:18.900 --> 00:00:21.210 How is it that you can use your phone wirelessly, 00:00:21.210 --> 00:00:23.584 how is it that you can use your laptop, and your desktop, 00:00:23.584 --> 00:00:27.250 and so many other devices all, somehow, on a network. 00:00:27.250 --> 00:00:31.140 Well let's consider what you yourself might have at home, or in your office, 00:00:31.140 --> 00:00:34.050 or at school, and let's assume for the sake of discussion 00:00:34.050 --> 00:00:35.580 that it's a home network. 00:00:35.580 --> 00:00:39.270 So over here is, of course, your home, and inside of that door 00:00:39.270 --> 00:00:42.340 some number of devices that actually get you on the internet. 00:00:42.340 --> 00:00:43.740 But what are those devices? 00:00:43.740 --> 00:00:46.710 Well odds are, inside of your home for instance, 00:00:46.710 --> 00:00:52.050 you have a device that might be called a cable modem, or a DSL modem, 00:00:52.050 --> 00:00:55.065 or a FiOS device these days, and that device 00:00:55.065 --> 00:00:57.690 is something you generally pay some number of dollars per month 00:00:57.690 --> 00:01:01.380 for because you're paying for an ISP, an internet service provider. 00:01:01.380 --> 00:01:05.920 So that device is somehow connected to the internet, 00:01:05.920 --> 00:01:09.060 which for now for our purposes right now we'll just draws a cloud, 00:01:09.060 --> 00:01:10.920 and that there is the internet. 00:01:10.920 --> 00:01:14.580 And that device comes from an internet service provider like Verizon, 00:01:14.580 --> 00:01:17.760 or Comcast, or any number of other providers, 00:01:17.760 --> 00:01:20.012 and somehow they themselves are on the internet. 00:01:20.012 --> 00:01:22.470 But how do we now get the rest of your home on the internet 00:01:22.470 --> 00:01:24.690 if all you have is just this one device? 00:01:24.690 --> 00:01:26.760 Well depending on how this device functions, 00:01:26.760 --> 00:01:28.500 it might just be all that you need. 00:01:28.500 --> 00:01:31.260 And wirelessly, somehow now, your phone and your laptop, 00:01:31.260 --> 00:01:33.210 and all of your other devices just work. 00:01:33.210 --> 00:01:35.490 Or, maybe you need a second device, that we 00:01:35.490 --> 00:01:39.960 might call home router, that somehow connected to that cable modem, 00:01:39.960 --> 00:01:43.680 or FiOS device, or the like, that in turn makes network 00:01:43.680 --> 00:01:45.475 connectivity possible in your own home. 00:01:45.475 --> 00:01:47.850 And maybe this little home router does a little bit more, 00:01:47.850 --> 00:01:49.683 and maybe it's got a couple of antennas that 00:01:49.683 --> 00:01:51.840 actually provide the Wi-Fi service. 00:01:51.840 --> 00:01:55.680 Meanwhile, maybe it also has some jacks or some physical ports in back 00:01:55.680 --> 00:01:57.450 into it you can plug cables so that if you 00:01:57.450 --> 00:02:00.360 have a wired device like a DVR, or an XBox, 00:02:00.360 --> 00:02:02.730 or something else that's not necessarily wireless, 00:02:02.730 --> 00:02:06.870 you have some place to plug those devices into as well. 00:02:06.870 --> 00:02:11.160 But this is so high level, and this sense this is so poorly drawn. 00:02:11.160 --> 00:02:13.650 What is actually going on underneath the hood, so to speak, 00:02:13.650 --> 00:02:18.570 and how is it that bits, zeros and ones, can transmit themselves from my house 00:02:18.570 --> 00:02:20.990 to everywhere else in the world and back. 00:02:20.990 --> 00:02:23.040 Well, let's take a closer look. 00:02:23.040 --> 00:02:26.500 Every computer on the internet, it turns out, 00:02:26.500 --> 00:02:29.730 has something that looks like this, so-called IP address, 00:02:29.730 --> 00:02:31.980 or internet protocol address, which really 00:02:31.980 --> 00:02:36.970 is just a number dot another number dot another number dot another number. 00:02:36.970 --> 00:02:40.050 So four numbers separated by dots, and each of those numbers 00:02:40.050 --> 00:02:43.540 is a value between zero and 255. 00:02:43.540 --> 00:02:46.800 So there's 256 total possibilities for each of those values. 00:02:46.800 --> 00:02:49.800 Now it turns out there's other types of IP addresses today 00:02:49.800 --> 00:02:53.560 that are actually much bigger than this, but more on that in a bit. 00:02:53.560 --> 00:02:57.120 So these IP addresses, much like our postal addresses, 00:02:57.120 --> 00:03:00.400 uniquely identify computers on the internet. 00:03:00.400 --> 00:03:02.400 So if you have a laptop, if you have a desktop, 00:03:02.400 --> 00:03:06.060 if you have a mobile phone, if you have an Xbox on the internet, that device, 00:03:06.060 --> 00:03:08.750 by definition of how the internet works, has an IP address. 00:03:08.750 --> 00:03:13.170 It has a unique address that allows other computers on the internet to talk 00:03:13.170 --> 00:03:18.780 to it, much like you might live at 123 Main Street in Anytown, USA, 00:03:18.780 --> 00:03:21.900 or the computer science building down the road at 33 Oxford Street, 00:03:21.900 --> 00:03:24.720 Cambridge, Massachusetts 02138, USA. 00:03:24.720 --> 00:03:29.370 These very specific phrases describe uniquely some building 00:03:29.370 --> 00:03:33.510 in the world, much like these numbers just fine uniquely 00:03:33.510 --> 00:03:35.869 some computer in the world. 00:03:35.869 --> 00:03:37.410 But where does this number come from? 00:03:37.410 --> 00:03:41.260 If I open up my laptop, or turn on my desktop, or take out my phone, 00:03:41.260 --> 00:03:45.030 how does any of those devices know what IP address to use? 00:03:45.030 --> 00:03:47.760 Because, it might have just been some time, 00:03:47.760 --> 00:03:52.080 but I don't remember ever having typed in a value like that into my phone, 00:03:52.080 --> 00:03:54.330 so it's got to be coming from somewhere else. 00:03:54.330 --> 00:03:55.195 But where? 00:03:55.195 --> 00:03:58.320 Well this is one of the things you get from your Internet Service Provider, 00:03:58.320 --> 00:03:59.460 or ISP. 00:03:59.460 --> 00:04:01.260 You get an IP address. 00:04:01.260 --> 00:04:03.540 And back in the day, not all that many years ago, 00:04:03.540 --> 00:04:05.130 there would actually be a technician that would probably 00:04:05.130 --> 00:04:07.230 come to your house, or your home, or business, 00:04:07.230 --> 00:04:11.400 and actually configure your computers to use this numeric address. 00:04:11.400 --> 00:04:13.920 But these days, software is a bit fancier. 00:04:13.920 --> 00:04:19.620 There's actually something called DHCP, Dynamic Host Configuration Protocol, 00:04:19.620 --> 00:04:24.330 which is software that ISPs, Internet Service Providers, run and really 00:04:24.330 --> 00:04:28.080 provide to you that allowed your Mac, or your PC, or your iPhone, 00:04:28.080 --> 00:04:31.320 or Android device to say upon turning on, hello world, 00:04:31.320 --> 00:04:32.760 I need a unique address. 00:04:32.760 --> 00:04:39.420 And that DHCP server responds to those open ended questions with a specific IP 00:04:39.420 --> 00:04:42.030 address that the internet service provider controls and has 00:04:42.030 --> 00:04:45.300 allocated specifically for your home. 00:04:45.300 --> 00:04:46.980 Well, that's all fine and good. 00:04:46.980 --> 00:04:50.880 But if my ISP is only providing me with one such address, 00:04:50.880 --> 00:04:53.340 how is it that I can have multiple devices at home 00:04:53.340 --> 00:04:54.950 on the internet at the same time? 00:04:54.950 --> 00:04:57.780 A whole family, indeed, could be on the internet simultaneously, 00:04:57.780 --> 00:05:01.830 and yet if that means four separate, or five, or more separate devices, 00:05:01.830 --> 00:05:07.100 gosh, that means that somehow each of those devices needs its own IP address. 00:05:07.100 --> 00:05:08.650 So where do those come from? 00:05:08.650 --> 00:05:13.650 Well those two come from DHCP, but not necessarily from your ISP, 00:05:13.650 --> 00:05:15.180 your Internet Service Provider. 00:05:15.180 --> 00:05:21.010 Those additional IP addresses come from a device in your very home, 00:05:21.010 --> 00:05:24.120 that home router to which I alluded earlier that's 00:05:24.120 --> 00:05:27.330 probably connected to your cable modem or your FiOS device. 00:05:27.330 --> 00:05:31.590 It's this home router that might have those little antennas that itself also 00:05:31.590 --> 00:05:32.555 supports DHCP. 00:05:32.555 --> 00:05:36.180 So when you turn on your laptop, turn on your desktop, power up your Xbox, 00:05:36.180 --> 00:05:38.160 or take out your phone, and those devices say, 00:05:38.160 --> 00:05:43.530 hello world, I need an IP address, odds are it's this device within your home 00:05:43.530 --> 00:05:48.207 that's answering that question, but it's providing other answers as well. 00:05:48.207 --> 00:05:50.040 It's not just giving you an IP address, it's 00:05:50.040 --> 00:05:54.180 also telling you how to communicate, it turns out, with the rest of the world. 00:05:54.180 --> 00:05:59.050 Because indeed, when I type an address into a browser, 00:05:59.050 --> 00:06:00.822 it's not numeric last time I checked. 00:06:00.822 --> 00:06:03.030 Indeed the last time I typed something into a browser 00:06:03.030 --> 00:06:05.529 was not something dot something dot something dot something, 00:06:05.529 --> 00:06:08.610 it was like Facebook.com, or Twitter.com, or Gmail.com 00:06:08.610 --> 00:06:11.910 or any number of other domain names. 00:06:11.910 --> 00:06:15.480 Because indeed, recall that most any web sites certainly these days 00:06:15.480 --> 00:06:18.130 that you'd visit has a domain name. 00:06:18.130 --> 00:06:21.090 It's something.com, or something.edu, or something 00:06:21.090 --> 00:06:25.080 dot any number of other Top Level Domains, or TLDs. 00:06:25.080 --> 00:06:29.080 So we humans are much better at remembering, I would think words, 00:06:29.080 --> 00:06:32.220 and/or phrases like dot come and dot edu, 00:06:32.220 --> 00:06:38.160 then we are arbitrary numeric addresses, like 1.2.3.4, or 5.6.7.8, 00:06:38.160 --> 00:06:41.460 or completely arbitrary numbers that aren't even so 00:06:41.460 --> 00:06:43.960 simple to remember as those. 00:06:43.960 --> 00:06:47.190 So how is it that when I type in Facebook.com or Google.com, 00:06:47.190 --> 00:06:52.260 my computer knows how to find that computer in the world, if in the world 00:06:52.260 --> 00:06:55.920 there are computers with just these IP addresses? 00:06:56.770 --> 00:07:00.300 Well, it turns out that computers not only 00:07:00.300 --> 00:07:05.040 have IP addresses that they get from DHCP servers, they also have 00:07:05.040 --> 00:07:07.890 what are called DNS servers. 00:07:07.890 --> 00:07:13.090 And indeed, DHCP provides us with access to exactly that as well. 00:07:13.090 --> 00:07:17.400 So in addition to having a DHCP server somewhere out there 00:07:17.400 --> 00:07:22.410 in the world from your ISP or maybe even your home, you also have DNS servers. 00:07:22.410 --> 00:07:26.430 And DNS servers or Domain Name System servers, and their sole purpose in life 00:07:26.430 --> 00:07:30.180 really is to convert domain names like Facebook.com and Gmail.com 00:07:30.180 --> 00:07:33.780 to corresponding IP addresses. 00:07:33.780 --> 00:07:37.530 And these DNS servers, therefore, can help our computers talk 00:07:37.530 --> 00:07:40.320 to computers that, by definition, have IP addresses 00:07:40.320 --> 00:07:44.700 but that we humans would never know if someone didn't tell us. 00:07:44.700 --> 00:07:47.730 So there's already so many acronyms piling up here. 00:07:47.730 --> 00:07:50.890 Just to recap, every computer has an IP address. 00:07:50.890 --> 00:07:54.270 That IP address typically comes from a special server 00:07:54.270 --> 00:07:58.290 called the DHCP server, that lives within your ISP, Internet Service 00:07:58.290 --> 00:08:01.920 Provider, whoever that is, or maybe even within your own home, 00:08:01.920 --> 00:08:03.220 more on that in a bit. 00:08:03.220 --> 00:08:06.150 And meanwhile, there's also DNS servers in the world, 00:08:06.150 --> 00:08:12.270 also controlled by your ISP, that convert domain names to IP addresses 00:08:12.270 --> 00:08:15.780 so that when you actually try to go to Facebook.com your computer, 00:08:15.780 --> 00:08:21.990 Mac, PC, iPhone, Android, whatever, knows what the actual IP address is. 00:08:21.990 --> 00:08:22.920 So why is that? 00:08:22.920 --> 00:08:24.340 Why does that matter? 00:08:24.340 --> 00:08:27.980 Well turns out that the way computers intercommunicate on the internet 00:08:27.980 --> 00:08:32.700 is by sending packets to one another, or virtual envelopes or much 00:08:32.700 --> 00:08:36.260 like you might, or once much like you might have in the past 00:08:36.260 --> 00:08:40.200 sent someone a physical letter, a handwritten letter inside an envelope 00:08:40.200 --> 00:08:42.990 with an address on the front and probably even a stamp, 00:08:42.990 --> 00:08:46.650 so can computers communicate in very much the same way, 00:08:46.650 --> 00:08:47.700 but it's all digital. 00:08:47.700 --> 00:08:49.230 It's all zeros and ones. 00:08:49.230 --> 00:08:51.210 So what do these envelopes look like? 00:08:51.210 --> 00:08:52.742 What are these packets look like? 00:08:52.742 --> 00:08:54.450 Well, why don't we go ahead and construct 00:08:54.450 --> 00:08:57.550 something a little more physical? 00:08:57.550 --> 00:08:59.650 All right so I really like cats, and I want 00:08:59.650 --> 00:09:02.110 to find myself a cat on the internet. 00:09:02.110 --> 00:09:05.940 And so, I'm going to send a request to someone, a server, in fact. 00:09:05.940 --> 00:09:09.250 Maybe someone like Google, and I'm going to say literally 00:09:09.250 --> 00:09:16.550 get me a cat dot jpeg, where jpeg is a common file format for cats, 00:09:16.550 --> 00:09:19.050 so this is the message I want to send to some server. 00:09:19.050 --> 00:09:21.270 Of course it doesn't have any information on it, 00:09:21.270 --> 00:09:22.860 so who is actually going to feel this? 00:09:22.860 --> 00:09:25.200 Well I also have to go ahead and put it in an envelope, 00:09:25.200 --> 00:09:31.751 so I might go ahead and do this, put this message here in an envelope. 00:09:31.751 --> 00:09:34.250 Just a moment, I'll make the envelope and message disappear. 00:09:34.250 --> 00:09:38.140 No, we'll now go ahead and address the envelope to the destination. 00:09:38.140 --> 00:09:40.380 So as a destination on the internet, this server 00:09:40.380 --> 00:09:43.380 is going to have its own IP address, and little old me 00:09:43.380 --> 00:09:46.830 as a computer on the internet laptop, desktop, phone, or whatnot, 00:09:46.830 --> 00:09:48.710 I too am going to have an IP address. 00:09:48.710 --> 00:09:50.418 And so, what I'm going to go ahead and do 00:09:50.418 --> 00:09:55.140 is put my IP address in the top left corner-- 00:09:55.140 --> 00:09:57.210 doesn't really matters since this is imaginary-- 00:09:57.210 --> 00:10:01.170 and my IP address shall be 1.2.3.4 just for the sake of discussion. 00:10:01.170 --> 00:10:05.880 The server, meanwhile, I don't know what the IP address of the server is. 00:10:05.880 --> 00:10:10.830 I know my own IP address because that came from my ISP's DHCP server, 00:10:10.830 --> 00:10:14.220 but the other server's address, unless they really know Google's IP address, 00:10:14.220 --> 00:10:15.660 I wouldn't know it myself. 00:10:15.660 --> 00:10:18.690 So I'm going to have to rely on DNS. 00:10:18.690 --> 00:10:23.530 So I, as a computer, would actually send a request to my ISP's DNS server, 00:10:23.530 --> 00:10:26.833 saying, hey, DNS server, what is the IP address of Google.com. 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, 00:10:32.250 --> 00:10:37.230 and so I'm going to go ahead and write 5.6.7.8. 00:10:37.230 --> 00:10:40.890 And frankly, if my ISP doesn't know-- which is unlikely these days just given 00:10:40.890 --> 00:10:44.070 how popular Google is, but smaller web sites might not be as well known 00:10:44.070 --> 00:10:45.090 to an ISP-- 00:10:45.090 --> 00:10:50.340 well, my ISP is going to be configured by the owners of the ISP 00:10:50.340 --> 00:10:52.860 to know about some other DNS server in the world. 00:10:52.860 --> 00:10:55.450 And so, they will simply escalate it to another DNS server, 00:10:55.450 --> 00:10:57.908 and maybe that DNS server will escalate it to someone else. 00:10:57.908 --> 00:11:01.810 And thankfully, by nature of how the domain name system works, 00:11:01.810 --> 00:11:05.140 there's going to be some number of root servers, special servers, that 00:11:05.140 --> 00:11:08.670 in the worst case, at least know, who else knows, 00:11:08.670 --> 00:11:12.030 what the IPs are of all of the dot coms, or all of dot edus, 00:11:12.030 --> 00:11:15.030 or all of the something other top level domain. 00:11:15.030 --> 00:11:18.744 So there's this recursive system, this tiered system of questions, 00:11:18.744 --> 00:11:21.660 that can be asked for that finally someone knows, and then my own Mac, 00:11:21.660 --> 00:11:23.940 or PC, or phone, can remember it. 00:11:23.940 --> 00:11:30.450 So this message is going to go 2.5.6.7.8, which I'm presuming 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, 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. 00:11:40.740 --> 00:11:45.780 So I'm going to go ahead and seal this, all right, 00:11:45.780 --> 00:11:49.140 and I'm going to hand it off on the internet. 00:11:49.140 --> 00:11:50.430 Now where does it go? 00:11:50.430 --> 00:11:52.060 More on that in just a moment. 00:11:52.060 --> 00:11:54.990 But some number of seconds, or hopefully some number of milliseconds 00:11:54.990 --> 00:11:57.720 later, I'm going to get back a response, and indeed I'm 00:11:57.720 --> 00:12:01.251 going to get back, of course, a cat, this here happy cat. 00:12:01.251 --> 00:12:03.000 But it's not going to be as simple as just 00:12:03.000 --> 00:12:05.790 being handed a cat off the internet. 00:12:05.790 --> 00:12:10.050 This cat too, meanwhile, is going to be in one or more envelopes. 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. 00:12:15.520 --> 00:12:19.290 But maybe, Google when trying to do that, oh, maybe it doesn't quite fit. 00:12:19.290 --> 00:12:22.710 And frankly, maybe this image is so big that it would just 00:12:22.710 --> 00:12:27.240 be rude to other customers to cram this whole big image of a cat 00:12:27.240 --> 00:12:31.006 into just one envelope, thereby blocking other customers' data from potentially 00:12:31.006 --> 00:12:32.130 getting to them as quickly. 00:12:32.130 --> 00:12:35.940 And so, what Google might actually do, and this is very common, 00:12:35.940 --> 00:12:41.130 is divide the cat into fragments. 00:12:41.130 --> 00:12:43.310 So hang in there little guy. 00:12:43.310 --> 00:12:49.200 But we might chop up this larger image into four or so smaller fragments, 00:12:49.200 --> 00:12:51.300 so that now these are much more reasonably sized, 00:12:51.300 --> 00:12:55.350 and what Google can do is put one of these into one envelope, 00:12:55.350 --> 00:13:00.350 can put another of these into another envelope, and then of course 00:13:00.350 --> 00:13:05.350 if there's four fragments in total, we can put like a third in this envelope, 00:13:05.350 --> 00:13:09.360 and then we can go ahead and put the fourth in a fourth and final envelope. 00:13:09.360 --> 00:13:12.210 Now of course, I'm going to have to write some information on each 00:13:12.210 --> 00:13:13.860 of these four envelopes. 00:13:13.860 --> 00:13:15.930 So what goes on the outside here? 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. 00:13:22.470 --> 00:13:26.365 If they're responding to my original request with this response, 00:13:26.365 --> 00:13:29.490 those numbers are going to have to be reversed so that this packet is going 00:13:29.490 --> 00:13:35.130 to be coming from Google at 5.6.7.8, and it's 00:13:35.130 --> 00:13:40.260 going to be going to me, which is 1.2.3.4. 00:13:40.260 --> 00:13:42.780 And they're going to go ahead and put that same information 00:13:42.780 --> 00:13:48.690 on every one of these envelopes. 00:13:48.690 --> 00:13:50.940 But that's not quite enough, it turns out. 00:13:50.940 --> 00:13:56.577 It's not quite enough for them to just put my address on these envelopes, 00:13:56.577 --> 00:13:58.160 because there's four of these packets. 00:13:58.160 --> 00:14:00.380 And so, you know what, they're going to have to provide another clue. 00:14:00.380 --> 00:14:02.050 They're going to have to tell me how many total packets there 00:14:02.050 --> 00:14:03.140 are in the response. 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, 00:14:08.440 --> 00:14:13.480 this one will be three of four, and this of course will be four of four. 00:14:13.480 --> 00:14:15.970 So what Google has put on each of their envelopes 00:14:15.970 --> 00:14:17.780 now looks a little something like this. 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 00:14:25.000 --> 00:14:28.450 down here, this is packet number one of four. 00:14:28.450 --> 00:14:32.530 So this is to say that IP goes beyond addresses. 00:14:32.530 --> 00:14:35.560 IP, Internet Protocol, is really a set of conventions. 00:14:35.560 --> 00:14:38.710 It's a set of rules that computers and servers are supposed to follow, 00:14:38.710 --> 00:14:42.280 so that when they enter communicate, one knows what to expect from the other, 00:14:42.280 --> 00:14:45.140 and the other knows how to respond to the first. 00:14:45.140 --> 00:14:49.420 And so, this support for fragmentation is also part of this feature of IP. 00:14:49.420 --> 00:14:51.730 Now what is the benefit of this? 00:14:51.730 --> 00:14:55.270 Well this way, if I now get as little old me 00:14:55.270 --> 00:14:58.200 off the internet, packet two of four-- 00:14:58.200 --> 00:15:01.460 it's a little strange that it's out of order-- packet three of four, 00:15:01.460 --> 00:15:06.690 and packet four of four, but I don't seem to have actually received 00:15:06.690 --> 00:15:07.900 packet one of four. 00:15:07.900 --> 00:15:12.340 I can logically infer from the packets I did get which of them I'm missing. 00:15:12.340 --> 00:15:14.950 But IP, Internet Protocol, alone says nothing 00:15:14.950 --> 00:15:17.870 about what I should do as a computer in that situation. 00:15:17.870 --> 00:15:23.560 So it turns out that computers actually use not just IP, Internet Protocol, 00:15:23.560 --> 00:15:26.931 but another protocol, another standard called TCP. 00:15:26.931 --> 00:15:28.930 And in fact, these are so commonly used together 00:15:28.930 --> 00:15:33.010 that you might have heard or read at some point of something called TCP/IP, 00:15:33.010 --> 00:15:38.410 or TCP slash IP, which is just Transmission Control Protocol slash 00:15:38.410 --> 00:15:43.330 Internet Protocol, which just refers to the combination of these two protocols 00:15:43.330 --> 00:15:45.280 in order to transmit data on the internet. 00:15:45.280 --> 00:15:49.990 Now among the roles that IP plays is to support addressing, and fragmentation, 00:15:49.990 --> 00:15:51.620 and a bunch of other things too. 00:15:51.620 --> 00:15:57.490 And among the roles that TCP plays is to ensure that packets 00:15:57.490 --> 00:15:59.870 can get to their destination. 00:15:59.870 --> 00:16:03.400 And in fact, TCP support something called sequence numbers in addition 00:16:03.400 --> 00:16:05.290 to any fragment identifiers that also allows 00:16:05.290 --> 00:16:09.530 to ensure that data gets to its intended destination. 00:16:09.530 --> 00:16:12.520 And so upon receiving just three of these packets, 00:16:12.520 --> 00:16:16.300 clearly missing fourth, what I, a computer, can do is say, hey Google, 00:16:16.300 --> 00:16:20.091 I need you to send one or more packets because I know I'm missing them, 00:16:20.091 --> 00:16:22.090 because they haven't been properly acknowledged. 00:16:22.090 --> 00:16:26.920 And so, oh, thankfully, Google has retransmitted to me this packet. 00:16:26.920 --> 00:16:31.750 And so now, I have all four, and I can, of course, on my end, 00:16:31.750 --> 00:16:35.830 reassemble albeit with some virtual tape, the cat 00:16:35.830 --> 00:16:41.350 in its final form, which is going to look like-- 00:16:41.350 --> 00:16:48.200 if all of the packets indeed came through the cat in question. 00:16:48.200 --> 00:16:51.260 And because of course, these are all just bits, all just zeros and ones. 00:16:51.260 --> 00:16:53.134 They can certainly be stitched back together, 00:16:53.134 --> 00:16:56.540 so that we never actually know that the splitting happened. 00:16:56.540 --> 00:16:59.360 So, turns out TCP does something a little more. 00:16:59.360 --> 00:17:04.369 Because what if my original request to Google 00:17:04.369 --> 00:17:06.589 went to a server that does multiple things? 00:17:06.589 --> 00:17:08.048 Like Google is obviously a website. 00:17:08.048 --> 00:17:10.672 They have search results, they have email, they have calendars, 00:17:10.672 --> 00:17:11.599 and so much more. 00:17:11.599 --> 00:17:13.640 But they also have email servers, right? 00:17:13.640 --> 00:17:16.400 Gmail itself, not to mention their own employees' e-mails. 00:17:16.400 --> 00:17:19.460 And they probably have chat servers, or video conferencing servers, 00:17:19.460 --> 00:17:20.930 like Google Hangouts and the like. 00:17:20.930 --> 00:17:25.339 So when I originally sent a packet to Google.com, 00:17:25.339 --> 00:17:29.390 it probably needed a little more information than I gave it. 00:17:29.390 --> 00:17:32.750 It probably wasn't sufficient for that original message for me, 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, 00:17:40.640 --> 00:17:45.500 and my own from address, which was again 1.2.3.4. 00:17:45.500 --> 00:17:48.950 I, just for thoroughness, could on this envelope say one of one, 00:17:48.950 --> 00:17:53.510 because it's a pretty small request to just say get cat.jpeg, 00:17:53.510 --> 00:17:56.360 but I probably need a bit more information to make clear to Google 00:17:56.360 --> 00:18:00.800 that this is a request for a web page, not a request for an email, 00:18:00.800 --> 00:18:04.850 or not a chat message, or not certainly a video stream from me. 00:18:04.850 --> 00:18:07.460 And so I'm going to actually append one piece of information. 00:18:07.460 --> 00:18:10.580 I'm going to put literally a colon after Google's IP address, 00:18:10.580 --> 00:18:14.840 and I'm going to go ahead and say 80, the number 80. 00:18:14.840 --> 00:18:19.280 So it turns out that per TCP, the world has standardized 00:18:19.280 --> 00:18:21.950 on certain numbers that represent different services, 00:18:21.950 --> 00:18:23.510 that servers might provide. 00:18:23.510 --> 00:18:27.114 80 means HTTP, Hypertext Transfer Protocol, 00:18:27.114 --> 00:18:29.280 and that's just the language that web servers speak, 00:18:29.280 --> 00:18:32.279 and it's the language that I've been speaking inside of these envelopes. 00:18:32.279 --> 00:18:35.120 So that little message I wrote a moment ago, 00:18:35.120 --> 00:18:37.790 get cat.jpeg, that was an HTTP message. 00:18:37.790 --> 00:18:40.900 And this cat that came back in several parts, that together 00:18:40.900 --> 00:18:42.800 was an HTTP response. 00:18:42.800 --> 00:18:45.920 And so by clarifying on the envelope, this message 00:18:45.920 --> 00:18:48.110 is meant specifically for port 80. 00:18:48.110 --> 00:18:52.610 That is the service, known as HTTP, Google's physical servers know 00:18:52.610 --> 00:18:56.870 we should hand this packet and any others to our web server, 00:18:56.870 --> 00:19:00.787 not to our email server, or chat server, or video server, or the like. 00:19:00.787 --> 00:19:02.120 And it might not actually be 80. 00:19:02.120 --> 00:19:04.880 In fact, odds are these days Google, like many websites, 00:19:04.880 --> 00:19:09.200 is using SSL, or HTTPS, a secure connection, 00:19:09.200 --> 00:19:11.930 and that actually happens to use a different number than 80, 00:19:11.930 --> 00:19:13.385 technically 443. 00:19:13.385 --> 00:19:15.260 You don't tend to see either of these numbers 00:19:15.260 --> 00:19:18.706 because they're just assumed to be the default in modern web browsers, 00:19:18.706 --> 00:19:20.330 but they are there underneath the hood. 00:19:20.330 --> 00:19:22.460 They are there on the virtual envelopes. 00:19:22.460 --> 00:19:23.960 Turns out there's other numbers too. 00:19:23.960 --> 00:19:29.000 E-mail tends to use 25, TCP port 25 and a few others, 00:19:29.000 --> 00:19:32.060 FTP, File Transfer Protocol, and many other protocols all 00:19:32.060 --> 00:19:36.770 have their own numeric port identifiers, and indeed that's all this number is. 00:19:36.770 --> 00:19:41.000 Whether it's 80, 443, or something else, it's a so-called port number. 00:19:41.000 --> 00:19:43.370 So this then is a more representative picture 00:19:43.370 --> 00:19:47.210 of what it is that's going across the internet and coming back to me. 00:19:47.210 --> 00:19:49.250 This is more of the information, though not all 00:19:49.250 --> 00:19:54.380 of it that's going back and forth across the wires, or wirelessly. 00:19:54.380 --> 00:19:57.430 So these things, protocols, IP is Internet Protocol, 00:19:57.430 --> 00:19:59.930 TCP is Transmission Control Protocol. 00:19:59.930 --> 00:20:01.152 What is a protocol? 00:20:01.152 --> 00:20:03.860 Well again, it's just kind of a set of standards, a set of rules. 00:20:03.860 --> 00:20:06.500 And in fact, we humans have protocols. 00:20:06.500 --> 00:20:09.530 And some of them, if you stop to think about it, are a little silly. 00:20:09.530 --> 00:20:13.910 Like in a lot of cultures, when you meet some other human for the first time, 00:20:13.910 --> 00:20:16.700 you do something kind of weird and you extend your a hand 00:20:16.700 --> 00:20:21.180 to shake that person's hand, and then you just 00:20:21.180 --> 00:20:25.200 do this down thing for like a second or two, sometimes longer awkwardly, 00:20:25.200 --> 00:20:27.840 and that somehow completes the transaction. 00:20:27.840 --> 00:20:30.720 Well that's actually what's going on with computers. 00:20:30.720 --> 00:20:35.700 When I send that message originally, get cat.jpeg, Google 00:20:35.700 --> 00:20:39.265 according to the HTTP protocol, Hypertext Transfer Protocol, 00:20:39.265 --> 00:20:41.140 it's going to read that message, and realize, 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 00:20:45.780 --> 00:20:48.285 actually return cat.jpeg. 00:20:48.285 --> 00:20:50.160 And I'm simplifying the format of the message 00:20:50.160 --> 00:20:52.000 because when you're actually searching for results, 00:20:52.000 --> 00:20:54.690 the message actually looks a little more complicated than that. 00:20:54.690 --> 00:20:57.773 But we're assuming we're just getting a very specific cat from the server. 00:20:57.773 --> 00:21:00.722 And according to HTTP, Google's web server, 00:21:00.722 --> 00:21:03.180 because it supports that protocol, it speaks that protocol, 00:21:03.180 --> 00:21:07.230 it speaks human just like I and my colleagues do, 00:21:07.230 --> 00:21:11.070 it knows to respond with one or more envelopes of its own 00:21:11.070 --> 00:21:12.410 containing that cat. 00:21:12.410 --> 00:21:14.160 But there's even more protocols than this. 00:21:14.160 --> 00:21:18.990 There's a UDP, which you don't use quite as often, but actually has value. 00:21:18.990 --> 00:21:22.830 And the biggest difference between UDP and TCP 00:21:22.830 --> 00:21:27.630 is that UDP does not guarantee delivery, and we're guaranteed delivery 00:21:27.630 --> 00:21:30.120 so long as the internet is actually up and running 00:21:30.120 --> 00:21:32.010 between you and some endpoint. 00:21:32.010 --> 00:21:34.840 Why does TCP then guarantee delivery? 00:21:34.840 --> 00:21:38.790 Well, it knows how to respond packets as needed, UDP by definition 00:21:38.790 --> 00:21:39.720 does not do that. 00:21:39.720 --> 00:21:41.400 That is just not a feature you get. 00:21:41.400 --> 00:21:43.810 You can still use it with IP to get data somewhere, 00:21:43.810 --> 00:21:47.292 but it's not necessarily going to come back what you request. 00:21:47.292 --> 00:21:51.560 So why would you ever want to send a request, and maybe or maybe not 00:21:51.560 --> 00:21:53.410 get a response? 00:21:53.410 --> 00:21:55.230 Well sometimes, this is useful. 00:21:55.230 --> 00:22:00.030 Like if-- video conferencing-- if you've ever used FaceTime, or Google Hangouts, 00:22:00.030 --> 00:22:03.370 or Skype, you sometimes see things buffering. 00:22:03.370 --> 00:22:06.810 But if while you're trying to talk to some other human in real time 00:22:06.810 --> 00:22:10.200 so to speak, if the video kept buffering, and kept buffering, 00:22:10.200 --> 00:22:13.470 and kept buffering, and prevented you from seeing that person, 00:22:13.470 --> 00:22:16.380 or hearing them in real time, frankly it would get pretty annoying 00:22:16.380 --> 00:22:18.296 pretty quickly and you just take to your phone 00:22:18.296 --> 00:22:20.370 or take a phone off the wall, an old landline, 00:22:20.370 --> 00:22:24.870 and make a call which is much more synchronous, much more real time. 00:22:24.870 --> 00:22:26.460 But movies of course do this. 00:22:26.460 --> 00:22:29.299 If you're watching Apple TV, or Netflix, or iTunes, or something, 00:22:29.299 --> 00:22:31.590 those videos do tend to buffer because you don't really 00:22:31.590 --> 00:22:33.660 want to miss a few seconds of, or a minute, 00:22:33.660 --> 00:22:36.270 of a movie or some climactic ending. 00:22:36.270 --> 00:22:38.310 But in real time when talking to another human, 00:22:38.310 --> 00:22:43.350 it's not really ideal to just delay the conversation while someone else is 00:22:43.350 --> 00:22:45.030 there on the other end of the line. 00:22:45.030 --> 00:22:47.367 And because there's so many packets going back and forth 00:22:47.367 --> 00:22:49.200 for things like video conferencing, you know 00:22:49.200 --> 00:22:52.590 what, if you drop a few, literally, like if some of those packets 00:22:52.590 --> 00:22:57.050 just kind of get lost, don't worry about it I will infer from context, 00:22:57.050 --> 00:22:59.940 I'll infer from the conversation I'm having what it is I missed 00:22:59.940 --> 00:23:01.087 and we'll just forge ahead. 00:23:01.087 --> 00:23:03.420 Or you know what, I'm just going to say hey, hey, buddy, 00:23:03.420 --> 00:23:07.520 what is it you said, can you repeat that, and he or she can simply oblige. 00:23:07.520 --> 00:23:10.592 So sometimes, when you want the data they keep coming, and keep 00:23:10.592 --> 00:23:12.300 coming, especially when it's high volume, 00:23:12.300 --> 00:23:14.091 you don't want to stop and resend data, you 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. 00:23:17.810 --> 00:23:19.560 And for live video conferencing that might 00:23:19.560 --> 00:23:21.437 make sense, for live sporting events that 00:23:21.437 --> 00:23:24.520 might make sense so that you're not drifting behind the rest of the world. 00:23:24.520 --> 00:23:28.380 So some applications that actually does make good sense. 00:23:28.380 --> 00:23:32.160 But where do these packets keep going as they leave my hand, 00:23:32.160 --> 00:23:35.610 and where are they coming from when they land in my hand? 00:23:35.610 --> 00:23:41.100 Well there's a whole internet out there that uses TCP or UDP, and uses IP, 00:23:41.100 --> 00:23:44.070 but there's a lot of devices between me and Google, me and anyone else 00:23:44.070 --> 00:23:48.837 in the world, that somehow routes that data left, right, top, bottom. 00:23:48.837 --> 00:23:49.920 So how does all that work? 00:23:52.830 --> 00:23:55.650 So we know then that my computer has an IP address, 00:23:55.650 --> 00:23:57.950 and we know that it's of this format. 00:23:57.950 --> 00:24:01.160 And this format, again, is just a number dot a number, dot a number, 00:24:01.160 --> 00:24:04.432 dot a number, and each of those numbers is between zero and 255. 00:24:04.432 --> 00:24:06.390 And we dive in a little deeper, if you remember 00:24:06.390 --> 00:24:11.184 your binary, that actually means that each of those numbers is 8 bits. 00:24:11.184 --> 00:24:13.350 So that's eight, plus eight, plus eight, plus eight. 00:24:13.350 --> 00:24:16.440 So that's 32 bits, and-- hang in there-- 00:24:16.440 --> 00:24:18.630 that means there's two to the 32. 00:24:18.630 --> 00:24:21.840 That's four billion possible IP addresses. 00:24:21.840 --> 00:24:23.760 But I mentioned a bit ago that there's also 00:24:23.760 --> 00:24:26.340 a longer formed format because the world, it turns out, 00:24:26.340 --> 00:24:27.810 is running out of IP addresses. 00:24:27.810 --> 00:24:30.450 Even though there's as many as four billion possible, 00:24:30.450 --> 00:24:33.720 there are so many phones, and people, and laptops, and servers, 00:24:33.720 --> 00:24:37.230 and an internet of things, IoT devices these days, all of which 00:24:37.230 --> 00:24:40.840 need an IP address that frankly, we've been running out for some time. 00:24:40.840 --> 00:24:45.930 And so instead of using this format moving forward, IP Version 4, or v4, 00:24:45.930 --> 00:24:49.350 the world is gradually starting to use IPv6, 00:24:49.350 --> 00:24:54.820 which actually uses 128-bit addresses which are much, much larger. 00:24:54.820 --> 00:24:58.890 If you were to actually multiply this out, if you have two to the 32, 00:24:58.890 --> 00:25:02.290 that's roughly four billion possible IP addresses. 00:25:02.290 --> 00:25:08.070 But if you use not a 32-bit IP address, but a 128-bit IP address, 00:25:08.070 --> 00:25:12.120 it doesn't sound like that much bigger of a number, but this is exponents, 00:25:12.120 --> 00:25:13.170 not just multiplication. 00:25:13.170 --> 00:25:15.870 And so, that is how many IP addresses. 00:25:15.870 --> 00:25:19.410 I can't even pronounce that but the world is now going to have access to. 00:25:19.410 --> 00:25:22.326 So with that said, where can you see this kind of information? 00:25:22.326 --> 00:25:24.450 Well turns out that if you have a Mac for instance, 00:25:24.450 --> 00:25:27.120 you could to go to System Preferences and then Network, 00:25:27.120 --> 00:25:29.760 and then poke around, hopefully without changing anything, 00:25:29.760 --> 00:25:33.900 and you'll see something like this, that you'll see a mention of IPv4, 00:25:33.900 --> 00:25:37.140 and you'll actually see a mention of this protocol using DHCP 00:25:37.140 --> 00:25:41.310 unless for some reason it's been statically hardcoded or configured 00:25:41.310 --> 00:25:42.730 by perhaps someone else. 00:25:42.730 --> 00:25:45.063 And you'll see that at the moment the screenshot suggest 00:25:45.063 --> 00:25:50.250 that I'm connected with IP address 10.0.1.34 00:25:50.250 --> 00:25:53.340 and actually, as it turns out, there's a lot of IP addresses 00:25:53.340 --> 00:25:55.680 that are actually private. 00:25:55.680 --> 00:26:00.750 And so, if you have an address that starts with 10 dot something, 00:26:00.750 --> 00:26:10.620 or an address that starts with 192.168 dot something, or 172.16 dot something, 00:26:10.620 --> 00:26:13.770 turns out your computer is using a private IP address that 00:26:13.770 --> 00:26:18.390 most likely came from a home router, or a business router, or maybe even 00:26:18.390 --> 00:26:22.140 your ISP, but it's private in the sense that only with special configuration 00:26:22.140 --> 00:26:24.000 can someone talk to your computer. 00:26:24.000 --> 00:26:27.609 And this is OK, because generally our phones and our Xboxes, 00:26:27.609 --> 00:26:29.400 and our laptops, and desktops in our homes, 00:26:29.400 --> 00:26:32.970 and generally in our businesses, and schools themselves are not servers. 00:26:32.970 --> 00:26:36.170 People are not trying to contact us directly per se, 00:26:36.170 --> 00:26:37.982 we are trying to contact them. 00:26:37.982 --> 00:26:39.690 And even when someone sends you an email, 00:26:39.690 --> 00:26:43.215 it doesn't go to your own laptop or desktop per se, 00:26:43.215 --> 00:26:47.310 it generally goes to a server like Gmail, or Outlook, or the like, 00:26:47.310 --> 00:26:51.000 and your phone or laptop or desktop connects to that server 00:26:51.000 --> 00:26:52.650 in order to get the information. 00:26:52.650 --> 00:26:55.654 If now on Mac OS, you happened to click on Advanced here, 00:26:55.654 --> 00:26:57.570 you'll see some additional settings and you'll 00:26:57.570 --> 00:27:01.830 see that my IP address is again 10.0.1.34 in this case, 00:27:01.830 --> 00:27:04.620 you'll see a subnet mask which is used to decide whether or not 00:27:04.620 --> 00:27:06.930 some other computer is on the same network as you, 00:27:06.930 --> 00:27:11.850 and then most importantly, you'll see router, sometimes called gateway. 00:27:11.850 --> 00:27:15.090 And in this case, it seems that my gateway has an address, 00:27:15.090 --> 00:27:17.620 or my router has an address of 10.0.1.1. 00:27:17.620 --> 00:27:19.920 So that too of course is an IP address. 00:27:19.920 --> 00:27:23.580 And a router, as the name suggests, is responsible for doing 00:27:23.580 --> 00:27:26.680 this kind of thing, routing data in some direction. 00:27:26.680 --> 00:27:29.100 And if you run Windows, here's what a similar screen might 00:27:29.100 --> 00:27:33.190 look like on that operating system which shows, of course, your IPv4 address, 00:27:33.190 --> 00:27:37.090 and in this case, multiple addresses for DNS servers. 00:27:37.090 --> 00:27:39.510 Router's purpose in life is to be computers 00:27:39.510 --> 00:27:43.110 on the internet that have bunches of wires usually coming into them 00:27:43.110 --> 00:27:45.450 and going out of them, and they have essentially 00:27:45.450 --> 00:27:49.050 kind of a table, like a big list, like an Excel spreadsheet, 00:27:49.050 --> 00:27:52.620 inside of themselves like inside the RAM, Random Access Memory. 00:27:52.620 --> 00:27:56.490 And that table, generally has at least like two columns, conceptually. 00:27:56.490 --> 00:27:59.430 One of which has an IP address or a prefix, 00:27:59.430 --> 00:28:03.000 the first few numbers of an IP address, and then some explanation 00:28:03.000 --> 00:28:06.510 of where data should be routed to if it's destined 00:28:06.510 --> 00:28:08.330 for that IP address or that prefix. 00:28:08.330 --> 00:28:10.080 So maybe if an IP address starts with one, 00:28:10.080 --> 00:28:12.060 it should go that way out that cable. 00:28:12.060 --> 00:28:14.940 Or if it starts with two, it should go that way instead. 00:28:14.940 --> 00:28:18.210 Routers' purpose in life is to route data in some direction 00:28:18.210 --> 00:28:22.600 to some next hop, or that is to say to some next router. 00:28:22.600 --> 00:28:28.320 And so this means that this Mac here with IP address 10.0.1.34 00:28:28.320 --> 00:28:30.540 is preconfigured by DHCP-- 00:28:30.540 --> 00:28:34.650 which again, came from my ISP, or from my university, or company-- 00:28:34.650 --> 00:28:37.560 is going to go to either local computers on the internet 00:28:37.560 --> 00:28:40.170 if I happen to be talking to another Mac or PC 00:28:40.170 --> 00:28:43.140 maybe to transfer file just a few feet or somewhere else 00:28:43.140 --> 00:28:45.030 on campus or in the office. 00:28:45.030 --> 00:28:48.280 But if it's destined for somewhere in the outside world like Google.com, 00:28:48.280 --> 00:28:51.300 well that's where the router comes in, because routers purpose in life 00:28:51.300 --> 00:28:54.680 is to get data toward another destination. 00:28:54.680 --> 00:28:59.930 And my little old laptop frankly doesn't know where in the world Google.com is, 00:28:59.930 --> 00:29:02.930 but maybe this router does because that's its purpose in life. 00:29:02.930 --> 00:29:06.720 And frankly, if that router doesn't know, no big deal. 00:29:06.720 --> 00:29:08.240 There's other routers in the world. 00:29:08.240 --> 00:29:11.900 And so long as that router can route data to some other server, 00:29:11.900 --> 00:29:16.220 well then hopefully that other router can get data closer to its destination. 00:29:16.220 --> 00:29:20.290 And hopefully indeed, within some number of hops, some number of steps, 00:29:20.290 --> 00:29:23.190 transmissions of packets from one router to another to another, 00:29:23.190 --> 00:29:24.690 the data will reach its destination. 00:29:24.690 --> 00:29:28.400 And frankly, generally speaking, data will reach its destination 00:29:28.400 --> 00:29:31.460 within 30 or fewer such hops. 00:29:31.460 --> 00:29:34.760 There will be 30 or fewer routers between me and some destination 00:29:34.760 --> 00:29:38.390 because humans and software have gotten really good at configuring 00:29:38.390 --> 00:29:42.860 the internet dynamically, so that data can route across continents, 00:29:42.860 --> 00:29:46.920 across countries, across oceans even, in order to get from one place to another. 00:29:46.920 --> 00:29:51.180 So if this then is little old me on my laptop here, 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, 00:29:55.850 --> 00:29:59.840 inside of whose door is a whole bunch of servers, well between us 00:29:59.840 --> 00:30:06.080 is the internet, and somehow we're both connected, 00:30:06.080 --> 00:30:10.820 and somehow or other data is going across the internet from me to Google. 00:30:10.820 --> 00:30:13.850 And that's because inside of this internet, 00:30:13.850 --> 00:30:16.880 there's a whole bunch of routers which I'll draw here as dots, 00:30:16.880 --> 00:30:20.630 and each of these routers is controlled by other big internet service 00:30:20.630 --> 00:30:23.420 providers, big companies, maybe even big universities, 00:30:23.420 --> 00:30:26.432 and they all have agreed to connect their routers. 00:30:26.432 --> 00:30:27.890 That's indeed what the internet is. 00:30:27.890 --> 00:30:29.580 It's a network of networks. 00:30:29.580 --> 00:30:32.900 So it's a network of Harvard and MIT's network, and UC Berkeley, 00:30:32.900 --> 00:30:34.820 and Stanford's, and Comcast, and Verizon, 00:30:34.820 --> 00:30:38.540 and all of these very big entities have connections among themselves, 00:30:38.540 --> 00:30:41.180 and each of them have some number of routers. 00:30:41.180 --> 00:30:43.940 And what happens ultimately, is that these routers 00:30:43.940 --> 00:30:47.840 are interconnected with cables, or some kind of satellite 00:30:47.840 --> 00:30:50.600 connectivity, or radio waves, or the like, 00:30:50.600 --> 00:30:56.240 and notice too there's very often multiple ways to go from one location 00:30:56.240 --> 00:30:59.330 to another, and indeed there might be multiple ways 00:30:59.330 --> 00:31:02.390 to reach your destination, depending on which path you take. 00:31:02.390 --> 00:31:03.560 And this is a feature. 00:31:03.560 --> 00:31:07.130 The internet of course, has its origins in US military design, 00:31:07.130 --> 00:31:10.760 and among the goals was to have some resilience against downtime. 00:31:10.760 --> 00:31:14.809 If one or more cities or one or more routers went down for whatever reason, 00:31:14.809 --> 00:31:16.850 that one of the design principles of the internet 00:31:16.850 --> 00:31:19.280 was to be able to route around that issue. 00:31:19.280 --> 00:31:22.310 And so it stands to reason that it's a good thing if data 00:31:22.310 --> 00:31:25.700 can flow from one point to another, but following different intermediate stops. 00:31:25.700 --> 00:31:30.130 Which is to say, when Google sent that cat over the internet back to me, 00:31:30.130 --> 00:31:35.180 that cats four parts might have gone in four different directions, 00:31:35.180 --> 00:31:38.270 but somehow all made their way back to me because the routers know 00:31:38.270 --> 00:31:40.830 how to get data to me again-- 00:31:40.830 --> 00:31:44.240 based on that envelope, based on that IP address-- 00:31:44.240 --> 00:31:47.030 but they might take different paths just because. 00:31:47.030 --> 00:31:48.076 Now what does that mean? 00:31:48.076 --> 00:31:49.700 Well sometimes, the internet gets busy. 00:31:49.700 --> 00:31:52.370 Routers get busy, they get overloaded with lots of packets, 00:31:52.370 --> 00:31:55.340 and so sometimes routers have to say go this way instead. 00:31:55.340 --> 00:31:58.940 Or sometimes, packets-- some things are just so busy that the router just gets 00:31:58.940 --> 00:32:04.370 overwhelmed and it has to literally, but slowly, drop packets on the floor 00:32:04.370 --> 00:32:07.070 so to speak, deleting the packets without ever delivering them, 00:32:07.070 --> 00:32:09.890 at which point, hopefully, if the users are using TCP, 00:32:09.890 --> 00:32:13.910 their computers will retransmit that data so it's not actually a problem. 00:32:13.910 --> 00:32:16.820 And all of this is happening so quickly, that you never 00:32:16.820 --> 00:32:21.500 really notice some of these delays or some of these reroutings, 00:32:21.500 --> 00:32:24.410 and so here might be several paths that data 00:32:24.410 --> 00:32:28.172 takes to get from me to Google.com and maybe a different path back, 00:32:28.172 --> 00:32:30.380 and each of these represents a hop, and each of these 00:32:30.380 --> 00:32:32.280 takes some amount of time. 00:32:32.280 --> 00:32:35.870 So how much time does it take for data to go across the internet? 00:32:35.870 --> 00:32:38.100 Well let's actually take a look. 00:32:38.100 --> 00:32:44.870 I'm going to go ahead here and run a program that is called traceroute. 00:32:44.870 --> 00:32:47.630 And this is going to, per its name, actually allow me 00:32:47.630 --> 00:32:52.640 to trace the route between me and some other computer. 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, 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, 00:33:02.660 --> 00:33:05.976 and I'm going to see some interesting information here. 00:33:05.976 --> 00:33:08.600 Seems to be a little slow at the moment and that's interesting, 00:33:08.600 --> 00:33:11.120 it seems stars probably don't mean good things. 00:33:11.120 --> 00:33:14.000 So let's scroll up here and see what's going on. 00:33:14.000 --> 00:33:17.960 I'm tracing the route to www.google.com, and it turns out parenthetically, 00:33:17.960 --> 00:33:21.620 that is in fact Google's IP address at least at this moment in time 00:33:21.620 --> 00:33:25.220 here on campus, 4.53.56.109. 00:33:25.220 --> 00:33:28.400 So it's not, as it turns out, 5.6.7.8. 00:33:28.400 --> 00:33:29.870 It's that instead. 00:33:29.870 --> 00:33:34.610 And each of these rows of output-- one, two, three, four, five, six-- 00:33:34.610 --> 00:33:37.940 represent a router between me and Google.com. 00:33:37.940 --> 00:33:41.372 So what traceroute does is it sends a message to the first router, 00:33:41.372 --> 00:33:44.330 then a message essentially to the second router, then the third router, 00:33:44.330 --> 00:33:47.240 then the fourth router, and it asks it, one, for its IP address-- 00:33:47.240 --> 00:33:48.380 or it figures it out-- 00:33:48.380 --> 00:33:49.061 or its name. 00:33:49.061 --> 00:33:50.810 In fact, notice that some of these routers 00:33:50.810 --> 00:33:54.470 seem to have somewhat cryptic, but English-like names, 00:33:54.470 --> 00:33:58.430 and it also tells me, traceroute, how many milliseconds it took for the data 00:33:58.430 --> 00:34:01.130 to get from me to that destination. 00:34:01.130 --> 00:34:02.047 Look how fast this is. 00:34:02.047 --> 00:34:05.130 I don't know exactly where all these routers are, but all of these numbers 00:34:05.130 --> 00:34:06.140 are super small. 00:34:06.140 --> 00:34:10.670 3 milliseconds just to get from one point, my computer, to another router. 00:34:10.670 --> 00:34:12.830 Now, you can infer what some of these are. 00:34:12.830 --> 00:34:16.250 I don't know where these IP addresses are, but odds are they're on campus. 00:34:16.250 --> 00:34:19.660 Odds are rows one and two, both of whose IP addresses start with 10, 00:34:19.660 --> 00:34:22.639 are somewhere on campus, routers on campus. 00:34:22.639 --> 00:34:26.449 Step three, I'm very confident that it is one of Harvard's routers 00:34:26.449 --> 00:34:29.750 because it's called Core GW, which I just know by convention means Core 00:34:29.750 --> 00:34:35.090 Gateway or Core router, and it belongs to the faculty of Arts and Sciences 00:34:35.090 --> 00:34:36.710 on Harvard's network. 00:34:36.710 --> 00:34:39.440 Then there's another one also called Core Gateway, which 00:34:39.440 --> 00:34:41.819 is probably somewhere slightly different on campus, 00:34:41.819 --> 00:34:43.610 maybe not the faculty of Arts and Sciences, 00:34:43.610 --> 00:34:45.448 but in the core Harvard network. 00:34:45.448 --> 00:34:47.239 And then it gets a little more interesting. 00:34:47.239 --> 00:34:50.837 Then apparently gets handed off to a bear on rows five and six, 00:34:50.837 --> 00:34:53.670 or two routers whose names have the word bear in it for some reason, 00:34:53.670 --> 00:34:55.469 but odds are they're indeed in Boston-- 00:34:55.469 --> 00:34:57.380 which is not too far here from Harvard-- 00:34:57.380 --> 00:35:02.300 on level three's network which is a very big common ISP, Internet Service 00:35:02.300 --> 00:35:02.900 Provider. 00:35:02.900 --> 00:35:03.770 Level three. 00:35:03.770 --> 00:35:08.210 Now thereafter, for whatever reason, the routers between me and Google 00:35:08.210 --> 00:35:10.094 are not responding to this inquiry. 00:35:10.094 --> 00:35:10.760 And that's fine. 00:35:10.760 --> 00:35:13.400 They might just be configured to ignore this type of request, 00:35:13.400 --> 00:35:14.940 but it's not all that enlightening. 00:35:14.940 --> 00:35:18.490 I just know that it's taking more steps to actually reach Google.com 00:35:18.490 --> 00:35:21.296 because their servers are beyond that sixth router. 00:35:21.296 --> 00:35:22.670 So let's try another destination. 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, 00:35:26.720 --> 00:35:29.210 maybe UC Berkeley who maybe are a little looser when 00:35:29.210 --> 00:35:31.500 it comes to sharing information. 00:35:31.500 --> 00:35:34.940 And let me go ahead and hit Enter now, and wow, just flew by. 00:35:34.940 --> 00:35:38.030 19 steps later, notice what's happened. 00:35:38.030 --> 00:35:40.340 Looks like two of Harvard's nameless routers 00:35:40.340 --> 00:35:45.200 up top, then that ACore router-- this one's a little different-- northeast 00:35:45.200 --> 00:35:48.230 gateway, so it actually took a different route this time off campus. 00:35:48.230 --> 00:35:53.550 Then this border gateway, BDR, probably meaning border also in harvard.edu. 00:35:53.550 --> 00:35:57.710 Row five is some nameless router somewhere else, not sure where. 00:35:57.710 --> 00:36:01.200 Row six is something in northerncrossroads.org. 00:36:01.200 --> 00:36:02.090 Nox.org. 00:36:02.090 --> 00:36:05.609 This is a very big peering point were lots of ISPs interconnect. 00:36:05.609 --> 00:36:07.900 And then we're going to have to take some guesses here. 00:36:07.900 --> 00:36:11.310 Then we have SDN, SW. 00:36:11.310 --> 00:36:13.490 I don't know where this is, but internet2 00:36:13.490 --> 00:36:16.475 is a network, a very high speed network of a lot of universities. 00:36:16.475 --> 00:36:17.310 So that's great. 00:36:17.310 --> 00:36:21.140 It looks like our packet's got on kind of the superhighway 00:36:21.140 --> 00:36:24.315 academically speaking, which is good because it tends to be pretty fast. 00:36:24.315 --> 00:36:26.190 And now, I don't know where all of these are. 00:36:26.190 --> 00:36:28.023 But I'm going to go out on the limb and say, 00:36:28.023 --> 00:36:31.940 you know what, this router in row eight is probably in Chicago just because 00:36:31.940 --> 00:36:33.050 of that abbreviation. 00:36:33.050 --> 00:36:36.740 The next one is as well, rows 10 and 11, maybe 00:36:36.740 --> 00:36:38.990 if you're familiar with US cities, Denver, 00:36:38.990 --> 00:36:42.350 probably there, Las Vegas, these next two, Los Angeles 00:36:42.350 --> 00:36:47.180 here in row 14, 15, probably [? LosLA ?] as well for LAX. 00:36:47.180 --> 00:36:48.950 For whatever reason, system administrators 00:36:48.950 --> 00:36:53.331 have historically often named their routers after airport codes like LAX. 00:36:53.331 --> 00:36:55.580 And then of course, we're in California at that point, 00:36:55.580 --> 00:36:58.520 so it's not all that far from UC Berkeley. 00:36:58.520 --> 00:37:04.130 Up north and indeed, it looks like the official name of UC Berkeley's web 00:37:04.130 --> 00:37:06.740 server is CalWeb for California Web Server. 00:37:06.740 --> 00:37:09.440 Farm, which means a cluster of computers. 00:37:09.440 --> 00:37:12.760 Prod, which means production like the official web servers in use. 00:37:12.760 --> 00:37:15.340 Then ist.berkeley.edu. 00:37:15.340 --> 00:37:18.950 Now it took me way longer to tell this story than for the actual data 00:37:18.950 --> 00:37:20.090 to get from here to there. 00:37:20.090 --> 00:37:22.580 It only took 80 milliseconds for that data 00:37:22.580 --> 00:37:26.720 to get from Cambridge, Massachusetts on the east coast of the US, 00:37:26.720 --> 00:37:29.960 to Berkeley, California, on the west coast of the US, 00:37:29.960 --> 00:37:33.577 and that might take a human like five hours, six hours at least to fly, 00:37:33.577 --> 00:37:36.410 not to mention waiting in the airport and then getting your luggage. 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, 00:37:40.070 --> 00:37:42.590 for instance, it's going to take me 80 milliseconds 00:37:42.590 --> 00:37:46.970 to make that request it would seem, with less than 1/10 of one second. 00:37:46.970 --> 00:37:50.120 And then the cab probably takes about that much time to come back. 00:37:50.120 --> 00:37:51.800 And notice the variability, though. 00:37:51.800 --> 00:37:54.770 Sometimes, routers are a little busier than at other times, 00:37:54.770 --> 00:37:58.877 and so there's variance between all of these various measurements, 00:37:58.877 --> 00:38:00.960 and each of these, to be clear, is not cumulative. 00:38:00.960 --> 00:38:02.168 So they might go up and down. 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. 00:38:06.215 --> 00:38:09.090 You don't just keep adding them, you keep looking back at the origin. 00:38:09.090 --> 00:38:11.640 So about 80 milliseconds in total. 00:38:11.640 --> 00:38:14.810 Well let's try another one, one that's a little closer to home here. 00:38:14.810 --> 00:38:19.490 Traceroute www.mit.edu, which is also in Cambridge. 00:38:19.490 --> 00:38:20.420 Already done. 00:38:20.420 --> 00:38:22.910 Also in Cambridge, Massachusetts, only eight 00:38:22.910 --> 00:38:25.850 hops away, eight routers between us, and indeed we 00:38:25.850 --> 00:38:29.600 seem to be going through Harvard's Core network again 00:38:29.600 --> 00:38:31.790 then we get connected to Quest, another ISP, 00:38:31.790 --> 00:38:34.370 and this is actually kind of interesting. 00:38:34.370 --> 00:38:38.750 It looks like my data is making a little stop in New York City 00:38:38.750 --> 00:38:40.940 if these names are to be believed. 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, 00:38:44.590 --> 00:38:47.250 but akamaitechnologies.com. 00:38:47.250 --> 00:38:49.580 So this is interesting, and my inference here 00:38:49.580 --> 00:38:53.060 is that MIT has probably outsourced parts of its website 00:38:53.060 --> 00:38:57.260 to a company called Akamai, which ironically is themselves based 00:38:57.260 --> 00:38:59.370 in Cambridge itself, but their servers seem 00:38:59.370 --> 00:39:02.270 to be in New York City or thereabouts, and it 00:39:02.270 --> 00:39:06.470 seems that MIT is essentially using them as some kind of CDN, Content Delivery 00:39:06.470 --> 00:39:10.280 Network, which is indeed Akamai's business to host MIT'S website. 00:39:10.280 --> 00:39:14.420 So even though I think of MIT as being walkable from this theater here just 00:39:14.420 --> 00:39:17.300 down the road, their servers can certainly be somewhere else. 00:39:17.300 --> 00:39:21.020 And thanks to DNS, Domain Name System, and thanks to these routers, 00:39:21.020 --> 00:39:24.710 nonetheless can my laptop reach MIT'S web servers really wherever 00:39:24.710 --> 00:39:26.180 they are in the world. 00:39:26.180 --> 00:39:29.180 And in this case, they're only six milliseconds away. 00:39:29.180 --> 00:39:33.650 So not necessarily as compelling when I can still walk to MIT pretty quickly, 00:39:33.650 --> 00:39:37.100 but six milliseconds is certainly faster than the six minutes 00:39:37.100 --> 00:39:41.330 it might take me to drive, or the half hour it might take me to walk. 00:39:41.330 --> 00:39:43.160 And what about places even farther? 00:39:43.160 --> 00:39:48.380 What if I am interested in the news somewhere abroad relative to here? 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 00:39:55.400 --> 00:39:59.810 and what I presume is CNN's Japanese web server for news. 00:39:59.810 --> 00:40:04.520 And here, we again see the data leaving Harvard's routers in steps 00:40:04.520 --> 00:40:06.250 one, and two, and three, and four. 00:40:06.250 --> 00:40:08.309 Seven didn't really answer, it seems. 00:40:08.309 --> 00:40:11.100 And then it got a little private, didn't really respond thereafter. 00:40:11.100 --> 00:40:15.170 But notice something interesting here is going on. 00:40:15.170 --> 00:40:18.260 Somewhere among these first few steps, I'm 00:40:18.260 --> 00:40:21.029 going through internet2, which is encouraging 00:40:21.029 --> 00:40:22.820 because that's a fast connection typically, 00:40:22.820 --> 00:40:27.050 then a nameless router, step 7, can't quite make sense of all of these. 00:40:27.050 --> 00:40:31.040 But maybe SEA is Seattle if those airport codes are to be believed. 00:40:31.040 --> 00:40:33.320 And then, wow, notice this gap. 00:40:33.320 --> 00:40:36.170 We're starting at like less than one millisecond, 00:40:36.170 --> 00:40:40.160 less than one millisecond, one millisecond, 20 milliseconds, then 85, 00:40:40.160 --> 00:40:45.560 then 106, then like 193, from 213, 191. 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. 00:40:48.770 --> 00:40:50.728 It doesn't look like just the routers are busy, 00:40:50.728 --> 00:40:53.600 it seems to persist because getting to each subsequent router 00:40:53.600 --> 00:40:56.480 takes about the same amount of time. 00:40:56.480 --> 00:40:59.660 Why is my connection so much slower all of a sudden? 00:40:59.660 --> 00:41:05.010 Why is it taking so long between steps nine and 10? 00:41:05.010 --> 00:41:06.340 Well, Seattle, where is that? 00:41:06.340 --> 00:41:12.390 That happens to be on the far west coast of the US, 00:41:12.390 --> 00:41:17.220 and maybe Osaka, Japan is right there across-- 00:41:17.220 --> 00:41:19.350 what-- Pacific Ocean? 00:41:19.350 --> 00:41:22.770 And so it would seem that between steps nine and 10, 00:41:22.770 --> 00:41:28.030 maybe there's a really being body of water between these two routers, 00:41:28.030 --> 00:41:31.260 and that explains why all of a sudden there's so much of a delay. 00:41:31.260 --> 00:41:34.950 And indeed, the internet of course spans the globe these days. 00:41:34.950 --> 00:41:39.150 It spans oceans, either through big trans-Atlantic, trans-Pacific, 00:41:39.150 --> 00:41:43.020 trans-oceanic cables that are laid down by really large ships, 00:41:43.020 --> 00:41:45.840 or maybe it's via satellite, or microwave, or other technologies. 00:41:45.840 --> 00:41:48.090 The world is so incredibly interconnected, 00:41:48.090 --> 00:41:54.270 but you can see visually how those interconnections are laid out, 00:41:54.270 --> 00:41:56.130 and where they actually are. 00:41:56.130 --> 00:42:01.230 In fact, thanks to this animation, we can see even more visually 00:42:01.230 --> 00:42:04.986 what the internet looks like around the whole world. 00:42:04.986 --> 00:43:05.580 [MUSIC PLAYING] 00:43:05.580 --> 00:43:06.080 All right. 00:43:06.080 --> 00:43:07.470 Demonstration time. 00:43:07.470 --> 00:43:11.270 So within your home, or campus, or office, we had a number of devices, 00:43:11.270 --> 00:43:15.420 and one of them was like a cable modem, or DSL modem, or a FiOS device. 00:43:15.420 --> 00:43:17.000 So what does that device look like? 00:43:17.000 --> 00:43:20.600 Well if you have a cable modem, maybe from a company like Comcast whose brand 00:43:20.600 --> 00:43:23.270 name is Xfinity, you might have a device like this, 00:43:23.270 --> 00:43:25.680 and it usually stands up on your counter like this. 00:43:25.680 --> 00:43:28.320 It's got some blinking lights in front, and in the back 00:43:28.320 --> 00:43:29.970 are a whole bunch of connectors. 00:43:29.970 --> 00:43:31.220 Now what are these connectors? 00:43:31.220 --> 00:43:33.920 Well the biggest of them, and frankly the oldest one of them, 00:43:33.920 --> 00:43:37.280 is this metal thing here which is a coaxial connector, 00:43:37.280 --> 00:43:41.270 and this is what's long been used for TV antennas and cable connections 00:43:41.270 --> 00:43:43.310 for your own TV into the wall. 00:43:43.310 --> 00:43:45.770 And the kind of cable that you might use to plug into that 00:43:45.770 --> 00:43:49.430 generally is pretty thick, and it's got a cylindrical end, and a little pin 00:43:49.430 --> 00:43:52.860 in the middle, and it's often kind of annoying to screw the thing in there. 00:43:52.860 --> 00:43:54.800 But if you have a cable modem, odds are you've 00:43:54.800 --> 00:43:58.700 got a jack that looks also like this somewhere on one of your walls, maybe 00:43:58.700 --> 00:44:02.750 near your actual TV, and what you really just need is a cable like this. 00:44:02.750 --> 00:44:05.990 One and it goes into the cable modem, the other end goes into the wall, 00:44:05.990 --> 00:44:08.990 and that's a haul physically you need in terms of a connection 00:44:08.990 --> 00:44:13.522 to the wall beyond, of course, the power cable which would plug into down here. 00:44:13.522 --> 00:44:15.480 And those are going to vary based on the model. 00:44:15.480 --> 00:44:17.900 But there's some interesting ports up top here too. 00:44:17.900 --> 00:44:20.720 There's some phone jacks it seems, because it turns out 00:44:20.720 --> 00:44:24.470 that a lot of internet service providers these days, especially those 00:44:24.470 --> 00:44:29.810 who have digital's support for not just internet services but also TV 00:44:29.810 --> 00:44:33.350 and phone, you can actually plug one or two landline telephones in here 00:44:33.350 --> 00:44:35.030 and get telephone service. 00:44:35.030 --> 00:44:37.670 And then below that are four jacks that look pretty similar, 00:44:37.670 --> 00:44:40.010 but they're actually a bit wider, a bit fatter. 00:44:40.010 --> 00:44:44.540 And so these phone jacks, if you never knew are called RJ11 connectors, 00:44:44.540 --> 00:44:48.319 and that is what, historically, you would plug into the wall of your home 00:44:48.319 --> 00:44:49.610 or now the back of this device. 00:44:49.610 --> 00:44:52.340 And these other bigger ones are RJ45 jacks 00:44:52.340 --> 00:44:54.860 into which you plug generally the ethernet cables, which 00:44:54.860 --> 00:44:56.600 is the name given to network cables. 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, 00:45:01.040 --> 00:45:03.724 you would have one of these RJ11 connectors, super small, 00:45:03.724 --> 00:45:06.140 and you'd plug that into the phone and then into the wall, 00:45:06.140 --> 00:45:07.430 or the back of this device. 00:45:07.430 --> 00:45:10.760 Meanwhile though, you might have a ethernet cable, 00:45:10.760 --> 00:45:12.080 which is a little wider. 00:45:12.080 --> 00:45:14.942 So whereas the phone connector might look like this-- 00:45:14.942 --> 00:45:17.150 yeah-- ethernet connector is going to look like that, 00:45:17.150 --> 00:45:21.750 and you can probably tell here just how much bigger one is than the other. 00:45:21.750 --> 00:45:23.930 And so inside of those cables are just a whole bunch 00:45:23.930 --> 00:45:27.890 of wires that actually allow the electricity to flow, the electrons 00:45:27.890 --> 00:45:30.920 traveling across them copper wires from this device into the wall. 00:45:30.920 --> 00:45:35.030 And from there, Comcast, or Time Warner, or whoever your internet service 00:45:35.030 --> 00:45:38.460 provider takes care of the technology there on out. 00:45:38.460 --> 00:45:41.052 But what you can plug into this device via those cables-- 00:45:41.052 --> 00:45:43.010 not the phone cables, but the ethernet cables-- 00:45:43.010 --> 00:45:46.130 is your desktop computer, your Xbox, or some other devices 00:45:46.130 --> 00:45:47.660 that use wired internet. 00:45:47.660 --> 00:45:52.220 Or if your cable modem has, like this one does, Wi-Fi support, 00:45:52.220 --> 00:45:55.460 wireless capabilities, and even though there aren't antennas on this one, 00:45:55.460 --> 00:45:58.190 they're actually inside the case, which frankly might partly 00:45:58.190 --> 00:45:59.910 explain why this thing is so darn big. 00:45:59.910 --> 00:46:03.830 There's absolutely no good reason that these devices need to be this large, 00:46:03.830 --> 00:46:09.290 but this device happens to be not just a cable modem, but also a home router 00:46:09.290 --> 00:46:13.040 inside of which is support for DNS and DHCP. 00:46:13.040 --> 00:46:15.030 It also has Wi-Fi capabilities. 00:46:15.030 --> 00:46:18.440 So you don't actually need, with this cable modem, a second device. 00:46:18.440 --> 00:46:20.870 You don't need your own Wi-Fi device in the house. 00:46:20.870 --> 00:46:23.390 You can get all of that from your ISP. 00:46:23.390 --> 00:46:27.907 Now if you have FiOS, another technology that's in some cities here and abroad, 00:46:27.907 --> 00:46:29.990 you might have a device that looks pretty similar. 00:46:29.990 --> 00:46:31.948 This one, frankly, looks a little more elegant, 00:46:31.948 --> 00:46:34.400 and it probably has very similar jacks on the back. 00:46:34.400 --> 00:46:38.540 Some kind of coaxial connector that goes into the wall, and from there, Verizon 00:46:38.540 --> 00:46:43.160 or whoever your provider is might take it from there, Frontier in this case, 00:46:43.160 --> 00:46:46.040 and then you might again have some RJ45 jacks 00:46:46.040 --> 00:46:50.990 that allow you to connect devices in your home to this very device. 00:46:50.990 --> 00:46:52.850 But not all devices are this big. 00:46:52.850 --> 00:46:56.360 Here is another cable modem made by a company called Netgear, 00:46:56.360 --> 00:46:57.220 and it's this small. 00:46:57.220 --> 00:47:02.600 So case in point, ridiculous, not necessary, same technology, 00:47:02.600 --> 00:47:03.559 much smaller. 00:47:03.559 --> 00:47:06.350 Much smaller form factor, so the hardware that's inside this device 00:47:06.350 --> 00:47:07.850 is obviously much smaller. 00:47:07.850 --> 00:47:11.210 But we still see the coaxial connector, some kind of power connector there, 00:47:11.210 --> 00:47:14.300 just one jack for an ethernet cable, but that's probably fine 00:47:14.300 --> 00:47:18.510 so long as you have another device, a home router, or a switch 00:47:18.510 --> 00:47:19.550 to connect it to. 00:47:19.550 --> 00:47:23.330 Indeed, if you simply want to provide your home with a bunch more wired 00:47:23.330 --> 00:47:25.210 jacks, you might use something like this. 00:47:25.210 --> 00:47:26.930 So this is a Cisco Linksys this device. 00:47:26.930 --> 00:47:28.013 It's a pretty dumb device. 00:47:28.013 --> 00:47:31.790 It's just a switch that's got a whole bunch of those RJ45 connectors. 00:47:31.790 --> 00:47:36.030 So you plug one of these into your cable modem, or into your home router, 00:47:36.030 --> 00:47:38.750 and then you can plug up to seven other devices into this device, 00:47:38.750 --> 00:47:41.600 thereby creating kind of a mesh network among those many devices. 00:47:41.600 --> 00:47:44.540 And this switch simply switches data, switches 00:47:44.540 --> 00:47:48.530 traffic among the several ports based on who's talking to who. 00:47:48.530 --> 00:47:52.760 Or, you might have something a little beefier that looks pretty darn amazing, 00:47:52.760 --> 00:47:53.840 I must say. 00:47:53.840 --> 00:47:55.590 Very geometric these days. 00:47:55.590 --> 00:47:58.370 This one also made by a company called Linksys, owned by Cisco. 00:47:58.370 --> 00:48:00.440 This might have these antennas on back, which 00:48:00.440 --> 00:48:02.360 suggests that this has Wi-Fi support. 00:48:02.360 --> 00:48:05.570 This device happens to be a home router, and it also 00:48:05.570 --> 00:48:08.300 has firewalling capabilities, Wi-Fi capabilities, 00:48:08.300 --> 00:48:09.920 and switching capabilities. 00:48:09.920 --> 00:48:13.520 Indeed, in back, it has not just a connection for your home 00:48:13.520 --> 00:48:17.120 router, or rather your cable modem, or your FiOS device to plug into, 00:48:17.120 --> 00:48:20.810 it also has a few, but not as many, ethernet jacks, or RJ45 00:48:20.810 --> 00:48:23.430 jacks for your several devices. 00:48:23.430 --> 00:48:27.170 So which devices you need entirely depends on your own situation, 00:48:27.170 --> 00:48:30.170 and odds are the first person to ask is your internet service provider. 00:48:30.170 --> 00:48:32.750 Increasingly these days are internet service providers 00:48:32.750 --> 00:48:35.567 bringing you, or selling you, or renting you a device that 00:48:35.567 --> 00:48:36.650 takes care of all of this. 00:48:36.650 --> 00:48:40.280 So odds are you just need these days one device, and not several, 00:48:40.280 --> 00:48:43.310 but sometimes you might get something lower profile like this one here, 00:48:43.310 --> 00:48:45.726 and maybe you'd buy it yourself and plug it into the wall, 00:48:45.726 --> 00:48:48.000 and all your ISP does is take it from there. 00:48:48.000 --> 00:48:51.220 They don't give you any devices for your own home, 00:48:51.220 --> 00:48:54.530 so you might have to wire some of this up together on your own. 00:48:54.530 --> 00:48:58.640 Now at the end of the day though, it is all kind of pretty simple, 00:48:58.640 --> 00:49:01.430 whether your cable is this to connect your various devices, 00:49:01.430 --> 00:49:04.310 or this, the coaxial connector, or even this, which 00:49:04.310 --> 00:49:09.350 is a fiber optic cable which essentially has little strands across which 00:49:09.350 --> 00:49:13.910 light travel even faster than electrons across these copper wires. 00:49:13.910 --> 00:49:18.790 Inside of many of these cables, like this one here, is just a bunch of wires 00:49:18.790 --> 00:49:20.540 and they're actually pretty cheap devices. 00:49:20.540 --> 00:49:24.110 And in fact, I thought it'd be fun to maybe get our hands dirty here 00:49:24.110 --> 00:49:26.810 with a cable that hopefully I won't need any more, 00:49:26.810 --> 00:49:29.630 and see if we can't see inside this here thing. 00:49:29.630 --> 00:49:33.140 So wouldn't necessarily do this more than once 00:49:33.140 --> 00:49:38.680 because scissors aren't going to work very well on this one. 00:49:38.680 --> 00:49:42.070 And actually, we can see what's starting to happen before I even finish. 00:49:42.070 --> 00:49:45.730 Notice that as I pull back, the blue part of the cable, which is really 00:49:45.730 --> 00:49:50.350 just a rubbery sheath, you can see that there's eight different wires in there, 00:49:50.350 --> 00:49:52.510 two of which I've cut, so hopefully those 00:49:52.510 --> 00:49:54.850 were the bomb diffusing wires I cut. 00:49:54.850 --> 00:50:00.020 If we just keep pulling, you can see a lot of the wires inside. 00:50:00.020 --> 00:50:02.440 And these wires all are different colors. 00:50:02.440 --> 00:50:05.050 Some of them are striped, some of them are solid, some of them 00:50:05.050 --> 00:50:07.630 have been cut so they're shorter than others, and so 00:50:07.630 --> 00:50:10.720 long as the right colors on this end line 00:50:10.720 --> 00:50:13.960 up with the right colors on this end, your two devices 00:50:13.960 --> 00:50:17.140 will be able to talk because some of these wires are used for transmission, 00:50:17.140 --> 00:50:19.090 some of them are used for receiving, some of them 00:50:19.090 --> 00:50:20.631 might not technically be used at all. 00:50:20.631 --> 00:50:24.190 They're really used for insulation and cancellation of what might otherwise 00:50:24.190 --> 00:50:25.270 be interference. 00:50:25.270 --> 00:50:27.970 So inside of here is pretty simple technology, 00:50:27.970 --> 00:50:29.830 and much like we've seen in other contexts 00:50:29.830 --> 00:50:33.290 is there's just this layering, and layering, and layering of complexity 00:50:33.290 --> 00:50:36.370 so that at the end of the day, this is what's carrying your data, 00:50:36.370 --> 00:50:40.600 but there's just so much software and so many interesting advanced ideas on top 00:50:40.600 --> 00:50:44.710 of it, all of which ultimately make the internet work. 00:50:44.710 --> 00:50:45.970 Now how about some homework? 00:50:45.970 --> 00:50:49.100 So your homework for tonight, perhaps, is when you go back home, 00:50:49.100 --> 00:50:51.370 whether it's your house, or your dorm, or maybe 00:50:51.370 --> 00:50:53.932 your company if you're staying late, find a device that 00:50:53.932 --> 00:50:55.390 looks a little something like this. 00:50:55.390 --> 00:50:57.730 Maybe it's your cable modem, or your FiOS device, 00:50:57.730 --> 00:51:01.000 or maybe it's your home router, or maybe it's someone else's home router, 00:51:01.000 --> 00:51:03.790 and turn it around carefully, take a look at the various, 00:51:03.790 --> 00:51:07.960 connectors on the back see if you don't recognize some of the various shapes, 00:51:07.960 --> 00:51:11.037 and some of the various labels, and some of the, ultimately, technologies 00:51:11.037 --> 00:51:12.370 that we've been discussing here. 00:51:12.370 --> 00:51:15.910 If you really want to be brazen, go ahead and hold your breath 00:51:15.910 --> 00:51:19.640 and unplug everything, and see if you can, via a bit of pattern matching, 00:51:19.640 --> 00:51:20.890 plug everything back together. 00:51:20.890 --> 00:51:24.130 Of course in the process, you'll take down your entire internet most likely, 00:51:24.130 --> 00:51:26.780 or your company's, or your neighbor's, in fact very much, 00:51:26.780 --> 00:51:28.630 possibly your neighbor's as well. 00:51:28.630 --> 00:51:31.840 And that's OK if you're sort of confident you can reassemble that. 00:51:31.840 --> 00:51:34.960 I mean, if you're really daring, and you have an extra ethernet 00:51:34.960 --> 00:51:37.470 cable lying around, go to town on one of these things here. 00:51:37.470 --> 00:51:39.970 You're not really going to be able to put this back together 00:51:39.970 --> 00:51:42.370 without special hardware and a spare little clip, 00:51:42.370 --> 00:51:45.580 but that would be the extreme form of getting your hands dirty here 00:51:45.580 --> 00:51:48.300 with the internet.