1 00:00:00,000 --> 00:00:05,152 2 00:00:05,152 --> 00:00:07,360 DOUG LLOYD: If you watched our internet primer video, 3 00:00:07,360 --> 00:00:10,020 I left a bit of a cliffhanger by talking about the internet 4 00:00:10,020 --> 00:00:11,857 and how it's a system of protocols. 5 00:00:11,857 --> 00:00:14,190 Well, let's talk about the first of those protocols that 6 00:00:14,190 --> 00:00:15,710 actually comprises the internet. 7 00:00:15,710 --> 00:00:18,490 And interestingly enough, it's called the Internet Protocol, 8 00:00:18,490 --> 00:00:20,960 which we usually refer to as IP. 9 00:00:20,960 --> 00:00:24,810 >> So the internet, as I said, is an interconnected network, an internet, 10 00:00:24,810 --> 00:00:28,990 which is really just several networks woven together and agreeing somehow 11 00:00:28,990 --> 00:00:31,490 to communicate with one another. 12 00:00:31,490 --> 00:00:33,220 What is this somehow I'm talking about? 13 00:00:33,220 --> 00:00:34,720 Well, this is the Internet Protocol. 14 00:00:34,720 --> 00:00:39,190 This dictates how information is transmitted from point A to point B. 15 00:00:39,190 --> 00:00:43,410 And this is sort of a condition of joining the network of the internet 16 00:00:43,410 --> 00:00:45,830 is agreeing to follow this protocol when information needs 17 00:00:45,830 --> 00:00:49,330 to be moved from point A to point B. 18 00:00:49,330 --> 00:00:51,700 >> So at the very end of that internet primer video, 19 00:00:51,700 --> 00:00:55,320 I showed this image of what the internet was. 20 00:00:55,320 --> 00:00:58,649 And on a small scale, this is actually probably pretty accurate. 21 00:00:58,649 --> 00:01:01,190 This might be how three networks actually talk to each other. 22 00:01:01,190 --> 00:01:02,570 But it's a bit misleading. 23 00:01:02,570 --> 00:01:04,845 And the reason it's a bit misleading is because-- if I 24 00:01:04,845 --> 00:01:07,220 just number the networks for the sake of convenience here 25 00:01:07,220 --> 00:01:10,350 and we get rid of everything else and just focus on the networks-- 26 00:01:10,350 --> 00:01:13,750 it's a bit misleading because it implies that all three network have 27 00:01:13,750 --> 00:01:15,280 a connection to one another. 28 00:01:15,280 --> 00:01:16,365 >> One is connected to two. 29 00:01:16,365 --> 00:01:17,610 Two is connected to three. 30 00:01:17,610 --> 00:01:18,990 And three is connected to one. 31 00:01:18,990 --> 00:01:20,823 And when I talk about a connection here, I'm 32 00:01:20,823 --> 00:01:23,920 talking about a physical, wired connection. 33 00:01:23,920 --> 00:01:25,170 We do have wireless. 34 00:01:25,170 --> 00:01:28,390 But it's really impractical for data to be transmitted wirelessly 35 00:01:28,390 --> 00:01:29,440 over a large scale. 36 00:01:29,440 --> 00:01:35,200 And so at some point, we really do rely on wired technology-- telephone wires, 37 00:01:35,200 --> 00:01:39,980 fiber optic wires, various technologies that are physically connecting 38 00:01:39,980 --> 00:01:41,560 point A to point B. 39 00:01:41,560 --> 00:01:44,110 >> And on a small scale like this-- this might be accurate, 40 00:01:44,110 --> 00:01:46,480 but as the image gets a little bigger, let's now 41 00:01:46,480 --> 00:01:49,410 imagine we have six different networks. 42 00:01:49,410 --> 00:01:52,740 If that's true, now we have something like this for every network 43 00:01:52,740 --> 00:01:55,100 to be connected to every other network. 44 00:01:55,100 --> 00:01:58,540 And if you look, every network has five arrows connected to it. 45 00:01:58,540 --> 00:02:01,450 So everything is connected to every other network. 46 00:02:01,450 --> 00:02:05,840 >> We only have six networks here, and already look at how much wiring 47 00:02:05,840 --> 00:02:08,630 we have to employ, right? 48 00:02:08,630 --> 00:02:12,650 And the internet consists of a lot more than six networks. 49 00:02:12,650 --> 00:02:17,410 We can't afford to wire each network to each other network, 50 00:02:17,410 --> 00:02:20,940 especially considering some of these networks span oceans, right? 51 00:02:20,940 --> 00:02:23,810 If we're trying to connect to a network in Asia or in Europe, 52 00:02:23,810 --> 00:02:27,502 we're going to have to span an entire ocean. 53 00:02:27,502 --> 00:02:29,460 We're going to need to use wires at some point, 54 00:02:29,460 --> 00:02:33,900 but we want to minimize the number of wires we actually use. 55 00:02:33,900 --> 00:02:36,690 We don't want to send a million wires across the ocean, 56 00:02:36,690 --> 00:02:40,700 because they cost millions of dollars apiece to lie down. 57 00:02:40,700 --> 00:02:44,430 And so rapidly, we wouldn't be able to afford the internet anymore. 58 00:02:44,430 --> 00:02:47,080 So we have to have another way for every network 59 00:02:47,080 --> 00:02:49,730 to talk to every other network or else we 60 00:02:49,730 --> 00:02:51,784 have pieces of the internet that are disconnected 61 00:02:51,784 --> 00:02:53,200 from other pieces of the internet. 62 00:02:53,200 --> 00:02:55,150 And that's not what we want. 63 00:02:55,150 --> 00:02:57,890 But we don't want to have them all wired together. 64 00:02:57,890 --> 00:03:00,760 >> And this is where routers come back into play. 65 00:03:00,760 --> 00:03:02,870 We can use routers in the following way. 66 00:03:02,870 --> 00:03:05,150 What if instead of every network being physically 67 00:03:05,150 --> 00:03:09,700 connected to every other network, we had these intermediary pieces, where 68 00:03:09,700 --> 00:03:12,460 the networks were connected to these intermediaries, which 69 00:03:12,460 --> 00:03:14,840 are connected to a few networks. 70 00:03:14,840 --> 00:03:19,290 So instead of having one connect to two, three, four, five, six, maybe one 71 00:03:19,290 --> 00:03:21,360 connects to a router, which maybe connects 72 00:03:21,360 --> 00:03:23,840 to one or two of those networks, but also 73 00:03:23,840 --> 00:03:25,850 maybe connects to other routers, which also 74 00:03:25,850 --> 00:03:28,510 will connect to those other networks. 75 00:03:28,510 --> 00:03:31,160 >> And the router's job is-- it contains information 76 00:03:31,160 --> 00:03:34,620 called a routing table that dictates where do 77 00:03:34,620 --> 00:03:37,250 I go if I see a particular IP address? 78 00:03:37,250 --> 00:03:41,080 If I see an IP address starting with four, I'm going to go this way. 79 00:03:41,080 --> 00:03:45,250 If I seen IP address starting with a 12, I'm going to go that way. 80 00:03:45,250 --> 00:03:49,230 We don't need to be connected physically to network number four 81 00:03:49,230 --> 00:03:52,010 or network number 12 in this example. 82 00:03:52,010 --> 00:03:53,941 We just know generally where we want to go. 83 00:03:53,941 --> 00:03:57,190 And if you think about it, this is sort of similar to the concept of recursion 84 00:03:57,190 --> 00:03:59,445 that we talked about when we were talking about it 85 00:03:59,445 --> 00:04:04,060 in C. I'm not going to connect you to exactly where you want to go. 86 00:04:04,060 --> 00:04:08,130 I'm just going to move you one step closer to where you want to go. 87 00:04:08,130 --> 00:04:11,739 And I'll let somebody else deal with solving the rest of the problem. 88 00:04:11,739 --> 00:04:14,780 I'll just solve this little piece of the problem and defer the rest of it 89 00:04:14,780 --> 00:04:15,940 to somebody else. 90 00:04:15,940 --> 00:04:19,240 So routing information is actually kind of similar to recursion. 91 00:04:19,240 --> 00:04:24,010 If that's a concept that you understand well, maybe that analogy would help. 92 00:04:24,010 --> 00:04:26,950 >> So let's take a look at this networking example 93 00:04:26,950 --> 00:04:30,130 again and assume that, again, we're going to use those same six 94 00:04:30,130 --> 00:04:31,470 networks, one through six. 95 00:04:31,470 --> 00:04:34,220 So let's just say that every IP address on network one 96 00:04:34,220 --> 00:04:36,200 starts with one dot something. 97 00:04:36,200 --> 00:04:38,800 And we'll say that there's some other thing that 98 00:04:38,800 --> 00:04:42,110 deals with how all the systems are connected to network one. 99 00:04:42,110 --> 00:04:46,000 We just care about connecting all of those networks together in an internet. 100 00:04:46,000 --> 00:04:49,350 So every device that is connected to network one 101 00:04:49,350 --> 00:04:53,460 has an IP address that starts with one dot and then three other numbers. 102 00:04:53,460 --> 00:04:56,300 >> This is a generalization of the way things actually work. 103 00:04:56,300 --> 00:04:58,260 It's quite a bit more precise than this. 104 00:04:58,260 --> 00:05:00,760 But this should give you a general idea of what the Internet 105 00:05:00,760 --> 00:05:02,637 Protocol is actually doing. 106 00:05:02,637 --> 00:05:04,220 So this was the diagram we had before. 107 00:05:04,220 --> 00:05:06,410 This was the system that was not sustainable. 108 00:05:06,410 --> 00:05:07,760 Even six, this might be OK. 109 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. 110 00:05:11,990 --> 00:05:15,139 And 50 is still also not even the tip of the iceberg 111 00:05:15,139 --> 00:05:16,680 as to the number of networks we have. 112 00:05:16,680 --> 00:05:18,510 So this model is unsustainable. 113 00:05:18,510 --> 00:05:20,660 We can't stick with this. 114 00:05:20,660 --> 00:05:23,200 >> So let's instead adopt this model where we get rid 115 00:05:23,200 --> 00:05:28,030 of all the wires between the networks and we add routers. 116 00:05:28,030 --> 00:05:30,210 So these yellow boxes represent routers. 117 00:05:30,210 --> 00:05:32,550 And their job is to move information generally 118 00:05:32,550 --> 00:05:36,040 closer to where it's supposed to go. 119 00:05:36,040 --> 00:05:40,330 And maybe these are the connections that these networks have. 120 00:05:40,330 --> 00:05:43,670 And maybe these are the tables that are built into the routers. 121 00:05:43,670 --> 00:05:47,870 >> So if we just start by looking at network one, for example, 122 00:05:47,870 --> 00:05:50,450 basically what it says is if I ever see an address that 123 00:05:50,450 --> 00:05:54,300 doesn't start with a one-- that's what the exclamation point one or the bang 124 00:05:54,300 --> 00:05:58,550 one there, not one-- I'm going to pass it off to a router. 125 00:05:58,550 --> 00:06:00,680 And from there, the router can make a decision. 126 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. 127 00:06:04,570 --> 00:06:07,610 That's the green arrow heading to the left out of that top left box. 128 00:06:07,610 --> 00:06:09,660 >> If I see a two-- that's the arrow sort of heading 129 00:06:09,660 --> 00:06:11,950 to the top right towards the purple network-- 130 00:06:11,950 --> 00:06:14,920 if I see an IP address starting with a two, 131 00:06:14,920 --> 00:06:16,920 I'm going to go towards the two network. 132 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 133 00:06:21,250 --> 00:06:25,800 of the top left router-- I'm not connected to three, four, five, or six. 134 00:06:25,800 --> 00:06:28,897 But I know somebody who is or who's a little bit closer to there. 135 00:06:28,897 --> 00:06:31,230 So I'm just going to say, every time I see an IP address 136 00:06:31,230 --> 00:06:33,810 starting with three, four, five, or six, I'm just 137 00:06:33,810 --> 00:06:35,250 going to send it to that router. 138 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 139 00:06:38,090 --> 00:06:39,830 that router deal with the problem. 140 00:06:39,830 --> 00:06:42,980 >> And as you can see-- if you wanted to pause here and trace-- 141 00:06:42,980 --> 00:06:47,600 you can get to every other point in the network from wherever you are. 142 00:06:47,600 --> 00:06:50,190 All six networks can still connect to every other network 143 00:06:50,190 --> 00:06:52,250 but they're not physically connected anymore. 144 00:06:52,250 --> 00:06:54,046 They're now these intermediate steps. 145 00:06:54,046 --> 00:06:56,170 Now, of course there's a trade off of speed, right? 146 00:06:56,170 --> 00:06:58,240 If one was directly connected to six, we wouldn't 147 00:06:58,240 --> 00:07:00,390 have to go through two routers along the way. 148 00:07:00,390 --> 00:07:03,377 So we may be able to get the connection a little bit faster. 149 00:07:03,377 --> 00:07:05,210 But maybe that trade-off is worth it, right? 150 00:07:05,210 --> 00:07:09,850 If it's going to be so expensive in terms of actual cost, dollars 151 00:07:09,850 --> 00:07:13,150 and cents, to physically wire all these networks together, 152 00:07:13,150 --> 00:07:16,150 maybe a little bit of a slowdown in speed is OK. 153 00:07:16,150 --> 00:07:18,530 We can tolerate that. 154 00:07:18,530 --> 00:07:22,490 >> So again, in that example we were just talking about, none of the networks 155 00:07:22,490 --> 00:07:24,086 directly connect to each other all. 156 00:07:24,086 --> 00:07:25,960 There could have been-- maybe in that example 157 00:07:25,960 --> 00:07:28,659 we could have made it so that maybe network one and two were 158 00:07:28,659 --> 00:07:29,450 directly connected. 159 00:07:29,450 --> 00:07:30,410 And that would be OK. 160 00:07:30,410 --> 00:07:33,040 Some networks are physically connected to other networks. 161 00:07:33,040 --> 00:07:34,940 But they're not all connected to each other. 162 00:07:34,940 --> 00:07:37,360 They rely on the routers-- in this particular example-- 163 00:07:37,360 --> 00:07:40,899 to distribute the communication from point A to point B. 164 00:07:40,899 --> 00:07:43,190 On a small scale-- like what we're talking about here-- 165 00:07:43,190 --> 00:07:45,850 this configuration actually might be more inefficient than just 166 00:07:45,850 --> 00:07:47,420 having direct connections. 167 00:07:47,420 --> 00:07:52,547 But on a large scale, we can scale the system a lot better. 168 00:07:52,547 --> 00:07:55,130 It's really going to reduce our cost of network infrastructure 169 00:07:55,130 --> 00:07:59,450 to have intermediary routers whose job it is to move traffic from the sender 170 00:07:59,450 --> 00:08:03,500 to the receiver, from point A to point B, as opposed to wiring everybody 171 00:08:03,500 --> 00:08:05,320 together. 172 00:08:05,320 --> 00:08:07,380 >> So let's take a look at an example of information 173 00:08:07,380 --> 00:08:09,220 traveling using this Internet Protocol. 174 00:08:09,220 --> 00:08:15,250 Let's say that I am physically located at IP 1.208.12.37 175 00:08:15,250 --> 00:08:17,450 so I exist somewhere on the one network. 176 00:08:17,450 --> 00:08:19,260 And I want to send a message to you. 177 00:08:19,260 --> 00:08:23,085 And you're on the five network at 5.188.109.14. 178 00:08:23,085 --> 00:08:26,210 Your IP address specifically doesn't matter, but in this particular example 179 00:08:26,210 --> 00:08:29,740 we're talking about this generalization of what the internet protocol is all 180 00:08:29,740 --> 00:08:30,429 about. 181 00:08:30,429 --> 00:08:32,720 You're on the five network, and I'm on the one network. 182 00:08:32,720 --> 00:08:36,309 As you can see, we're not connected to each other at all. 183 00:08:36,309 --> 00:08:37,335 >> So I start out. 184 00:08:37,335 --> 00:08:38,710 And I want to send you a message. 185 00:08:38,710 --> 00:08:41,650 And so somehow I communicate that message to the router. 186 00:08:41,650 --> 00:08:44,039 The router is the one that actually has the IP address. 187 00:08:44,039 --> 00:08:45,955 And it's looking at where it's supposed to go. 188 00:08:45,955 --> 00:08:47,655 We're going to five dot something. 189 00:08:47,655 --> 00:08:49,780 So now I'm going to start using my-- or the router, 190 00:08:49,780 --> 00:08:53,370 rather, is going to start using its router table to pass information along. 191 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. 192 00:08:59,149 --> 00:09:00,690 Then this guy has to make a decision. 193 00:09:00,690 --> 00:09:01,520 Where am I going to go? 194 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. 195 00:09:03,705 --> 00:09:04,770 And it's not a two. 196 00:09:04,770 --> 00:09:06,478 I'm not going to move to the two network. 197 00:09:06,478 --> 00:09:07,410 It starts with a five. 198 00:09:07,410 --> 00:09:09,500 I'm not connected to five, this router says. 199 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. 200 00:09:12,950 --> 00:09:15,462 This is where threes and fours and fives and sixes go. 201 00:09:15,462 --> 00:09:16,920 And I'll let that guy deal with it. 202 00:09:16,920 --> 00:09:18,710 I'll get it a little closer to where it's supposed to go. 203 00:09:18,710 --> 00:09:21,350 I know it's supposed to go in that general direction. 204 00:09:21,350 --> 00:09:23,110 But maybe that guy can deal with it. 205 00:09:23,110 --> 00:09:23,840 OK. 206 00:09:23,840 --> 00:09:24,650 So that guy looks. 207 00:09:24,650 --> 00:09:27,580 He says, OK, this IP address starts with a five. 208 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 209 00:09:31,590 --> 00:09:32,780 where it needs to go. 210 00:09:32,780 --> 00:09:36,970 But that other router over there, I know if I send it fours and fives, 211 00:09:36,970 --> 00:09:38,430 it can handle those. 212 00:09:38,430 --> 00:09:41,269 >> So it passes it along down the path. 213 00:09:41,269 --> 00:09:44,310 And then this router says, well, I'm connected to networks four and five. 214 00:09:44,310 --> 00:09:45,727 So, yes, I can help you. 215 00:09:45,727 --> 00:09:47,810 I'll take your IP address that starts with a five. 216 00:09:47,810 --> 00:09:49,450 I'll give it to the five network. 217 00:09:49,450 --> 00:09:53,220 The five network will do some work on its end and give the message to you. 218 00:09:53,220 --> 00:09:56,580 And now we've successfully transmitted a message from me 219 00:09:56,580 --> 00:09:58,930 to you using the Internet Protocol. 220 00:09:58,930 --> 00:10:03,020 >> Again, very generalized for purposes of illustration as to what's happening. 221 00:10:03,020 --> 00:10:05,840 But that's pretty much how the Internet Protocol works. 222 00:10:05,840 --> 00:10:08,050 The routers know generally where to send it 223 00:10:08,050 --> 00:10:11,170 and will send it one step along the way, getting it closer and closer 224 00:10:11,170 --> 00:10:15,130 to its destination until one router is physically connected 225 00:10:15,130 --> 00:10:17,990 to the network or the address or whatever 226 00:10:17,990 --> 00:10:21,600 in question and gives it there. 227 00:10:21,600 --> 00:10:28,780 >> Now, in general, except for really, really small, small messages, 228 00:10:28,780 --> 00:10:31,830 it's not going to send it as one big chunk of data. 229 00:10:31,830 --> 00:10:34,870 If I'm sending you an email-- a very long email, 230 00:10:34,870 --> 00:10:37,270 say-- it's not going to take that entire email, 231 00:10:37,270 --> 00:10:40,660 bundle it up in a ball or a package or whatever, 232 00:10:40,660 --> 00:10:43,460 and send that entire thing down the network. 233 00:10:43,460 --> 00:10:46,580 >> First of all, sending information along the network is expensive. 234 00:10:46,580 --> 00:10:47,560 It does add up. 235 00:10:47,560 --> 00:10:49,760 And the larger the chunk, the more costly 236 00:10:49,760 --> 00:10:53,240 it is to move every step of the way. 237 00:10:53,240 --> 00:10:55,260 And if there's somehow a slowdown and then 238 00:10:55,260 --> 00:10:58,010 there's this giant-- sort of like if you're driving on the highway 239 00:10:58,010 --> 00:11:00,246 and there's this giant truck kind of blocking the way 240 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. 241 00:11:03,370 --> 00:11:05,227 It slows everybody else down behind it. 242 00:11:05,227 --> 00:11:07,060 But small cars, if they were all small cars, 243 00:11:07,060 --> 00:11:10,290 they might be able to move around, if that analogy sort of helps 244 00:11:10,290 --> 00:11:11,650 a little bit. 245 00:11:11,650 --> 00:11:17,170 >> So one big block in the system can really slow everybody else down. 246 00:11:17,170 --> 00:11:20,570 And so what IP is going to do is split this data into packets. 247 00:11:20,570 --> 00:11:26,560 It's going to take this big email or FTP transfer or a file transfer, 248 00:11:26,560 --> 00:11:28,700 or maybe I'm making a request to a web browser 249 00:11:28,700 --> 00:11:30,205 because I want a picture of cat. 250 00:11:30,205 --> 00:11:33,570 And it's going to take that request or that email or that file 251 00:11:33,570 --> 00:11:37,950 and break it up into many pieces and send all of the pieces separately. 252 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 253 00:11:41,120 --> 00:11:47,320 move instead of a big truck that might, if something goes wrong, 254 00:11:47,320 --> 00:11:49,970 throttle the traffic for everybody else. 255 00:11:49,970 --> 00:11:51,850 >> Another side effect of this is if there's 256 00:11:51,850 --> 00:11:57,170 some sort of catastrophic failure and something goes wrong 257 00:11:57,170 --> 00:11:58,890 and the packet gets dropped. 258 00:11:58,890 --> 00:12:01,670 Something is failed and the message can't be communicated. 259 00:12:01,670 --> 00:12:04,090 The router maybe had too much stuff going in. 260 00:12:04,090 --> 00:12:05,340 It couldn't juggle everything. 261 00:12:05,340 --> 00:12:06,840 And so it just literally dropped it. 262 00:12:06,840 --> 00:12:08,630 That's sort of the analogy, right? 263 00:12:08,630 --> 00:12:10,046 >> It's got a lot of things going on. 264 00:12:10,046 --> 00:12:12,010 It's passing information from point A to point 265 00:12:12,010 --> 00:12:14,090 B. We're not the only two people on the internet, 266 00:12:14,090 --> 00:12:16,264 so it has to process a lot of traffic. 267 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, 268 00:12:19,430 --> 00:12:21,350 it might just drop something. 269 00:12:21,350 --> 00:12:23,570 So it can do something else. 270 00:12:23,570 --> 00:12:25,390 It's got too much going on. 271 00:12:25,390 --> 00:12:29,560 >> If we had our message as one huge block and that was what got dropped, 272 00:12:29,560 --> 00:12:31,770 now we have to send the message again. 273 00:12:31,770 --> 00:12:34,500 And we are now possibly causing traffic again. 274 00:12:34,500 --> 00:12:37,640 And we run the risk of that huge block being dropped again. 275 00:12:37,640 --> 00:12:41,060 But if the data's been broken up into packets and we drop one of those, 276 00:12:41,060 --> 00:12:45,100 it's a lot less costly to send that packet one more time as opposed 277 00:12:45,100 --> 00:12:47,220 to the entire thing one more time. 278 00:12:47,220 --> 00:12:51,680 So IP is responsible for getting information from point A to point B 279 00:12:51,680 --> 00:12:54,500 and also breaking the information into small pieces 280 00:12:54,500 --> 00:12:57,880 so that the network isn't overly taxed. 281 00:12:57,880 --> 00:13:00,760 >> IP is also known as a connectionless protocol. 282 00:13:00,760 --> 00:13:05,350 There's not necessarily a defined path from the sender to the receiver or vice 283 00:13:05,350 --> 00:13:05,850 versa. 284 00:13:05,850 --> 00:13:08,808 Now, in this example we've talked about, there actually is only one way 285 00:13:08,808 --> 00:13:11,020 to get to every network. 286 00:13:11,020 --> 00:13:13,110 So in this particular illustration, there actually 287 00:13:13,110 --> 00:13:15,560 is a defined path from point A to point B. 288 00:13:15,560 --> 00:13:19,270 But we can change that by just making one modification to the two routers 289 00:13:19,270 --> 00:13:22,640 on the left by adding this condition to the router tables. 290 00:13:22,640 --> 00:13:24,960 >> Now notice that from the top left router, 291 00:13:24,960 --> 00:13:29,340 there are actually two ways to deal with a four or a five IP address. 292 00:13:29,340 --> 00:13:33,100 It can go down to the lower left router, or can go to the right, 293 00:13:33,100 --> 00:13:34,090 to the right router. 294 00:13:34,090 --> 00:13:35,532 It has multiple options. 295 00:13:35,532 --> 00:13:37,240 And this is actually kind of a good thing 296 00:13:37,240 --> 00:13:39,690 because it makes our network more responsive. 297 00:13:39,690 --> 00:13:42,510 >> If for example-- it's sort of like a GPS. 298 00:13:42,510 --> 00:13:44,760 If you've ever been driving on the highway 299 00:13:44,760 --> 00:13:49,610 and suddenly your GPS warns you that traffic is ahead, 300 00:13:49,610 --> 00:13:51,230 you want to avoid it if you can. 301 00:13:51,230 --> 00:13:53,710 And so you can recalculate your route. 302 00:13:53,710 --> 00:14:00,330 And a router network, in addition to having information 303 00:14:00,330 --> 00:14:05,110 about where packets should go or where data should go, 304 00:14:05,110 --> 00:14:09,140 there's also sort of this general pulse on the state of its local network. 305 00:14:09,140 --> 00:14:13,930 What's going to happen if I send it down this path versus this path? 306 00:14:13,930 --> 00:14:19,640 >> And so in light of heavy traffic situations on the network, maybe 307 00:14:19,640 --> 00:14:22,630 things will get routed a more inefficient way or a more generally 308 00:14:22,630 --> 00:14:24,939 inefficient way, because if we go the regular way, 309 00:14:24,939 --> 00:14:26,480 there's going to be a lot of traffic. 310 00:14:26,480 --> 00:14:28,470 The highway is completely jammed. 311 00:14:28,470 --> 00:14:30,880 So maybe what we'll do is instead take side roads, which 312 00:14:30,880 --> 00:14:33,070 ordinarily would take a lot more time, but no one's 313 00:14:33,070 --> 00:14:34,320 really using those side roads. 314 00:14:34,320 --> 00:14:37,300 And so we can route our packets that way. 315 00:14:37,300 --> 00:14:40,190 >> So not every packet of a big chunk of data 316 00:14:40,190 --> 00:14:42,620 might take the same path from the beginning to the end. 317 00:14:42,620 --> 00:14:45,080 And our network becomes a lot more responsive 318 00:14:45,080 --> 00:14:49,720 if our router tables allow for there to be multiple options for where to go. 319 00:14:49,720 --> 00:14:53,054 We're not depending on that one truck moving out of the way. 320 00:14:53,054 --> 00:14:55,970 We can get off the highway at the next exit and take a different path. 321 00:14:55,970 --> 00:15:01,250 And so the Internet Protocol sort of does a little bit of that, too. 322 00:15:01,250 --> 00:15:05,110 >> So that's the basics of the Internet Protocol. 323 00:15:05,110 --> 00:15:07,780 But there's one more issue to deal with, which 324 00:15:07,780 --> 00:15:10,810 is what happens if we do drop a packet? 325 00:15:10,810 --> 00:15:14,490 How do we know we're going to send that packet again? 326 00:15:14,490 --> 00:15:15,750 Right? 327 00:15:15,750 --> 00:15:18,632 Well, Internet Protocol doesn't guarantee delivery. 328 00:15:18,632 --> 00:15:20,590 We're going to be depending on another protocol 329 00:15:20,590 --> 00:15:25,027 to deal with that called Transmission Control Protocol, TCP. 330 00:15:25,027 --> 00:15:27,110 And we're going to talk about Transmission Control 331 00:15:27,110 --> 00:15:29,470 Protocol in the next video. 332 00:15:29,470 --> 00:15:30,460 I'm Doug Lloyd. 333 00:15:30,460 --> 00:15:32,350 This is CS50. 334 00:15:32,350 --> 00:15:34,253