WEBVTT 0:00:02.800000 --> 0:00:07.780000 Hello and welcome to this video titled, A History and Purpose of the Internet 0:00:07.780000 --> 0:00:12.700000 Protocol. In this video, the topics I'm going to cover are the early development 0:00:12.700000 --> 0:00:16.460000 of packet switching, and what is packet switching? 0:00:16.460000 --> 0:00:20.180000 We're going to define that and see why it was something that needed to 0:00:20.180000 --> 0:00:25.040000 come about, and we're going to do an overview of the Internet Protocol. 0:00:25.040000 --> 0:00:26.700000 So, let's get started. 0:00:26.700000 --> 0:00:29.300000 So, let's start with packet switching. 0:00:29.300000 --> 0:00:33.440000 After all, IP was developed in the response to the need for packet switched 0:00:33.440000 --> 0:00:38.000000 networks, why were packet switched networks developed, what need were 0:00:38.000000 --> 0:00:39.560000 they developed for? 0:00:39.560000 --> 0:00:43.020000 Well, way back in the early days, maybe even before some of you guys watching 0:00:43.020000 --> 0:00:48.720000 were even born, back in the late 1950s to early 1960s, early networks 0:00:48.720000 --> 0:00:52.620000 relied on dedicated telephone lines between disparate networks to transport 0:00:52.620000 --> 0:00:55.480000 data. What does that mean? 0:00:55.480000 --> 0:01:00.480000 Well, from the earliest days when Alexander Graham Bell invented the whole 0:01:00.480000 --> 0:01:03.960000 telephone network, and people started stringing up telephone wires all 0:01:03.960000 --> 0:01:07.160000 throughout the country and throughout the world, you know, initially, 0:01:07.160000 --> 0:01:11.060000 those telephone wires were used to transmit electrical energy, but that 0:01:11.060000 --> 0:01:13.400000 electrical energy carried your voice. 0:01:13.400000 --> 0:01:16.480000 So, you would pick up the handset, whatever it looked like back in the 0:01:16.480000 --> 0:01:19.600000 late 1800s, you would speak into it. 0:01:19.600000 --> 0:01:25.000000 As you spoke, the air coming out of your voice would vibrate like a magnet 0:01:25.000000 --> 0:01:28.400000 in there, which would create an electrical current that would vibrate 0:01:28.400000 --> 0:01:32.960000 sort of in peril to what your air was doing coming out of your vocal cords. 0:01:32.960000 --> 0:01:36.040000 So, that electrical current vibrating at different frequencies and rates 0:01:36.040000 --> 0:01:40.440000 would go along these telephone lines, and at the other end, the electrical 0:01:40.440000 --> 0:01:43.900000 current would then vibrate another magnet, the receiver, which would push 0:01:43.900000 --> 0:01:46.660000 out air, which would be your voice. 0:01:46.660000 --> 0:01:50.080000 Well, not long after that, people realized, hey, we could also use this 0:01:50.080000 --> 0:01:55.840000 exact same technology, these exact same wires, to transmit data as well, 0:01:55.840000 --> 0:01:57.660000 and so they started using it for that. 0:01:57.660000 --> 0:02:01.340000 So, now, in the early networks, it looks something like this. 0:02:01.340000 --> 0:02:07.600000 You might have a company right here and a company right here at the other 0:02:07.600000 --> 0:02:13.900000 end of these telephone lines, and maybe another company right here with 0:02:13.900000 --> 0:02:16.700000 some telephone lines between them. 0:02:16.700000 --> 0:02:20.260000 If I can just imagine those are telephone lines right there. 0:02:20.260000 --> 0:02:23.560000 So, let's just say this is, and these weren't really private companies, 0:02:23.560000 --> 0:02:28.800000 this was all developed for government agencies and universities and colleges 0:02:28.800000 --> 0:02:30.560000 and things of that nature. 0:02:30.560000 --> 0:02:35.380000 So, here we have, let's just say, university A, university B, and university 0:02:35.380000 --> 0:02:40.420000 C. Well, back in the early days, in order to transmit data, you would 0:02:40.420000 --> 0:02:42.900000 actually have separate computer systems. 0:02:42.900000 --> 0:02:47.620000 So, there would be a computer system that linked university A, I'll just 0:02:47.620000 --> 0:02:52.440000 put here CS, that would be their big mainframe computer that would connect 0:02:52.440000 --> 0:02:57.260000 to these wires right here, and that would connect to the computer system 0:02:57.260000 --> 0:03:00.360000 in company B, which connected to those wires. 0:03:00.360000 --> 0:03:05.980000 Now, if university or college A wanted to send data to the computer in 0:03:05.980000 --> 0:03:08.720000 college C, they had to move over physically. 0:03:08.720000 --> 0:03:11.880000 They had to actually like move into another room where there was another 0:03:11.880000 --> 0:03:17.000000 computer system, sit down in front of that terminal and start typing data, 0:03:17.000000 --> 0:03:23.420000 which would go over different telephone lines to reach location C. 0:03:23.420000 --> 0:03:26.440000 So, some people started saying, wait a second, this is ridiculous. 0:03:26.440000 --> 0:03:30.560000 I have to keep getting up and moving around between different terminals 0:03:30.560000 --> 0:03:33.720000 in my room, where different terminals in different rooms in my building, 0:03:33.720000 --> 0:03:37.580000 or maybe even different buildings in my entire company here, wouldn't 0:03:37.580000 --> 0:03:45.440000 it be nice if I could just sit down at one terminal and depend and maybe 0:03:45.440000 --> 0:03:49.340000 address my data in such a way, so that when the data left my terminal, 0:03:49.340000 --> 0:03:52.700000 it knew which system to go out on. 0:03:52.700000 --> 0:03:55.560000 And so, instead of using these dedicated wires that go over here, these 0:03:55.560000 --> 0:03:58.360000 dedicated wires over here, wouldn't it be nice if somebody could invent 0:03:58.360000 --> 0:04:05.360000 some system that had in each location, A, B, and C, a dedicated device, 0:04:05.360000 --> 0:04:09.640000 we'll call this a networking device, and when my terminal connects to 0:04:09.640000 --> 0:04:12.940000 that networking device and I start sending data, my data will actually 0:04:12.940000 --> 0:04:16.960000 have some sort of address in it and this terminal device will know this 0:04:16.960000 --> 0:04:21.260000 computing device, this networking device will know, oh, based on the where 0:04:21.260000 --> 0:04:24.500000 this data is going, I need to choose this set of telephone lines to get 0:04:24.500000 --> 0:04:27.760000 it out, or this set of telephone lines to get it out. 0:04:27.760000 --> 0:04:34.600000 So, that is what precipitated the need for packet switch networks. 0:04:34.600000 --> 0:04:39.980000 So, as we can see here, in the early 1960s, this concept of packet switching 0:04:39.980000 --> 0:04:45.060000 was developed by an American computer scientist called Paul Barron and 0:04:45.060000 --> 0:04:49.160000 what he called it back then was not packet switching, but something called 0:04:49.160000 --> 0:04:53.100000 distributed adaptive message block switching. 0:04:53.100000 --> 0:04:56.580000 You'll never need to know that, you'll never be quizzed or tested on that 0:04:56.580000 --> 0:05:01.840000 in any exam, but this is just sort of showing how IP came to be in the 0:05:01.840000 --> 0:05:07.840000 first place. Okay, so this guy sort of came up with the concept of how 0:05:07.840000 --> 0:05:09.100000 could we do this? 0:05:09.100000 --> 0:05:14.040000 You know, how could we structure dating and he thought, well, hey, rather 0:05:14.040000 --> 0:05:18.080000 than just sending a long stream of data down these telephone lines right 0:05:18.080000 --> 0:05:22.700000 here, data is done, move over to the next terminal, send a long stream 0:05:22.700000 --> 0:05:27.060000 of data down those wires to that location, he said, what if we did this? 0:05:27.060000 --> 0:05:32.240000 What if we cut our data up into little blocks, what we now call packets, 0:05:32.240000 --> 0:05:35.100000 but he didn't call them packets back then, he said, let's divide the data 0:05:35.100000 --> 0:05:39.860000 up into little blocks and let's have each block have an address of maybe 0:05:39.860000 --> 0:05:44.860000 where it came from and where it's going and that way, if somebody else 0:05:44.860000 --> 0:05:48.500000 sometime down the line, because he didn't create the networking system, 0:05:48.500000 --> 0:05:52.100000 he didn't create routers, but if somebody else down the line comes up 0:05:52.100000 --> 0:05:55.660000 with a networking device that can recognize these addresses and send data 0:05:55.660000 --> 0:06:00.700000 this way or that way based on its address, now we have a packet switching 0:06:00.700000 --> 0:06:08.340000 method. So the basic concepts of packet switching as defined by the gentleman 0:06:08.340000 --> 0:06:12.920000 we just saw in the last slide were these, packet switching needed three 0:06:12.920000 --> 0:06:17.640000 components. We need to use a decentralized network with multiple paths 0:06:17.640000 --> 0:06:21.260000 between any two points. 0:06:21.260000 --> 0:06:25.500000 We need to take data and divide it up into discrete blocks, what we now 0:06:25.500000 --> 0:06:32.380000 call packets and the delivery of these messages needed to be done by store 0:06:32.380000 --> 0:06:34.260000 and forward switching. 0:06:34.260000 --> 0:06:37.040000 Now in case you're not familiar with that term store and forward switching, 0:06:37.040000 --> 0:06:43.200000 when when switches first came out way back in the dark ages, the idea 0:06:43.200000 --> 0:06:48.140000 was this. If you're a switch, if you're like a really early switch and 0:06:48.140000 --> 0:06:52.260000 I'm sending you a stream of data, well the address of where that data 0:06:52.260000 --> 0:06:55.140000 is going is at the very beginning of the data. 0:06:55.140000 --> 0:06:58.900000 You don't have to parse too far into the bits to find where that address 0:06:58.900000 --> 0:07:01.620000 is of where it's going to. 0:07:01.620000 --> 0:07:05.260000 So the idea was, if you're receiving a stream of data that's coming in 0:07:05.260000 --> 0:07:10.640000 on your port number one, let's say, you only have to buffer in a little 0:07:10.640000 --> 0:07:13.400000 bit of that data to be able to read the address. 0:07:13.400000 --> 0:07:15.440000 Just some of the data at the front end. 0:07:15.440000 --> 0:07:19.500000 Once you know where the address is and you the switch, determine that, 0:07:19.500000 --> 0:07:23.320000 oh, this day is actually going to go out port number eight. 0:07:23.320000 --> 0:07:26.160000 Now you can start forwarding it out port number eight, even though I'm 0:07:26.160000 --> 0:07:29.300000 not actually done sending it to you yet, I'm port number one. 0:07:29.300000 --> 0:07:32.540000 So imagine that now the day is coming in on port number one, the electrical 0:07:32.540000 --> 0:07:36.660000 signals, the bits are still coming in and at exactly the same time, you're 0:07:36.660000 --> 0:07:40.380000 switching it out on port number eight, because you already saw the address 0:07:40.380000 --> 0:07:42.660000 field at the beginning of that data. 0:07:42.660000 --> 0:07:45.460000 Now that was called cut through switching. 0:07:45.460000 --> 0:07:49.680000 Now not a lot of switches do that these days, because several decades 0:07:49.680000 --> 0:07:53.440000 ago people realized, well, wait a second, what if there was something 0:07:53.440000 --> 0:07:54.880000 that data that was bad? 0:07:54.880000 --> 0:07:56.960000 Like what if that frame was corrupted in some way? 0:07:56.960000 --> 0:08:01.340000 It's too late, it's already gone, it's already going out the egress port. 0:08:01.340000 --> 0:08:05.840000 So some people said, hey, maybe it'd be a better idea for the switch to 0:08:05.840000 --> 0:08:10.740000 just buffer and take in all of the data from beginning to end, even though 0:08:10.740000 --> 0:08:15.240000 it knows the destination pretty quickly, just stored all in memory. 0:08:15.240000 --> 0:08:20.780000 And then once the data is stored in its entirety by the switch, then switch 0:08:20.780000 --> 0:08:22.320000 it out the egress port. 0:08:22.320000 --> 0:08:25.280000 That way the switch can decide, oh, this frame is corrupted, it's bad 0:08:25.280000 --> 0:08:28.820000 in some way, we can discard it, or you can do other things as well. 0:08:28.820000 --> 0:08:33.100000 And that was called store and forward switching, which is what most switches 0:08:33.100000 --> 0:08:35.760000 do these days, store and forward switching. 0:08:35.760000 --> 0:08:40.300000 And you can see here, this was a critical component of packet switched 0:08:40.300000 --> 0:08:47.760000 networks. Now, a few years later, in 1973, the US Defense Advanced Research 0:08:47.760000 --> 0:08:51.500000 Projects Agency, okay, after they were done studying aliens in different 0:08:51.500000 --> 0:08:56.360000 galaxies, they shifted their focus and they said, hey, we need to, there's 0:08:56.360000 --> 0:09:01.540000 now packet networks out there, okay, so it had been, you know, six, seven 0:09:01.540000 --> 0:09:03.700000 years since, since Dr. 0:09:03.700000 --> 0:09:08.080000 Barron had come up with his packet switching concepts, and some packet 0:09:08.080000 --> 0:09:12.360000 networks had started to be developed, but they were different, they weren't 0:09:12.360000 --> 0:09:15.940000 homogenous, they were definitely not connected because they operate in 0:09:15.940000 --> 0:09:20.800000 different ways. And the US Defense Advanced Research Projects Agency, 0:09:20.800000 --> 0:09:25.000000 there's a mouthful for you, they said, hey, we should come up with a way 0:09:25.000000 --> 0:09:28.980000 of linking networks, maybe not every network, how about just the networks 0:09:28.980000 --> 0:09:31.560000 that we the military use. 0:09:31.560000 --> 0:09:37.480000 Because after all, if we have have a radar system, this detecting an incoming 0:09:37.480000 --> 0:09:42.520000 missile, and somebody blows away that radar system, how are we going to 0:09:42.520000 --> 0:09:46.540000 let other networks around us know that, hey, get ready a missiles coming 0:09:46.540000 --> 0:09:49.540000 in. So they said, hey, we should connect all these radar systems. 0:09:49.540000 --> 0:09:52.820000 And this was actually the basis of all this, they want to interconnect 0:09:52.820000 --> 0:09:57.220000 radar defense systems together in a network that was resilient. 0:09:57.220000 --> 0:10:01.980000 So that if one part of the network got taken out, messages and warnings 0:10:01.980000 --> 0:10:07.180000 and stuffs could still get to end systems through redundant paths by using 0:10:07.180000 --> 0:10:10.660000 packet networking or packet switching. 0:10:10.660000 --> 0:10:15.140000 So 1973 is when it really took off because the US government got behind 0:10:15.140000 --> 0:10:19.680000 this and started really building out these packet networks, and they put 0:10:19.680000 --> 0:10:24.140000 a quote out there, they said, hey, everybody, all these different companies, 0:10:24.140000 --> 0:10:26.640000 we need some standardized way to do this. 0:10:26.640000 --> 0:10:29.500000 Because right now nobody's really agreed on what the addresses should 0:10:29.500000 --> 0:10:32.940000 look like. Should there be a source and destinations or anything else 0:10:32.940000 --> 0:10:36.240000 that needs to be appended to the data when it goes onto a network. 0:10:36.240000 --> 0:10:38.200000 So we need some standard created. 0:10:38.200000 --> 0:10:42.660000 So they put out a request for different companies saying, hey, why don't 0:10:42.660000 --> 0:10:45.920000 you guys all put your quotes together as to how you would do it. 0:10:45.920000 --> 0:10:48.920000 And whichever one we select will give you, you know, a crazy amount of 0:10:48.920000 --> 0:10:50.740000 money and we'll start developing it. 0:10:50.740000 --> 0:10:55.080000 Well, this is how TCP IP was invented. 0:10:55.080000 --> 0:10:58.980000 This came from one of the companies that came up and they said, hey, here's 0:10:58.980000 --> 0:11:00.580000 our response to what you want. 0:11:00.580000 --> 0:11:02.080000 And TCP IP was developed. 0:11:02.080000 --> 0:11:07.360000 And here it is, the de facto standard today. 0:11:07.360000 --> 0:11:12.020000 So TCP IP actually originally was one big program. 0:11:12.020000 --> 0:11:15.500000 There was no separate TCP and IP. 0:11:15.500000 --> 0:11:17.400000 It was all together. 0:11:17.400000 --> 0:11:20.940000 And then later on, they decide to break it out and make TCP functionality 0:11:20.940000 --> 0:11:23.380000 different than IP functionality. 0:11:23.380000 --> 0:11:26.200000 So right now it is real quickly, we're going to funk, we're going to focus 0:11:26.200000 --> 0:11:31.120000 on what is the internet protocol, what is this thing that came out in 0:11:31.120000 --> 0:11:36.360000 response to DARPA's request to get this going. 0:11:36.360000 --> 0:11:40.200000 So IP has been around, as you can see, for decades, it's been around for 0:11:40.200000 --> 0:11:43.760000 a long time is currently, well, the current version of IP is actually 0:11:43.760000 --> 0:11:49.040000 IP version six. But IP version four is still predominant. 0:11:49.040000 --> 0:11:53.160000 So right now in the world is IP version four and IP version six, IP version 0:11:53.160000 --> 0:11:56.420000 six is starting to gain more and more traction. 0:11:56.420000 --> 0:12:00.080000 This video series is not about IP version six, but here at I and E, we've 0:12:00.080000 --> 0:12:02.640000 got lots of other videos that do go into that. 0:12:02.640000 --> 0:12:06.340000 Here we're focused mostly on IP version four in this course. 0:12:06.340000 --> 0:12:09.200000 And that has been pretty much the standard for the last several decades. 0:12:09.200000 --> 0:12:14.760000 Even today in 2019, you're going to find vastly more devices running IP 0:12:14.760000 --> 0:12:17.600000 version four than IP version six. 0:12:17.600000 --> 0:12:19.760000 So let's talk about IP version four. 0:12:19.760000 --> 0:12:23.060000 Now you might be saying, but Keith, what happened IP versions one, two, 0:12:23.060000 --> 0:12:25.220000 and three? Well, you can Google that. 0:12:25.220000 --> 0:12:27.320000 There's some interesting historical reading for that. 0:12:27.320000 --> 0:12:31.380000 But I'll tell you what, you will never in your lifetime find any devices 0:12:31.380000 --> 0:12:34.660000 running IP versions one, two, or three. 0:12:34.660000 --> 0:12:35.980000 Okay, they just don't exist. 0:12:35.980000 --> 0:12:38.900000 Everything runs IP version four. 0:12:38.900000 --> 0:12:43.660000 So IP version four resides at the OSI layer three, the network layer. 0:12:43.660000 --> 0:12:47.820000 So if you're familiar with the seven layers of the OSI model, the internet 0:12:47.820000 --> 0:12:52.380000 protocol takes up layer three, the networking layer. 0:12:52.380000 --> 0:12:55.280000 It is connectionless. 0:12:55.280000 --> 0:12:56.440000 What does that mean? 0:12:56.440000 --> 0:13:02.260000 That means that that some protocols, when they take the data and they 0:13:02.260000 --> 0:13:05.440000 in the protocol says, hey, I'll take your data and I'll send it to its 0:13:05.440000 --> 0:13:09.020000 destination. Some of those protocols first will say, Hey, but before I 0:13:09.020000 --> 0:13:12.440000 do that, let me make sure the destination is actually there. 0:13:12.440000 --> 0:13:14.300000 Let me make sure he's alive. 0:13:14.300000 --> 0:13:17.520000 Let me make sure that he's ready to process my incoming data. 0:13:17.520000 --> 0:13:21.560000 When I send my data, him, let me get an acknowledgement back to make sure 0:13:21.560000 --> 0:13:23.080000 it actually got there. 0:13:23.080000 --> 0:13:27.840000 That's considered a connection oriented protocol IP does not do that. 0:13:27.840000 --> 0:13:32.700000 So in the development of IP, so remember, TCP and IP were originally together 0:13:32.700000 --> 0:13:36.880000 and TCP actually does do that thing. 0:13:36.880000 --> 0:13:41.800000 But then they decide to split TCP off from IP and have them as both standalone 0:13:41.800000 --> 0:13:47.760000 protocols. So IP by itself has no reliability, no verifications that the 0:13:47.760000 --> 0:13:49.340000 destination exists. 0:13:49.340000 --> 0:13:53.900000 All IP says is, Hey, data, give me your data or application application, 0:13:53.900000 --> 0:13:54.860000 give me your data. 0:13:54.860000 --> 0:14:01.640000 And I'll put a header on the front of it that has a from where it's going 0:14:01.640000 --> 0:14:04.080000 to maybe a few other things. 0:14:04.080000 --> 0:14:06.260000 And then I'll just send it out on the network. 0:14:06.260000 --> 0:14:08.880000 And IP says, I'm not going to make any guarantees that the destination 0:14:08.880000 --> 0:14:11.360000 exists, that it got there. 0:14:11.360000 --> 0:14:14.120000 If you want that type of information, you'll have to get it elsewhere 0:14:14.120000 --> 0:14:17.260000 from like TCP or something else. 0:14:17.260000 --> 0:14:20.340000 So IP itself is connection list. 0:14:20.340000 --> 0:14:25.640000 And what IP really does is it provides, like it says here, an encapsulation 0:14:25.640000 --> 0:14:29.660000 method, it gives you a header and an addressing structure for data to 0:14:29.660000 --> 0:14:33.300000 be transmitted across routed networks. 0:14:33.300000 --> 0:14:38.300000 So that is the sort of history and intent behind the internet protocol 0:14:38.300000 --> 0:14:43.720000 was to be able to take these discrete chunks of data, give them a header 0:14:43.720000 --> 0:14:48.400000 or wrapper. And that wrapper would be sufficient to put it into the network. 0:14:48.400000 --> 0:14:51.840000 And the network could look at that header and know how to get that data 0:14:51.840000 --> 0:14:54.160000 to an ultimate destination. 0:14:54.160000 --> 0:14:57.540000 And as we go through here, we'll dig into what that header looks like, 0:14:57.540000 --> 0:14:59.680000 what those addresses look like. 0:14:59.680000 --> 0:15:05.180000 But that concludes this video on a history and introduction to IP before.