1 00:00:02,291 --> 00:00:08,678 [music] 2 00:00:08,678 --> 00:00:12,513 Okay, so let's start out with the early Internet. 3 00:00:12,513 --> 00:00:14,482 What did that look like? 4 00:00:14,482 --> 00:00:15,731 So what we're talking about here 5 00:00:15,731 --> 00:00:20,623 is the 1960s - the early 1960s. 6 00:00:20,623 --> 00:00:24,890 I would like to say - and yes, I can actually say that was before 7 00:00:24,890 --> 00:00:28,782 I was born, good - but the early Internet, 8 00:00:28,782 --> 00:00:31,273 some terms you may have heard of before, 9 00:00:31,273 --> 00:00:33,402 DARPA or ARPA. 10 00:00:33,402 --> 00:00:35,969 DARPA stood for The Defense 11 00:00:35,969 --> 00:00:39,605 Advanced Research Projects Agency. 12 00:00:39,605 --> 00:00:42,057 And the early Internet started 13 00:00:42,057 --> 00:00:43,847 out as a project from - 14 00:00:43,847 --> 00:00:45,312 I'm not sure if I'm pronouncing it correctly, 15 00:00:45,312 --> 00:00:48,160 if people say DARPA or D ARPA, 16 00:00:48,160 --> 00:00:49,883 never actually really looked that up - 17 00:00:49,883 --> 00:00:51,769 but it started out as a research 18 00:00:51,769 --> 00:00:53,574 project from them and they created 19 00:00:53,574 --> 00:00:56,870 something called the ARPANET. 20 00:00:56,870 --> 00:00:59,580 And originally, way back in the day, 21 00:00:59,580 --> 00:01:01,415 the ARPANET was very simple. 22 00:01:01,415 --> 00:01:05,515 It simply consisted of two hosts which were mainframes, 23 00:01:05,515 --> 00:01:07,112 so this is even before laptops or 24 00:01:07,112 --> 00:01:08,864 PCs were generated. You had 25 00:01:08,864 --> 00:01:12,071 these two monstrous computers that were talking to each other, 26 00:01:12,071 --> 00:01:13,833 and that was the early form of networking, 27 00:01:13,833 --> 00:01:18,505 having one mainframe be able to connect and get the resources of 28 00:01:18,505 --> 00:01:19,379 another mainframe. 29 00:01:19,379 --> 00:01:21,927 It was a point-to-point connection 30 00:01:21,927 --> 00:01:24,045 using circuit switching lines, 31 00:01:24,045 --> 00:01:25,148 actually using the phone lines. 32 00:01:25,148 --> 00:01:27,883 The mainframes were located at different universities, 33 00:01:27,883 --> 00:01:28,890 different colleges. 34 00:01:28,890 --> 00:01:31,000 I think they were in the same state originally. 35 00:01:31,000 --> 00:01:33,112 I think they were both in California originally. 36 00:01:33,112 --> 00:01:35,301 But they used basically the telephone 37 00:01:35,301 --> 00:01:37,246 lines to get to each other 38 00:01:37,246 --> 00:01:39,560 and transfer their data. 39 00:01:39,560 --> 00:01:42,722 Wait, went a little fast there. 40 00:01:42,722 --> 00:01:45,892 So keep in mind, back in these early days here, 41 00:01:45,892 --> 00:01:50,082 there was no such thing as a LAN - as a Local Area Network. 42 00:01:50,082 --> 00:01:52,480 And this is important to conceptualize 43 00:01:52,480 --> 00:01:56,214 because I don't know if you're like me or not, 44 00:01:56,214 --> 00:01:59,058 but when I try to visually think, 45 00:01:59,058 --> 00:02:01,305 visually picture in my mind, 46 00:02:01,305 --> 00:02:03,604 data going across a network, 47 00:02:03,604 --> 00:02:06,541 the image that comes to my head is, number one, 48 00:02:06,541 --> 00:02:09,964 I imagine data coming into my laptop - 49 00:02:09,964 --> 00:02:12,299 so inbound or ingress data - 50 00:02:12,299 --> 00:02:15,707 and I envision that as a series of electrical pulses, right? 51 00:02:15,707 --> 00:02:18,433 Zz, zz, zz, zz, electrical pulses coming in, 52 00:02:18,433 --> 00:02:20,860 and these electrical pulses are being 53 00:02:20,860 --> 00:02:23,156 interpreted as 1s and 0s. 54 00:02:23,156 --> 00:02:26,750 So my NIC card is seeing this electricity bouncing around on the cable, 55 00:02:26,750 --> 00:02:29,984 and it's interpreting that as a series of just thousands 56 00:02:29,984 --> 00:02:33,172 of 1s and 0s coming in really really quickly. 57 00:02:33,172 --> 00:02:37,303 And when I think in terms of sort of the OSI model 58 00:02:37,303 --> 00:02:40,179 and the stack and all that stuff, the first thing that comes to my mind is 59 00:02:40,179 --> 00:02:43,320 okay, those electrical pulses, that's my physical layer. 60 00:02:43,320 --> 00:02:44,829 That's Layer 1 of the OSI model - 61 00:02:44,829 --> 00:02:47,098 the electricity coming into the NIC card - 62 00:02:47,098 --> 00:02:50,026 and then I start going up the OSI model. 63 00:02:50,026 --> 00:02:51,510 This is the way I envision. I say, Okay, 64 00:02:51,510 --> 00:02:54,122 well, the next one is the data link layer - Layer 2. 65 00:02:54,122 --> 00:02:57,657 And at the data link layer, my NIC card says, Okay, let's see here. 66 00:02:57,657 --> 00:03:01,179 What rules am I following? What protocol am I following? 67 00:03:01,179 --> 00:03:02,475 Oh, I'm doing Ethernet. 68 00:03:02,475 --> 00:03:05,387 So according to the rules of Ethernet, 69 00:03:05,387 --> 00:03:07,757 the first few pulses of electricity 70 00:03:07,757 --> 00:03:10,170 are the pre-amble and the Ethernet frame. 71 00:03:10,170 --> 00:03:11,912 The next few pulses of electricity 72 00:03:11,912 --> 00:03:14,344 are the destination MAC followed 73 00:03:14,344 --> 00:03:15,450 by the source MAC. 74 00:03:15,450 --> 00:03:19,061 Then eventually, Layer 2 says, I'm done. 75 00:03:19,061 --> 00:03:21,572 I've looked at a few hundred bits. 76 00:03:21,572 --> 00:03:25,404 I've been able to interpret that as an Ethernet frame. 77 00:03:25,404 --> 00:03:29,464 Within those few hundred bits, it told me that the next section is 78 00:03:29,464 --> 00:03:32,859 going to be IP, and so now we go up to the networking layer. 79 00:03:32,859 --> 00:03:35,449 When I visualize this, I start at Layer 1, 80 00:03:35,449 --> 00:03:38,086 I go to Layer 2, and then Layer 3 and on up. 81 00:03:38,086 --> 00:03:41,579 Why I'm bringing it up right here is because originally, 82 00:03:41,579 --> 00:03:45,353 when the original ARPANET was designed, 83 00:03:45,353 --> 00:03:47,907 there really wasn't a Layer 2. 84 00:03:47,907 --> 00:03:49,424 There was a Layer 1. 85 00:03:49,424 --> 00:03:51,282 It was a circuit switched line using 86 00:03:51,282 --> 00:03:52,793 telephone lines for one mainframe 87 00:03:52,793 --> 00:03:54,950 to call another mainframe, but there 88 00:03:54,950 --> 00:03:56,688 was no such thing as Ethernet 89 00:03:56,688 --> 00:04:00,437 originally, back in these days, back in the early 1960s. 90 00:04:00,437 --> 00:04:03,620 So there was no such thing as MAC addresses. 91 00:04:03,620 --> 00:04:07,779 A lot of times, people assume that historically, 92 00:04:07,779 --> 00:04:09,485 Layer 2 came out first, 93 00:04:09,485 --> 00:04:13,278 MAC addresses, and then IP came out after that. 94 00:04:13,278 --> 00:04:15,762 But it's actually just the opposite. 95 00:04:15,762 --> 00:04:20,812 TCP/IP came out before local area networks came out, 96 00:04:20,812 --> 00:04:22,865 before Ethernet. 97 00:04:22,865 --> 00:04:24,741 So as it says here, All communications 98 00:04:24,741 --> 00:04:26,236 originally were point-to-point, 99 00:04:26,236 --> 00:04:28,704 and initially, it was like circuit switching, 100 00:04:28,704 --> 00:04:31,980 which is another way of saying, the phone lines. 101 00:04:31,980 --> 00:04:36,244 And then, as more and more networks start coming up, 102 00:04:36,244 --> 00:04:37,456 they were still point-to-point - 103 00:04:37,456 --> 00:04:39,676 one device talking to another device - 104 00:04:39,676 --> 00:04:42,942 but they start using other types of media at the physical layer, 105 00:04:42,942 --> 00:04:47,375 like satellite uplinks, like direct cable connections. 106 00:04:47,375 --> 00:04:49,980 I don't mean cable modem, I mean a physical, 107 00:04:49,980 --> 00:04:53,087 hardwired cable from one mainframe in one building 108 00:04:53,087 --> 00:04:55,135 to another mainframe in another building. 109 00:04:55,135 --> 00:04:57,436 That's what I'm talking about there. 110 00:04:57,436 --> 00:05:02,463 So as these point-to- point networks were being developed, 111 00:05:02,463 --> 00:05:06,165 as it says, There was a need to develop a protocol so that hosts 112 00:05:06,165 --> 00:05:07,977 on these disperate networks could 113 00:05:07,977 --> 00:05:09,286 communicate with each other. 114 00:05:09,286 --> 00:05:12,125 So the idea was, Okay, I've just 115 00:05:12,125 --> 00:05:14,598 developed a very primitive network 116 00:05:14,598 --> 00:05:18,376 where my mainframe can talk to another mainframe. 117 00:05:18,376 --> 00:05:22,991 Now, what if I expand that to where my mainframe now has the 118 00:05:22,991 --> 00:05:27,280 ability to talk to six other mainframes? 119 00:05:27,280 --> 00:05:29,562 Still direct connections. 120 00:05:29,562 --> 00:05:31,662 What if I expand that a little bit further? 121 00:05:31,662 --> 00:05:35,209 What if I say, I want my mainframe 122 00:05:35,209 --> 00:05:38,507 to talk to Sally's mainframe, 123 00:05:38,507 --> 00:05:42,086 and then jump through Sally's mainframe 124 00:05:42,086 --> 00:05:43,720 to Bob's mainframe on the 125 00:05:43,720 --> 00:05:46,781 other side? Now, it's not point-to-point, 126 00:05:46,781 --> 00:05:49,161 it's me talking to somebody else, 127 00:05:49,161 --> 00:05:50,966 and then going through them to 128 00:05:50,966 --> 00:05:51,532 somebody else. 129 00:05:51,532 --> 00:05:52,453 And they start saying, Okay, we 130 00:05:52,453 --> 00:05:54,347 need some sort of address to do that. 131 00:05:54,347 --> 00:05:56,798 So when I connect to Sally, I need 132 00:05:56,798 --> 00:05:57,967 to have some way of telling her, 133 00:05:57,967 --> 00:06:00,565 Hey, I don't really want to talk to you. 134 00:06:00,565 --> 00:06:02,242 I don't really need your data. 135 00:06:02,242 --> 00:06:03,713 I just need you to take what I'm 136 00:06:03,713 --> 00:06:06,712 sending you and pass it on to Bob 137 00:06:06,712 --> 00:06:11,298 behind you. So this is where the whole idea of TCP/IP originally 138 00:06:11,298 --> 00:06:12,657 became invented. 139 00:06:12,657 --> 00:06:14,146 They said okay, well, we need some 140 00:06:14,146 --> 00:06:17,303 sort of address so that when I'm 141 00:06:17,303 --> 00:06:19,981 sending my data to Sally, she knows it's not for her, 142 00:06:19,981 --> 00:06:22,051 it's for the person behind her, so 143 00:06:22,051 --> 00:06:24,116 she can establish a connection. 144 00:06:24,116 --> 00:06:26,319 We also need to figure out some ways to make, 145 00:06:26,319 --> 00:06:27,755 that data reliable, 146 00:06:27,755 --> 00:06:32,790 like how do I know if I send something to Bob way out there, 147 00:06:32,790 --> 00:06:34,639 how do I know if it got there? 148 00:06:34,639 --> 00:06:38,141 How long should I wait before I determine that oh, 149 00:06:38,141 --> 00:06:39,900 it doesn't look like it got there. 150 00:06:39,900 --> 00:06:41,400 What should I do about that? 151 00:06:41,400 --> 00:06:46,057 So they actually developed TCP right along the same time as IP. 152 00:06:46,057 --> 00:06:48,139 So TCP was developed to answer 153 00:06:48,139 --> 00:06:51,407 questions of how do I make this very unreliable, 154 00:06:51,407 --> 00:06:55,208 very primitive connection reliable for me? 155 00:06:55,208 --> 00:06:57,421 What do I do when stuff is lost? 156 00:06:57,421 --> 00:06:59,237 Then of course, they put IP along 157 00:06:59,237 --> 00:07:02,215 with that so we can have addressing. 158 00:07:02,215 --> 00:07:04,016 Just to give you some interesting 159 00:07:04,016 --> 00:07:06,477 terminology, back in the original ARPANET, 160 00:07:06,477 --> 00:07:08,620 these two or three colleges or 161 00:07:08,620 --> 00:07:10,050 universities that had mainframes 162 00:07:10,050 --> 00:07:11,018 talking to each other, 163 00:07:11,018 --> 00:07:14,198 that they actually developed a whole unique box, 164 00:07:14,198 --> 00:07:16,211 a whole unique system that the 165 00:07:16,211 --> 00:07:18,426 mainframe would connect to and then 166 00:07:18,426 --> 00:07:20,390 these boxes - these black boxes - is 167 00:07:20,390 --> 00:07:21,731 actually what form the network. 168 00:07:21,731 --> 00:07:23,189 These black boxes would use the 169 00:07:23,189 --> 00:07:25,163 circuit switching lines to talk to 170 00:07:25,163 --> 00:07:26,749 each other. And they were called-- 171 00:07:26,749 --> 00:07:28,440 has anybody studied the history of 172 00:07:28,440 --> 00:07:29,585 the Internet? Does anybody know what 173 00:07:29,585 --> 00:07:32,574 those original - I would say routers - 174 00:07:32,574 --> 00:07:34,695 what was the name of the very first 175 00:07:34,695 --> 00:07:36,843 routers that were developed that 176 00:07:36,843 --> 00:07:38,704 these mainframes connected to talk to each other? 177 00:07:38,704 --> 00:07:40,654 Does anybody know? 178 00:07:40,654 --> 00:07:44,507 It actually has kind of a funny sounding acronym. 179 00:07:44,507 --> 00:07:48,839 They were called IMPs or Internet Messaging Processors. 180 00:07:48,839 --> 00:07:50,168 They were huge. They were like the 181 00:07:50,168 --> 00:07:52,741 size of a refrigerator, and of course, 182 00:07:52,741 --> 00:07:55,570 the mainframe was like the size of your whole house. 183 00:07:55,570 --> 00:07:57,024 But the mainframe would connect 184 00:07:57,024 --> 00:07:58,539 to this big refrigerator size box 185 00:07:58,539 --> 00:08:02,529 called an IMP and it actually was the IMP that needed to be addressed. 186 00:08:02,529 --> 00:08:04,158 The IMP needed to have an address 187 00:08:04,158 --> 00:08:07,433 so it could talk to the IMP in Standford, 188 00:08:07,433 --> 00:08:09,271 could talk to the IMP in Berkeley, 189 00:08:09,271 --> 00:08:10,606 or the IMP in Stanford 190 00:08:10,606 --> 00:08:13,007 could talk to the IMP in Los Angeles. 191 00:08:13,007 --> 00:08:14,587 That's where they originally came up 192 00:08:14,587 --> 00:08:18,844 with the idea of Layer 3 addressing. 193 00:08:18,844 --> 00:08:21,275 The main point I want you to take 194 00:08:21,275 --> 00:08:23,993 away from here is that number one, 195 00:08:23,993 --> 00:08:26,051 the very, very first networks were 196 00:08:26,051 --> 00:08:29,290 point-to-point only, because number two, 197 00:08:29,290 --> 00:08:31,918 there was no concept of local area networks. 198 00:08:31,918 --> 00:08:33,362 There was no concept of something 199 00:08:33,362 --> 00:08:35,022 called a broadcast domain where 200 00:08:35,022 --> 00:08:39,020 a whole bunch of devices could see each other on the same wire. 201 00:08:39,020 --> 00:08:40,432 That had not been created yet. 202 00:08:43,674 --> 00:08:46,635 This is what networks looked like back in the early days. 203 00:08:46,635 --> 00:08:52,033 You had these internet messaging processors connecting to always uo 204 00:08:52,033 --> 00:08:56,541 permanent circuits. 205 00:08:56,541 --> 00:08:59,062 The original Layer 3 protocol that 206 00:08:59,062 --> 00:09:00,282 they used to address these things 207 00:09:00,282 --> 00:09:01,374 actually wasn't even IP. 208 00:09:01,374 --> 00:09:03,180 They came up with a precursor to that, 209 00:09:03,180 --> 00:09:04,511 which was called the Network 210 00:09:04,511 --> 00:09:06,909 Control Protocol - NCP. 211 00:09:06,909 --> 00:09:11,059 And NCP didn't even really-- the only kind of addressing it used 212 00:09:11,059 --> 00:09:12,563 was like for port numbers, 213 00:09:12,563 --> 00:09:16,182 like whatever protocols were running on that mainframe, 214 00:09:16,182 --> 00:09:18,807 each protocol had sort of its own unique port number 215 00:09:18,807 --> 00:09:21,512 and that's how they addressed things. 216 00:09:21,512 --> 00:09:24,257 And then of course, we had dial-up circuits, 217 00:09:24,257 --> 00:09:27,562 where people would use modems to connect to each other, 218 00:09:27,562 --> 00:09:29,727 or satellite networks. 219 00:09:29,727 --> 00:09:32,777 So these were the early days. 220 00:09:32,777 --> 00:09:34,808 Then people said - and this is what I described earlier - 221 00:09:34,808 --> 00:09:37,133 they say, Well, what if I, in the future, 222 00:09:37,133 --> 00:09:39,541 need to jump through something? 223 00:09:39,541 --> 00:09:41,728 What if I need to connect-- 224 00:09:41,728 --> 00:09:43,895 as we can see here, this mainframe 225 00:09:43,895 --> 00:09:48,389 on the far left wants to connect all the way to the mainframe in 226 00:09:48,389 --> 00:09:50,218 the bottom, so we've got to jump 227 00:09:50,218 --> 00:09:53,170 through a couple things to do that. 228 00:09:53,170 --> 00:09:57,116 So it was the vision of these early Internet pioneers 229 00:09:57,116 --> 00:09:59,644 that if somehow people could connect 230 00:09:59,644 --> 00:10:01,559 these disparate networks together 231 00:10:01,559 --> 00:10:02,847 - a satellite network connected 232 00:10:02,847 --> 00:10:04,655 to a modem network connected to a 233 00:10:04,655 --> 00:10:06,860 dial network - if they could somehow 234 00:10:06,860 --> 00:10:08,713 connect all these things together, 235 00:10:08,713 --> 00:10:12,822 you would now have networks connected by a series of hops. 236 00:10:12,822 --> 00:10:14,213 And so there was going to be a need for 237 00:10:14,213 --> 00:10:16,473 some kind of networking addressing scheme, 238 00:10:16,473 --> 00:10:19,643 flow control, air correction and detection, 239 00:10:19,643 --> 00:10:23,972 and all that stuff, and that is where TCP/IP was born, 240 00:10:23,972 --> 00:10:26,355 with a need to solve the problems 241 00:10:26,355 --> 00:10:30,239 introduced by what you see right here. 242 00:10:30,239 --> 00:10:33,309 So the original designers of TCP/IP said, 243 00:10:33,309 --> 00:10:34,057 Okay, well one of the things we're 244 00:10:34,057 --> 00:10:36,807 going to need is each hop in 245 00:10:36,807 --> 00:10:39,237 the network is going to need an address 246 00:10:39,237 --> 00:10:41,285 so when we send data, that 247 00:10:41,285 --> 00:10:45,638 hop knows is that data for you, or for someone behind you? 248 00:10:45,638 --> 00:10:47,690 And so the original designers of IP said, 249 00:10:47,690 --> 00:10:49,905 Okay, well let's see here. 250 00:10:49,905 --> 00:10:51,445 Everything is viewed by computers 251 00:10:51,445 --> 00:10:53,561 as binary. It's just 1s and 0s, 1s and 0s, 252 00:10:53,561 --> 00:10:54,892 it's just a string of binary. 253 00:10:54,892 --> 00:10:56,900 So they said, Well, 254 00:10:56,900 --> 00:10:59,647 in however many meetings they had, 255 00:10:59,647 --> 00:11:00,609 they decided and that address is 256 00:11:00,609 --> 00:11:02,796 going to be 32-bits long. 257 00:11:02,796 --> 00:11:04,960 They said that a unique network 258 00:11:04,960 --> 00:11:07,071 address is going to be 32-bits long, 259 00:11:07,071 --> 00:11:08,753 and they said, Okay, well, you know-- 260 00:11:08,753 --> 00:11:12,040 remember this is like the late 1960s now, 261 00:11:12,040 --> 00:11:16,399 like 1969, 1970 - and at this point in time, 262 00:11:16,399 --> 00:11:20,372 there's literally a handful of these networks. 263 00:11:20,372 --> 00:11:22,413 So they said, Well, let's see here. 264 00:11:22,413 --> 00:11:24,060 A 32-bit address, 265 00:11:24,060 --> 00:11:26,126 I don't really see how there's ever 266 00:11:26,126 --> 00:11:27,474 going to need to be anymore than 267 00:11:27,474 --> 00:11:29,158 a couple of hundred networks. 268 00:11:29,158 --> 00:11:30,807 This is all experimental. 269 00:11:30,807 --> 00:11:32,509 We're just seeing if this works. 270 00:11:32,509 --> 00:11:34,040 So of this 32-bit address, 271 00:11:34,040 --> 00:11:37,413 we'll just say that the first 25% of it - 272 00:11:37,413 --> 00:11:41,319 the first 8-bits - will represent the network, 273 00:11:41,319 --> 00:11:42,842 and then the remaining bits will 274 00:11:42,842 --> 00:11:46,477 represent that unique IMP or mainframe 275 00:11:46,477 --> 00:11:48,247 on the network. 276 00:11:48,247 --> 00:11:50,597 Keep in mind, the original IP address 277 00:11:50,597 --> 00:11:52,229 was 32-bits long - just like 278 00:11:52,229 --> 00:11:55,536 it is today - but key difference was, 279 00:11:55,536 --> 00:11:57,240 it was understood that of that 280 00:11:57,240 --> 00:12:00,759 32-bit address, only the first eight 281 00:12:00,759 --> 00:12:03,337 bits at the front end represented 282 00:12:03,337 --> 00:12:04,639 the network address. 283 00:12:04,639 --> 00:12:07,403 If you think in terms of binary, you realize that with eight bits 284 00:12:07,403 --> 00:12:09,314 to play with, you're pretty limited 285 00:12:09,314 --> 00:12:10,871 in how many networks you have. 286 00:12:10,871 --> 00:12:14,432 As a matter of fact, you only have 254 networks available. 287 00:12:14,432 --> 00:12:15,960 Now with eight bits, technically, 288 00:12:15,960 --> 00:12:17,648 if you think of every possible 289 00:12:17,648 --> 00:12:19,384 combination of binary you can come 290 00:12:19,384 --> 00:12:23,220 up with from 00000 up to 11111, 291 00:12:23,220 --> 00:12:26,050 and everything in between, technically, 292 00:12:26,050 --> 00:12:29,516 that gives you 256 combinations 293 00:12:29,516 --> 00:12:33,974 of numbers, of bits you can come up with with eight bits to play with. 294 00:12:33,974 --> 00:12:36,263 But the early designers of IP said, 295 00:12:36,263 --> 00:12:41,712 Well, two of those combinations are not going to be usable as an address. 296 00:12:41,712 --> 00:12:45,239 The combination where the network is all 0s, 297 00:12:45,239 --> 00:12:47,651 so the first eight bits, if those are all 0s, 298 00:12:47,651 --> 00:12:49,915 that represents like a default route - 299 00:12:49,915 --> 00:12:51,538 a route to anywhere. 300 00:12:51,538 --> 00:12:56,222 Then the other combination is if all of those bits are 1s, 301 00:12:56,222 --> 00:12:57,865 that's considered a broadcast. 302 00:12:57,865 --> 00:13:00,202 It's like sending something to anybody. 303 00:13:00,202 --> 00:13:04,179 So those two numbers out of 256 you could not use, 304 00:13:04,179 --> 00:13:06,718 that left 254. 305 00:13:06,718 --> 00:13:10,557 Back in 1969, 1970, they were thinking, 306 00:13:10,557 --> 00:13:11,444 We're never going to use 307 00:13:11,444 --> 00:13:14,462 254 networks. This is experimental. 308 00:13:14,462 --> 00:13:15,687 This is for fun. 309 00:13:15,687 --> 00:13:19,122 Of course we know, that didn't turn out to be the case. 310 00:13:19,122 --> 00:13:23,314 Now what's kind of interesting is, it was actually very forward 311 00:13:23,314 --> 00:13:25,162 thinking of these people to come 312 00:13:25,162 --> 00:13:27,369 up with a networking address where 313 00:13:27,369 --> 00:13:30,206 you had a network address and then a bunch of host bits. 314 00:13:30,206 --> 00:13:34,469 Because if you think about it, there were no LANs back then. 315 00:13:34,469 --> 00:13:35,864 There were no broadcast domains. 316 00:13:35,864 --> 00:13:37,721 It was just point-to-point. 317 00:13:37,721 --> 00:13:39,520 They could've come up with a scheme where they said, 318 00:13:39,520 --> 00:13:42,359 Okay, every device is just going to have a 32-bit number. 319 00:13:42,359 --> 00:13:44,812 We're not going to divide this between network and host. 320 00:13:44,812 --> 00:13:46,784 You're going to have a unique name. 321 00:13:46,784 --> 00:13:48,128 I'm going to have a unique name. 322 00:13:48,128 --> 00:13:51,716 We're all just going to know each other's unique names. 323 00:13:51,716 --> 00:13:52,826 But they didn't do that. 324 00:13:52,826 --> 00:13:55,340 They took those 32-bit number and they divided it - 325 00:13:55,340 --> 00:13:59,592 8 bits for the network, 24 bits on the end for host. 326 00:13:59,592 --> 00:14:02,224 Because they did that, it was setting 327 00:14:02,224 --> 00:14:04,269 the stage for a few years later 328 00:14:04,269 --> 00:14:07,353 when LANs and Ethernet would come out 329 00:14:07,353 --> 00:14:08,770 and those host bits would take 330 00:14:08,770 --> 00:14:10,687 on a lot more relevance. 331 00:14:13,683 --> 00:14:16,839 So we can see here in this particular case, 332 00:14:16,839 --> 00:14:19,217 we've got four unique networks. 333 00:14:19,217 --> 00:14:22,027 So if we only have 8-bits to play with, 334 00:14:22,027 --> 00:14:24,246 it would say something like, Okay network number 1, 335 00:14:24,246 --> 00:14:27,491 you can see there, it's going to be 7 zeros followed by a 1. 336 00:14:27,491 --> 00:14:32,015 Network number 2, it's going to be 6 zeros followed by a 10. 337 00:14:32,015 --> 00:14:34,264 So as long as those 8-bit patterns 338 00:14:34,264 --> 00:14:35,903 are unique from each other, 339 00:14:35,903 --> 00:14:37,223 they're different, 340 00:14:37,223 --> 00:14:40,615 they could be recognized as being different networks. 341 00:14:46,198 --> 00:14:50,653 All right, now here we go into the 1970s. 342 00:14:50,653 --> 00:14:55,440 So in the late 1970s, now Ethernet 343 00:14:55,440 --> 00:14:57,254 and Token Ring came on the scene. 344 00:14:57,254 --> 00:14:58,793 Some of you guys might be saying, Token Ring? 345 00:14:58,793 --> 00:15:00,781 What's that? That's not part of the CCNE. You're right. 346 00:15:00,781 --> 00:15:03,411 Token Ring died out many, many years ago, 347 00:15:03,411 --> 00:15:04,764 but back in this day, 348 00:15:04,764 --> 00:15:09,215 they were competing Layer 2 protocols, data link layer protocols. 349 00:15:09,215 --> 00:15:11,640 Both Ethernet and Token Ring were 350 00:15:11,640 --> 00:15:14,125 founded on the same idea that you 351 00:15:14,125 --> 00:15:16,748 could have a bunch of devices, 352 00:15:16,748 --> 00:15:19,345 still probably mainframes or big servers, 353 00:15:19,345 --> 00:15:21,873 but a bunch of devices all connected 354 00:15:21,873 --> 00:15:25,115 to some common network media 355 00:15:25,115 --> 00:15:28,380 and able to see each other, be able to talk to each other. 356 00:15:28,380 --> 00:15:29,533 For example Ethernet, 357 00:15:29,533 --> 00:15:34,254 the original Ethernet was a big thick coaxial cable, very similar 358 00:15:34,254 --> 00:15:36,294 to the cable that goes into your cable TV set. 359 00:15:36,294 --> 00:15:39,116 It was big, it was yellow, it wasn't really bendable, 360 00:15:39,116 --> 00:15:40,722 and the idea was you could have 361 00:15:40,722 --> 00:15:43,581 several mainframes all clamped into 362 00:15:43,581 --> 00:15:46,573 that same cable and if they were running Ethernet, 363 00:15:46,573 --> 00:15:49,327 now they could see each other on that cable. 364 00:15:49,327 --> 00:15:52,006 If any mainframe started transmitting voltage, 365 00:15:52,006 --> 00:15:53,852 started transmitting electricity on that cable, 366 00:15:53,852 --> 00:15:58,548 you had more than one device on that cable that could see it. 367 00:15:58,548 --> 00:16:01,734 This is the whole idea of a broadcast domain. 368 00:16:01,734 --> 00:16:04,628 A broadcast domain is a collection 369 00:16:04,628 --> 00:16:07,492 of devices connecting to a common 370 00:16:07,492 --> 00:16:11,182 network media, let's just say it's a cable to make it simple. 371 00:16:11,182 --> 00:16:14,276 In that broadcast domain, if one 372 00:16:14,276 --> 00:16:16,162 of those devices starts using that 373 00:16:16,162 --> 00:16:18,905 network media, starts transmitting electricity on it, 374 00:16:18,905 --> 00:16:22,617 voltage on it, all the other devices see that. 375 00:16:22,617 --> 00:16:24,204 They're privy to that. 376 00:16:24,204 --> 00:16:25,412 So that was different, right? 377 00:16:25,412 --> 00:16:27,094 Back in the early internet, it was 378 00:16:27,094 --> 00:16:28,703 just two devices connected to 379 00:16:28,703 --> 00:16:30,956 a cable and that was it. 380 00:16:30,956 --> 00:16:32,959 Now, with Ethernet, you've got the 381 00:16:32,959 --> 00:16:35,673 concept of three or four or five 382 00:16:35,673 --> 00:16:37,449 devices could all be connected to 383 00:16:37,449 --> 00:16:38,604 that same cable and they could 384 00:16:38,604 --> 00:16:41,191 all see each other. 385 00:16:41,191 --> 00:16:43,482 So now we have another-- now we had 386 00:16:43,482 --> 00:16:45,549 a requirement that did not exist previously. 387 00:16:45,549 --> 00:16:49,894 Previously with just two devices on a cable, 388 00:16:49,894 --> 00:16:53,529 when device A started fluctuating the electricity, 389 00:16:53,529 --> 00:16:55,496 there's only one place it could go - 390 00:16:55,496 --> 00:16:59,336 device B. Device B knew, Okay, if I see some electricity coming in, 391 00:16:59,336 --> 00:17:02,418 some 1s and 0s, it's got to be for me 392 00:17:02,418 --> 00:17:04,955 because there is only me and device A 393 00:17:04,955 --> 00:17:05,527 on the cable. 394 00:17:05,527 --> 00:17:07,188 There's nobody else it could be for. 395 00:17:07,188 --> 00:17:11,035 There was really no need for any kind of addressing at Layer 2 396 00:17:11,035 --> 00:17:13,225 because it was point-to-point. 397 00:17:13,225 --> 00:17:15,859 Now with the broadcast domain, with Ethernet, 398 00:17:15,859 --> 00:17:18,159 we do have the requirement for an address, 399 00:17:18,159 --> 00:17:22,650 because now we could potentially have 30 devices all seeing that 400 00:17:22,650 --> 00:17:25,191 same electrical energy, all being 401 00:17:25,191 --> 00:17:26,700 privy to these 1s and 0s going 402 00:17:26,700 --> 00:17:28,941 across the cable, and now they need to know, 403 00:17:28,941 --> 00:17:30,219 Is that for me 404 00:17:30,219 --> 00:17:32,254 or can I safely ignore it? 405 00:17:32,254 --> 00:17:34,051 So that's why with Ethernet they said, 406 00:17:34,051 --> 00:17:38,112 Okay, we need to build in an address called a MAC address, 407 00:17:38,112 --> 00:17:41,755 a Layer 2 address into Ethernet, so that when I put stuff on the wire, 408 00:17:41,755 --> 00:17:44,246 I can address it to a unique individual. 409 00:17:44,246 --> 00:17:46,542 And so when I see stuff coming on the wire, 410 00:17:46,542 --> 00:17:50,783 I know if it's for me or if it's not for me. 411 00:17:50,783 --> 00:17:52,728 Now also keep in mind that the 412 00:17:52,728 --> 00:17:54,821 original developers of Ethernet and 413 00:17:54,821 --> 00:17:59,026 Token Ring, they said, Well, Ethernet and Token Ring, 414 00:17:59,026 --> 00:18:01,711 there's protocols out there 415 00:18:01,711 --> 00:18:03,142 right now that it could carry, 416 00:18:03,142 --> 00:18:06,299 like Ethernet might be carrying IP behind it, 417 00:18:06,299 --> 00:18:09,237 but maybe in the future someone will 418 00:18:09,237 --> 00:18:11,430 develop other types of protocols. 419 00:18:11,430 --> 00:18:14,048 We don't want to limit-- as a developer of Ethernet, 420 00:18:14,048 --> 00:18:15,911 let's say I'm the designer of Ethernet, 421 00:18:15,911 --> 00:18:18,461 I don't want to limit or restrict 422 00:18:18,461 --> 00:18:22,038 myself to where my Ethernet protocol 423 00:18:22,038 --> 00:18:26,002 is only ever going to be able to carry IP packets. 424 00:18:26,002 --> 00:18:29,035 I want to design it so it's fluid, so it's scalable, 425 00:18:29,035 --> 00:18:32,197 so that if anybody develops another protocol five, 426 00:18:32,197 --> 00:18:35,439 ten, fifteen years from now, my Ethernet protocol, 427 00:18:35,439 --> 00:18:40,640 which was developed way back in 1972, can carry that new thing. 428 00:18:40,640 --> 00:18:44,606 So this is why Ethernet needed its own unique address. 429 00:18:44,606 --> 00:18:46,552 A lot of times when we think of Ethernet, 430 00:18:46,552 --> 00:18:49,395 logically in our minds we think, Oh, Ethernet carries IP. 431 00:18:49,395 --> 00:18:50,415 Ethernet carries IP. 432 00:18:50,415 --> 00:18:52,858 Well, that's true, but Ethernet can 433 00:18:52,858 --> 00:18:55,555 carry hundreds of different protocols, 434 00:18:55,555 --> 00:19:03,022 not just IP. So the designers of Ethernet were to assume that 435 00:19:03,022 --> 00:19:05,080 a frame might carry non-IP protocols 436 00:19:05,080 --> 00:19:07,362 so they put their own address 437 00:19:07,362 --> 00:19:08,995 into an Ethernet frame. 438 00:19:08,995 --> 00:19:13,995 [music]