WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000 00:00:05.152 --> 00:00:07.360 DOUG LLOYD: If you watched our internet primer video, 00:00:07.360 --> 00:00:10.020 I left a bit of a cliffhanger by talking about the internet 00:00:10.020 --> 00:00:11.857 and how it's a system of protocols. 00:00:11.857 --> 00:00:14.190 Well, let's talk about the first of those protocols that 00:00:14.190 --> 00:00:15.710 actually comprises the internet. 00:00:15.710 --> 00:00:18.490 And interestingly enough, it's called the Internet Protocol, 00:00:18.490 --> 00:00:20.960 which we usually refer to as IP. 00:00:20.960 --> 00:00:24.810 >> So the internet, as I said, is an interconnected network, an internet, 00:00:24.810 --> 00:00:28.990 which is really just several networks woven together and agreeing somehow 00:00:28.990 --> 00:00:31.490 to communicate with one another. 00:00:31.490 --> 00:00:33.220 What is this somehow I'm talking about? 00:00:33.220 --> 00:00:34.720 Well, this is the Internet Protocol. 00:00:34.720 --> 00:00:39.190 This dictates how information is transmitted from point A to point B. 00:00:39.190 --> 00:00:43.410 And this is sort of a condition of joining the network of the internet 00:00:43.410 --> 00:00:45.830 is agreeing to follow this protocol when information needs 00:00:45.830 --> 00:00:49.330 to be moved from point A to point B. 00:00:49.330 --> 00:00:51.700 >> So at the very end of that internet primer video, 00:00:51.700 --> 00:00:55.320 I showed this image of what the internet was. 00:00:55.320 --> 00:00:58.649 And on a small scale, this is actually probably pretty accurate. 00:00:58.649 --> 00:01:01.190 This might be how three networks actually talk to each other. 00:01:01.190 --> 00:01:02.570 But it's a bit misleading. 00:01:02.570 --> 00:01:04.845 And the reason it's a bit misleading is because-- if I 00:01:04.845 --> 00:01:07.220 just number the networks for the sake of convenience here 00:01:07.220 --> 00:01:10.350 and we get rid of everything else and just focus on the networks-- 00:01:10.350 --> 00:01:13.750 it's a bit misleading because it implies that all three network have 00:01:13.750 --> 00:01:15.280 a connection to one another. 00:01:15.280 --> 00:01:16.365 >> One is connected to two. 00:01:16.365 --> 00:01:17.610 Two is connected to three. 00:01:17.610 --> 00:01:18.990 And three is connected to one. 00:01:18.990 --> 00:01:20.823 And when I talk about a connection here, I'm 00:01:20.823 --> 00:01:23.920 talking about a physical, wired connection. 00:01:23.920 --> 00:01:25.170 We do have wireless. 00:01:25.170 --> 00:01:28.390 But it's really impractical for data to be transmitted wirelessly 00:01:28.390 --> 00:01:29.440 over a large scale. 00:01:29.440 --> 00:01:35.200 And so at some point, we really do rely on wired technology-- telephone wires, 00:01:35.200 --> 00:01:39.980 fiber optic wires, various technologies that are physically connecting 00:01:39.980 --> 00:01:41.560 point A to point B. 00:01:41.560 --> 00:01:44.110 >> And on a small scale like this-- this might be accurate, 00:01:44.110 --> 00:01:46.480 but as the image gets a little bigger, let's now 00:01:46.480 --> 00:01:49.410 imagine we have six different networks. 00:01:49.410 --> 00:01:52.740 If that's true, now we have something like this for every network 00:01:52.740 --> 00:01:55.100 to be connected to every other network. 00:01:55.100 --> 00:01:58.540 And if you look, every network has five arrows connected to it. 00:01:58.540 --> 00:02:01.450 So everything is connected to every other network. 00:02:01.450 --> 00:02:05.840 >> We only have six networks here, and already look at how much wiring 00:02:05.840 --> 00:02:08.630 we have to employ, right? 00:02:08.630 --> 00:02:12.650 And the internet consists of a lot more than six networks. 00:02:12.650 --> 00:02:17.410 We can't afford to wire each network to each other network, 00:02:17.410 --> 00:02:20.940 especially considering some of these networks span oceans, right? 00:02:20.940 --> 00:02:23.810 If we're trying to connect to a network in Asia or in Europe, 00:02:23.810 --> 00:02:27.502 we're going to have to span an entire ocean. 00:02:27.502 --> 00:02:29.460 We're going to need to use wires at some point, 00:02:29.460 --> 00:02:33.900 but we want to minimize the number of wires we actually use. 00:02:33.900 --> 00:02:36.690 We don't want to send a million wires across the ocean, 00:02:36.690 --> 00:02:40.700 because they cost millions of dollars apiece to lie down. 00:02:40.700 --> 00:02:44.430 And so rapidly, we wouldn't be able to afford the internet anymore. 00:02:44.430 --> 00:02:47.080 So we have to have another way for every network 00:02:47.080 --> 00:02:49.730 to talk to every other network or else we 00:02:49.730 --> 00:02:51.784 have pieces of the internet that are disconnected 00:02:51.784 --> 00:02:53.200 from other pieces of the internet. 00:02:53.200 --> 00:02:55.150 And that's not what we want. 00:02:55.150 --> 00:02:57.890 But we don't want to have them all wired together. 00:02:57.890 --> 00:03:00.760 >> And this is where routers come back into play. 00:03:00.760 --> 00:03:02.870 We can use routers in the following way. 00:03:02.870 --> 00:03:05.150 What if instead of every network being physically 00:03:05.150 --> 00:03:09.700 connected to every other network, we had these intermediary pieces, where 00:03:09.700 --> 00:03:12.460 the networks were connected to these intermediaries, which 00:03:12.460 --> 00:03:14.840 are connected to a few networks. 00:03:14.840 --> 00:03:19.290 So instead of having one connect to two, three, four, five, six, maybe one 00:03:19.290 --> 00:03:21.360 connects to a router, which maybe connects 00:03:21.360 --> 00:03:23.840 to one or two of those networks, but also 00:03:23.840 --> 00:03:25.850 maybe connects to other routers, which also 00:03:25.850 --> 00:03:28.510 will connect to those other networks. 00:03:28.510 --> 00:03:31.160 >> And the router's job is-- it contains information 00:03:31.160 --> 00:03:34.620 called a routing table that dictates where do 00:03:34.620 --> 00:03:37.250 I go if I see a particular IP address? 00:03:37.250 --> 00:03:41.080 If I see an IP address starting with four, I'm going to go this way. 00:03:41.080 --> 00:03:45.250 If I seen IP address starting with a 12, I'm going to go that way. 00:03:45.250 --> 00:03:49.230 We don't need to be connected physically to network number four 00:03:49.230 --> 00:03:52.010 or network number 12 in this example. 00:03:52.010 --> 00:03:53.941 We just know generally where we want to go. 00:03:53.941 --> 00:03:57.190 And if you think about it, this is sort of similar to the concept of recursion 00:03:57.190 --> 00:03:59.445 that we talked about when we were talking about it 00:03:59.445 --> 00:04:04.060 in C. I'm not going to connect you to exactly where you want to go. 00:04:04.060 --> 00:04:08.130 I'm just going to move you one step closer to where you want to go. 00:04:08.130 --> 00:04:11.739 And I'll let somebody else deal with solving the rest of the problem. 00:04:11.739 --> 00:04:14.780 I'll just solve this little piece of the problem and defer the rest of it 00:04:14.780 --> 00:04:15.940 to somebody else. 00:04:15.940 --> 00:04:19.240 So routing information is actually kind of similar to recursion. 00:04:19.240 --> 00:04:24.010 If that's a concept that you understand well, maybe that analogy would help. 00:04:24.010 --> 00:04:26.950 >> So let's take a look at this networking example 00:04:26.950 --> 00:04:30.130 again and assume that, again, we're going to use those same six 00:04:30.130 --> 00:04:31.470 networks, one through six. 00:04:31.470 --> 00:04:34.220 So let's just say that every IP address on network one 00:04:34.220 --> 00:04:36.200 starts with one dot something. 00:04:36.200 --> 00:04:38.800 And we'll say that there's some other thing that 00:04:38.800 --> 00:04:42.110 deals with how all the systems are connected to network one. 00:04:42.110 --> 00:04:46.000 We just care about connecting all of those networks together in an internet. 00:04:46.000 --> 00:04:49.350 So every device that is connected to network one 00:04:49.350 --> 00:04:53.460 has an IP address that starts with one dot and then three other numbers. 00:04:53.460 --> 00:04:56.300 >> This is a generalization of the way things actually work. 00:04:56.300 --> 00:04:58.260 It's quite a bit more precise than this. 00:04:58.260 --> 00:05:00.760 But this should give you a general idea of what the Internet 00:05:00.760 --> 00:05:02.637 Protocol is actually doing. 00:05:02.637 --> 00:05:04.220 So this was the diagram we had before. 00:05:04.220 --> 00:05:06.410 This was the system that was not sustainable. 00:05:06.410 --> 00:05:07.760 Even six, this might be OK. 00:05:07.760 --> 00:05:11.990 But if we get to 10 or 20 or 50, we're going to be lying a lot of wires. 00:05:11.990 --> 00:05:15.139 And 50 is still also not even the tip of the iceberg 00:05:15.139 --> 00:05:16.680 as to the number of networks we have. 00:05:16.680 --> 00:05:18.510 So this model is unsustainable. 00:05:18.510 --> 00:05:20.660 We can't stick with this. 00:05:20.660 --> 00:05:23.200 >> So let's instead adopt this model where we get rid 00:05:23.200 --> 00:05:28.030 of all the wires between the networks and we add routers. 00:05:28.030 --> 00:05:30.210 So these yellow boxes represent routers. 00:05:30.210 --> 00:05:32.550 And their job is to move information generally 00:05:32.550 --> 00:05:36.040 closer to where it's supposed to go. 00:05:36.040 --> 00:05:40.330 And maybe these are the connections that these networks have. 00:05:40.330 --> 00:05:43.670 And maybe these are the tables that are built into the routers. 00:05:43.670 --> 00:05:47.870 >> So if we just start by looking at network one, for example, 00:05:47.870 --> 00:05:50.450 basically what it says is if I ever see an address that 00:05:50.450 --> 00:05:54.300 doesn't start with a one-- that's what the exclamation point one or the bang 00:05:54.300 --> 00:05:58.550 one there, not one-- I'm going to pass it off to a router. 00:05:58.550 --> 00:06:00.680 And from there, the router can make a decision. 00:06:00.680 --> 00:06:04.570 The router says if I see a one, I'm going to move to network number one. 00:06:04.570 --> 00:06:07.610 That's the green arrow heading to the left out of that top left box. 00:06:07.610 --> 00:06:09.660 >> If I see a two-- that's the arrow sort of heading 00:06:09.660 --> 00:06:11.950 to the top right towards the purple network-- 00:06:11.950 --> 00:06:14.920 if I see an IP address starting with a two, 00:06:14.920 --> 00:06:16.920 I'm going to go towards the two network. 00:06:16.920 --> 00:06:21.250 If I see a three, a four, a five, or a six-- that's that red arrow coming out 00:06:21.250 --> 00:06:25.800 of the top left router-- I'm not connected to three, four, five, or six. 00:06:25.800 --> 00:06:28.897 But I know somebody who is or who's a little bit closer to there. 00:06:28.897 --> 00:06:31.230 So I'm just going to say, every time I see an IP address 00:06:31.230 --> 00:06:33.810 starting with three, four, five, or six, I'm just 00:06:33.810 --> 00:06:35.250 going to send it to that router. 00:06:35.250 --> 00:06:38.090 So I'll move it a little closer to where it's supposed to go and let 00:06:38.090 --> 00:06:39.830 that router deal with the problem. 00:06:39.830 --> 00:06:42.980 >> And as you can see-- if you wanted to pause here and trace-- 00:06:42.980 --> 00:06:47.600 you can get to every other point in the network from wherever you are. 00:06:47.600 --> 00:06:50.190 All six networks can still connect to every other network 00:06:50.190 --> 00:06:52.250 but they're not physically connected anymore. 00:06:52.250 --> 00:06:54.046 They're now these intermediate steps. 00:06:54.046 --> 00:06:56.170 Now, of course there's a trade off of speed, right? 00:06:56.170 --> 00:06:58.240 If one was directly connected to six, we wouldn't 00:06:58.240 --> 00:07:00.390 have to go through two routers along the way. 00:07:00.390 --> 00:07:03.377 So we may be able to get the connection a little bit faster. 00:07:03.377 --> 00:07:05.210 But maybe that trade-off is worth it, right? 00:07:05.210 --> 00:07:09.850 If it's going to be so expensive in terms of actual cost, dollars 00:07:09.850 --> 00:07:13.150 and cents, to physically wire all these networks together, 00:07:13.150 --> 00:07:16.150 maybe a little bit of a slowdown in speed is OK. 00:07:16.150 --> 00:07:18.530 We can tolerate that. 00:07:18.530 --> 00:07:22.490 >> So again, in that example we were just talking about, none of the networks 00:07:22.490 --> 00:07:24.086 directly connect to each other all. 00:07:24.086 --> 00:07:25.960 There could have been-- maybe in that example 00:07:25.960 --> 00:07:28.659 we could have made it so that maybe network one and two were 00:07:28.659 --> 00:07:29.450 directly connected. 00:07:29.450 --> 00:07:30.410 And that would be OK. 00:07:30.410 --> 00:07:33.040 Some networks are physically connected to other networks. 00:07:33.040 --> 00:07:34.940 But they're not all connected to each other. 00:07:34.940 --> 00:07:37.360 They rely on the routers-- in this particular example-- 00:07:37.360 --> 00:07:40.899 to distribute the communication from point A to point B. 00:07:40.899 --> 00:07:43.190 On a small scale-- like what we're talking about here-- 00:07:43.190 --> 00:07:45.850 this configuration actually might be more inefficient than just 00:07:45.850 --> 00:07:47.420 having direct connections. 00:07:47.420 --> 00:07:52.547 But on a large scale, we can scale the system a lot better. 00:07:52.547 --> 00:07:55.130 It's really going to reduce our cost of network infrastructure 00:07:55.130 --> 00:07:59.450 to have intermediary routers whose job it is to move traffic from the sender 00:07:59.450 --> 00:08:03.500 to the receiver, from point A to point B, as opposed to wiring everybody 00:08:03.500 --> 00:08:05.320 together. 00:08:05.320 --> 00:08:07.380 >> So let's take a look at an example of information 00:08:07.380 --> 00:08:09.220 traveling using this Internet Protocol. 00:08:09.220 --> 00:08:15.250 Let's say that I am physically located at IP 1.208.12.37 00:08:15.250 --> 00:08:17.450 so I exist somewhere on the one network. 00:08:17.450 --> 00:08:19.260 And I want to send a message to you. 00:08:19.260 --> 00:08:23.085 And you're on the five network at 5.188.109.14. 00:08:23.085 --> 00:08:26.210 Your IP address specifically doesn't matter, but in this particular example 00:08:26.210 --> 00:08:29.740 we're talking about this generalization of what the internet protocol is all 00:08:29.740 --> 00:08:30.429 about. 00:08:30.429 --> 00:08:32.720 You're on the five network, and I'm on the one network. 00:08:32.720 --> 00:08:36.309 As you can see, we're not connected to each other at all. 00:08:36.309 --> 00:08:37.335 >> So I start out. 00:08:37.335 --> 00:08:38.710 And I want to send you a message. 00:08:38.710 --> 00:08:41.650 And so somehow I communicate that message to the router. 00:08:41.650 --> 00:08:44.039 The router is the one that actually has the IP address. 00:08:44.039 --> 00:08:45.955 And it's looking at where it's supposed to go. 00:08:45.955 --> 00:08:47.655 We're going to five dot something. 00:08:47.655 --> 00:08:49.780 So now I'm going to start using my-- or the router, 00:08:49.780 --> 00:08:53.370 rather, is going to start using its router table to pass information along. 00:08:53.370 --> 00:08:59.149 It sees that five is not one, so it says I'm going to pass it to this guy. 00:08:59.149 --> 00:09:00.690 Then this guy has to make a decision. 00:09:00.690 --> 00:09:01.520 Where am I going to go? 00:09:01.520 --> 00:09:03.705 Well, it's not a one, so I'm not going to move to the one network. 00:09:03.705 --> 00:09:04.770 And it's not a two. 00:09:04.770 --> 00:09:06.478 I'm not going to move to the two network. 00:09:06.478 --> 00:09:07.410 It starts with a five. 00:09:07.410 --> 00:09:09.500 I'm not connected to five, this router says. 00:09:09.500 --> 00:09:12.950 And so I'm just going to pass it off to-- I'm going to go down this path. 00:09:12.950 --> 00:09:15.462 This is where threes and fours and fives and sixes go. 00:09:15.462 --> 00:09:16.920 And I'll let that guy deal with it. 00:09:16.920 --> 00:09:18.710 I'll get it a little closer to where it's supposed to go. 00:09:18.710 --> 00:09:21.350 I know it's supposed to go in that general direction. 00:09:21.350 --> 00:09:23.110 But maybe that guy can deal with it. 00:09:23.110 --> 00:09:23.840 OK. 00:09:23.840 --> 00:09:24.650 So that guy looks. 00:09:24.650 --> 00:09:27.580 He says, OK, this IP address starts with a five. 00:09:27.580 --> 00:09:31.590 Well, I'm connected to three and to six, so I can't get the message directly 00:09:31.590 --> 00:09:32.780 where it needs to go. 00:09:32.780 --> 00:09:36.970 But that other router over there, I know if I send it fours and fives, 00:09:36.970 --> 00:09:38.430 it can handle those. 00:09:38.430 --> 00:09:41.269 >> So it passes it along down the path. 00:09:41.269 --> 00:09:44.310 And then this router says, well, I'm connected to networks four and five. 00:09:44.310 --> 00:09:45.727 So, yes, I can help you. 00:09:45.727 --> 00:09:47.810 I'll take your IP address that starts with a five. 00:09:47.810 --> 00:09:49.450 I'll give it to the five network. 00:09:49.450 --> 00:09:53.220 The five network will do some work on its end and give the message to you. 00:09:53.220 --> 00:09:56.580 And now we've successfully transmitted a message from me 00:09:56.580 --> 00:09:58.930 to you using the Internet Protocol. 00:09:58.930 --> 00:10:03.020 >> Again, very generalized for purposes of illustration as to what's happening. 00:10:03.020 --> 00:10:05.840 But that's pretty much how the Internet Protocol works. 00:10:05.840 --> 00:10:08.050 The routers know generally where to send it 00:10:08.050 --> 00:10:11.170 and will send it one step along the way, getting it closer and closer 00:10:11.170 --> 00:10:15.130 to its destination until one router is physically connected 00:10:15.130 --> 00:10:17.990 to the network or the address or whatever 00:10:17.990 --> 00:10:21.600 in question and gives it there. 00:10:21.600 --> 00:10:28.780 >> Now, in general, except for really, really small, small messages, 00:10:28.780 --> 00:10:31.830 it's not going to send it as one big chunk of data. 00:10:31.830 --> 00:10:34.870 If I'm sending you an email-- a very long email, 00:10:34.870 --> 00:10:37.270 say-- it's not going to take that entire email, 00:10:37.270 --> 00:10:40.660 bundle it up in a ball or a package or whatever, 00:10:40.660 --> 00:10:43.460 and send that entire thing down the network. 00:10:43.460 --> 00:10:46.580 >> First of all, sending information along the network is expensive. 00:10:46.580 --> 00:10:47.560 It does add up. 00:10:47.560 --> 00:10:49.760 And the larger the chunk, the more costly 00:10:49.760 --> 00:10:53.240 it is to move every step of the way. 00:10:53.240 --> 00:10:55.260 And if there's somehow a slowdown and then 00:10:55.260 --> 00:10:58.010 there's this giant-- sort of like if you're driving on the highway 00:10:58.010 --> 00:11:00.246 and there's this giant truck kind of blocking the way 00:11:00.246 --> 00:11:03.370 and you can't get around it on either lane because it's kind of spread out. 00:11:03.370 --> 00:11:05.227 It slows everybody else down behind it. 00:11:05.227 --> 00:11:07.060 But small cars, if they were all small cars, 00:11:07.060 --> 00:11:10.290 they might be able to move around, if that analogy sort of helps 00:11:10.290 --> 00:11:11.650 a little bit. 00:11:11.650 --> 00:11:17.170 >> So one big block in the system can really slow everybody else down. 00:11:17.170 --> 00:11:20.570 And so what IP is going to do is split this data into packets. 00:11:20.570 --> 00:11:26.560 It's going to take this big email or FTP transfer or a file transfer, 00:11:26.560 --> 00:11:28.700 or maybe I'm making a request to a web browser 00:11:28.700 --> 00:11:30.205 because I want a picture of cat. 00:11:30.205 --> 00:11:33.570 And it's going to take that request or that email or that file 00:11:33.570 --> 00:11:37.950 and break it up into many pieces and send all of the pieces separately. 00:11:37.950 --> 00:11:41.120 So in fact, I'm filling the highway with a lot of small cars, which can all 00:11:41.120 --> 00:11:47.320 move instead of a big truck that might, if something goes wrong, 00:11:47.320 --> 00:11:49.970 throttle the traffic for everybody else. 00:11:49.970 --> 00:11:51.850 >> Another side effect of this is if there's 00:11:51.850 --> 00:11:57.170 some sort of catastrophic failure and something goes wrong 00:11:57.170 --> 00:11:58.890 and the packet gets dropped. 00:11:58.890 --> 00:12:01.670 Something is failed and the message can't be communicated. 00:12:01.670 --> 00:12:04.090 The router maybe had too much stuff going in. 00:12:04.090 --> 00:12:05.340 It couldn't juggle everything. 00:12:05.340 --> 00:12:06.840 And so it just literally dropped it. 00:12:06.840 --> 00:12:08.630 That's sort of the analogy, right? 00:12:08.630 --> 00:12:10.046 >> It's got a lot of things going on. 00:12:10.046 --> 00:12:12.010 It's passing information from point A to point 00:12:12.010 --> 00:12:14.090 B. We're not the only two people on the internet, 00:12:14.090 --> 00:12:16.264 so it has to process a lot of traffic. 00:12:16.264 --> 00:12:19.430 And if it doesn't have enough hands and it can't figure out what it's doing, 00:12:19.430 --> 00:12:21.350 it might just drop something. 00:12:21.350 --> 00:12:23.570 So it can do something else. 00:12:23.570 --> 00:12:25.390 It's got too much going on. 00:12:25.390 --> 00:12:29.560 >> If we had our message as one huge block and that was what got dropped, 00:12:29.560 --> 00:12:31.770 now we have to send the message again. 00:12:31.770 --> 00:12:34.500 And we are now possibly causing traffic again. 00:12:34.500 --> 00:12:37.640 And we run the risk of that huge block being dropped again. 00:12:37.640 --> 00:12:41.060 But if the data's been broken up into packets and we drop one of those, 00:12:41.060 --> 00:12:45.100 it's a lot less costly to send that packet one more time as opposed 00:12:45.100 --> 00:12:47.220 to the entire thing one more time. 00:12:47.220 --> 00:12:51.680 So IP is responsible for getting information from point A to point B 00:12:51.680 --> 00:12:54.500 and also breaking the information into small pieces 00:12:54.500 --> 00:12:57.880 so that the network isn't overly taxed. 00:12:57.880 --> 00:13:00.760 >> IP is also known as a connectionless protocol. 00:13:00.760 --> 00:13:05.350 There's not necessarily a defined path from the sender to the receiver or vice 00:13:05.350 --> 00:13:05.850 versa. 00:13:05.850 --> 00:13:08.808 Now, in this example we've talked about, there actually is only one way 00:13:08.808 --> 00:13:11.020 to get to every network. 00:13:11.020 --> 00:13:13.110 So in this particular illustration, there actually 00:13:13.110 --> 00:13:15.560 is a defined path from point A to point B. 00:13:15.560 --> 00:13:19.270 But we can change that by just making one modification to the two routers 00:13:19.270 --> 00:13:22.640 on the left by adding this condition to the router tables. 00:13:22.640 --> 00:13:24.960 >> Now notice that from the top left router, 00:13:24.960 --> 00:13:29.340 there are actually two ways to deal with a four or a five IP address. 00:13:29.340 --> 00:13:33.100 It can go down to the lower left router, or can go to the right, 00:13:33.100 --> 00:13:34.090 to the right router. 00:13:34.090 --> 00:13:35.532 It has multiple options. 00:13:35.532 --> 00:13:37.240 And this is actually kind of a good thing 00:13:37.240 --> 00:13:39.690 because it makes our network more responsive. 00:13:39.690 --> 00:13:42.510 >> If for example-- it's sort of like a GPS. 00:13:42.510 --> 00:13:44.760 If you've ever been driving on the highway 00:13:44.760 --> 00:13:49.610 and suddenly your GPS warns you that traffic is ahead, 00:13:49.610 --> 00:13:51.230 you want to avoid it if you can. 00:13:51.230 --> 00:13:53.710 And so you can recalculate your route. 00:13:53.710 --> 00:14:00.330 And a router network, in addition to having information 00:14:00.330 --> 00:14:05.110 about where packets should go or where data should go, 00:14:05.110 --> 00:14:09.140 there's also sort of this general pulse on the state of its local network. 00:14:09.140 --> 00:14:13.930 What's going to happen if I send it down this path versus this path? 00:14:13.930 --> 00:14:19.640 >> And so in light of heavy traffic situations on the network, maybe 00:14:19.640 --> 00:14:22.630 things will get routed a more inefficient way or a more generally 00:14:22.630 --> 00:14:24.939 inefficient way, because if we go the regular way, 00:14:24.939 --> 00:14:26.480 there's going to be a lot of traffic. 00:14:26.480 --> 00:14:28.470 The highway is completely jammed. 00:14:28.470 --> 00:14:30.880 So maybe what we'll do is instead take side roads, which 00:14:30.880 --> 00:14:33.070 ordinarily would take a lot more time, but no one's 00:14:33.070 --> 00:14:34.320 really using those side roads. 00:14:34.320 --> 00:14:37.300 And so we can route our packets that way. 00:14:37.300 --> 00:14:40.190 >> So not every packet of a big chunk of data 00:14:40.190 --> 00:14:42.620 might take the same path from the beginning to the end. 00:14:42.620 --> 00:14:45.080 And our network becomes a lot more responsive 00:14:45.080 --> 00:14:49.720 if our router tables allow for there to be multiple options for where to go. 00:14:49.720 --> 00:14:53.054 We're not depending on that one truck moving out of the way. 00:14:53.054 --> 00:14:55.970 We can get off the highway at the next exit and take a different path. 00:14:55.970 --> 00:15:01.250 And so the Internet Protocol sort of does a little bit of that, too. 00:15:01.250 --> 00:15:05.110 >> So that's the basics of the Internet Protocol. 00:15:05.110 --> 00:15:07.780 But there's one more issue to deal with, which 00:15:07.780 --> 00:15:10.810 is what happens if we do drop a packet? 00:15:10.810 --> 00:15:14.490 How do we know we're going to send that packet again? 00:15:14.490 --> 00:15:15.750 Right? 00:15:15.750 --> 00:15:18.632 Well, Internet Protocol doesn't guarantee delivery. 00:15:18.632 --> 00:15:20.590 We're going to be depending on another protocol 00:15:20.590 --> 00:15:25.027 to deal with that called Transmission Control Protocol, TCP. 00:15:25.027 --> 00:15:27.110 And we're going to talk about Transmission Control 00:15:27.110 --> 00:15:29.470 Protocol in the next video. 00:15:29.470 --> 00:15:30.460 I'm Doug Lloyd. 00:15:30.460 --> 00:15:32.350 This is CS50.