Welcome, back. So, I hope you enjoyed that. Now, I want to make it real clear that, when I give you a 15 minute video of an amazing inventor and computer scientist, you don't have to remember every word that that person says. Okay? it's more important to get the gist of it. I try to cover the things I really want you to know in my slides. You might want to listen to it more than once, or listen to my slides and then go back, but you're not, I, I don't want you to memorize it, I, I wanted to give you smart people, I want you to hear from the smart people who did all this cool work, in their own words. But when we hear from their own words, they're sometimes pretty technical, so just relax and enjoy listening to these people and understand that you're not going to get everything. But hopefully you'll come back and you'll get more and more later. So the idea was that he really started with this idea of wireless which was, we're going to share one medium, and the wireless and the wire, the Ethernet wire that he built, the coaxial cable that he built, was like a giant radio, except it ran in the ceiling. And, so, the design ended up really simple and that's been good for Ethernet over the years, and later WiFi is a, a variation of Ethernet. and so it turns out to be sometimes it's best to build something simple but that just make it go really fast and make it really cheap. He also formed the company 3 Con which was one of the first manufacturers of PC cards. And so back in the day you would go buy a PC and you would go buy a 3COM card and you'd plug it into the back of your computer. And so, there was a time when San Francisco stadium Candlestick Park was named 3COM Stadium and our friend Bob Metcalfe was involved in all of that. So, he's done many things throughout his life, and we're honored to have met him. So, we started with this four layer architecture, that says we're going to break down a big problem of cooperating applications across various kinds of networks. We're going to break it down, and we just got them talking about the Link Layer. It's literally, 20,000, maybe 50,000 engineers have spent the last 20 years figuring out how to make this work, because the layered architecture lets them think, although it was informed, they had 20,000, 50,000, I don't know, 20,000 engineers that think about that problem, and the, they ignore the rest of the problems. 'Kay they ignore the rest of the problems. That's great, because they've gotten really good at this one problem. Now, we're going to go like, you know, I don't know how many engineers. Let's just make it up, 5k engineers think about this next problem. The next problem is called, oh my colors got changed, the internetwork layer. It is the notion of forwarding each of the post cards with a from and a to address, forwarding enough times to get them all the way across the network. That's the next problem we're going to solve, we're going to stop thinking about the link layer, we're just going to assume it works, it's just magic. That's what a layered architecture gives you. You don't worry about the stuff above you. You don't worry about the stuff below you. You focus like crazy on the stuff that you're focusing on. So, the link layer only works on one link, right? It, it worries about one link, and there might be 15 or so of these links. But the Internet layer worries about all the links, and the proper sequence of links to follow to get from to Stanford. That's a kind of complex problem. We're not even going to worry about reliability. We are just going to worry about if I had a pack-, if I had a postcard with a from and a to address, a packet, can I get it there? How will I forward it? I assume the link layer is perfect so the Internet layer is the first end to end, because if you recall this vertical box, this set of boxes is the host starting computer, and this vertical set of boxes is the destination computer. So in this little raspberry pie, all four of these things, application, transport, IP, and the link is all part of this one gadget, okay? So IP is best effort and it's okay to drop data if things go bad. And that's one of it's charming, most charming features. But what it had to introduce, in addition to the Ethernet addresses or the media access layer or Mac addresses, is an address of the destination. Now, if you remember, the Mac addresses, the addresses for the link layer, come from the manufacturer. The moment this equipment is manufactured, it is burned in a serial number. But these move all around the world. If this runs here at the University of Michigan, it needs one address to connect to the network. One IP address, if it runs at Stanford, it needs a different IP address. So we have to be able to change these, so they're assigned different. So it's the worldwide number that is your like postcard address. It's like a phone number, right, so wherever I'm at, you call my phone, and this gadget rings, so its address Well that's actually kind of a[SOUND] bad example cause I used a sync on it. Okay. Ignore that. Phones use magic, they use crazy magic. So, and computers they're not as cool as phones. You have to change the address everywhere you go. We'll talk about how you change the address everywhere you go. The IP addresses are based on where the station is connected. They do get reorganized once in a great while but not very often. And you can even go to various websites on the internet and say IP address look up is the most common search and it will tell you something about where your coming from. Right? You know, kind of be sometimes really weird, because you might be at Starbucks, and it might send it all to St. Louis, and it might say, oh you're coming from St. Louis, even if you're not. So you can look it up, and you can look up other addresses as well. You can say oh, here's an IP address, I'm going to look this one up. First it starts by looking yours, but you can put in different addresses, like in this particular one If I put a different address in here, it will actually go look that address up. So the IP address format, it's four numbers that are separated by dots. Each of the number can be between 1 and 2,000 and 255 and it suggests a representation of a 32 bit number, back in the day, it kept the numbers small because it didn't want to use all the computer memory. and so, this is an example of an IP address. Four numbers between zero and 255, separated by dots, okay? Now the concept, the address is broken into two parts. There is the network number part which is the prefix, and then there is the computer number within network, 'kay? And it's kind of like phone numbers were before cellphones where the area code was where the phone was, and then this was within that area code, where to find it. And even in the older days, these were actually geographic too, right, so these numbers would be neighborhoods or whatever. These days, it's all electronic, so the precise mapping of a phone number to a geography is less precise. And that's why you get a cell phone number and you move to a whole new state, you keep your old phone cell phone number because it's become electronic. But in the early days, when it was actual relays and switches making the phone numbers work, they actually had to do with where. It's actually kind of fascinating how phones work. I ought to, I ought to teach a class on like how phones switches worked in the 1800s. Actually quite fascinating, because they were surprisingly simple. That's the interesting part is how simple turn of the century, well turn of last century, phone numbers were. So, lets get back to IP addresses. There's four numbers. Some part of those four numbers is a prefix. We call that the network number. And when the packet is in the middle of the network, it doesn't really look at these numbers, it only looks at the prefix, so it kind of thinks of all the packets going to a piece of the University of Michigan as 141.211.*.*, and then we, we assign these numbers within Michigan, and then this number is assigned to us by the internet authority that assigns numbers. So we say hey, we need some more and they give us a prefix. Then within that prefix we get to set up all the other things. So. This network number which is the prefix of the IP address is the way that a packet is routed through the internet as it progresses through the internet. And so it's sort of like if I start with, if I start with my computer here in U of M, and that's my number, that's my actual number. And here's a Stanford computer, and that's its number, alright? And I send a packet and I say, okay, I'm going to send it from 141 211 144 188 269 67 149 yada yada. As soon as the packet enters the network, it doesn't throw the data away, but it stops thinking about it. It only looks at the prefix and so it's simplify, greatly simplify what the routers have to do as it go across the hops on the internet. It's greatly simplified because it only looks at the first part. It doesn't have to look at the whole thing. [COUGH] And then this starts making decisions as to how to get there. So it says okay, I'll hop it over here, again it's like in Kansas City and says, what am I going to do here and I'll pick one of those two links and I'll go over here and then, as it exits the network, it dumps it somehow onto Stanford's campus. And then, it finds its way. Oh, it didn't find it to this one;, it found its way to that one. There you go. Unpredictable computers. Now it, so within the Stanford campus, these numbers mean something and the Stanford campus uses those numbers to get the thing to the actual real computer. And so it sort of used this prefix. You know, it has a real number, but then it uses the prefix in the middle and then the real number reappears at the end. So that's called a network number. And it greatly simplifies. It's complex enough to be in the middle and have tot worry about all these things coming from Kansas City and Beijing and, like, where do these things go to have to look at each one and know where every computer is is crazy. So that's why they call it the Internetwork Protocol, because it says "there's one network, there's another network, and the only thing I care about is the network number, and I am the Internetwork Protocol. I" P, in a network protocol. I'm just getting these things from one network to another network, and then it's up to that network to figure out how to get the darn thing to the right computer within it, and it's up to Stanford to figure out how to get it to the right computer at Stanford. So these things are called the network number, it's the prefix of the IP address. Now the key thing that its really a beautiful, beautiful design. because the, because the center of the network is both exceedingly complex in one way. That it's so big and so fast. But exceedingly simple in the other. It just has to move the data from point A to point B. If you think about it, it's even simpler. If we look at it from the perspective of this router, the router here I've got circled. Right? It just received a packet, it looks at the network number, and it actually doesn't even care, to some degree, where it really belongs. It only has one of two choices. It's going to go this way, it's going to go that way, right? Which one's better? And it turns out, if you look at it, either one will work. It turns out this one is better but if I went this way, it would just take an extra tenth of a second or something. Right? So it turns out that decisions that are made don't even have to be perfect. You can make the wrong decision, and the network automatically corrects. That's part of the goal of the network. And so it really simplifies and limits the need for each router to understand the entire network, which makes these routers, I draw 'em small on these diagrams on purpose. Because we think of them as small and fast, and only solving a really tiny problem but doing it really super awesome. So routers maintain what we call router tables. And they maintain a list of network numbers and the best outbound route for each of the network numbers. Now, the other thing that they do is they pass routes back and forth. And this is how they adapt to errors, right? They get updated dynamically. They ask each other for the best place. If they see a network number they haven't seen before, they ask their neighbors, then their neighbors' neighbors, and they go, "Oh, God, OK; I got a good way to get to 16749 And so there's all kinds of communication, but it's relatively slow and it doesn't have to be perfect. And so it's router tables are what routers have but they're indexed by the network number of the packets, not the host of the destination. So that's an amazing, amazing improvement in the performance and efficiency of the Internet core, the IP core. So it's really quite simple, right? You basically have a local area network on your campus. This might actually be your house too. House is kind of like a campus. And you can do all the crazy things you want hundreds of computers thousands of hundreds of servers and thousands of laptops. And you get one address that is the address of your campus. It's the network number of your campus to the rest of the world. And then all over the world people can send to you and by simply looking at the prefix. Data makes it to you. Keeps this really simple and really fast, OK? So it's beautiful. That's with a network number, one area code, one network number. It's the only thing has to be kept track of. A whole campus can be characterized within the quarter of the network as basically a single network number. Now, the reality is, it's usually a few of these. because they give them to you in smaller chunks, so you end up with you know, 20 or 30 of these things for your campus if you're a medium to large campus. Okay. So now I want to talk a little bit about the problem of computers that move around. So you have a laptop, and you use it at your local coffee shop, and then you close the lid and you go home and open it and it works home, and then you close the lid and you go to school and you open it, and talk to wireless at school and it works. It's like, Hey Dr. Chuck you just told me that I have to have this address and I can't talk on the internet if don't have the right address. And the packets are routed based on the prefix of this address. Why is it that I can be in three places: coffee shop, home, and school and it seems like everything works? Well, That's because while your computer has an Ethernet address that's baked into the factory. Most computers are configured when they first open up and connect to a Wifi to ask instead of having an IP address configured in your computer. They send a request out to say, hey I'm new here. Is there anyone who will give me an IP address that I might use for this particular location? And, if there is an access point, say, at your Starbucks, it says sure, use this one. You're at Starbucks, that's a good number for Starbucks. Now, it turns out that the prefix of this is exactly the prefix that the, the world sees all this traffic to Starbucks, so there's actually kind of a real address, Okay, and it gives you an address. Okay, so you ask, when your thing comes up, it asks, what can I get, and then it's told what address to use. So using one address while you're at Starbucks, a different address at home, and a different address yet again at school. So that's called the dynamic host configuration protocol. Now it turns out, with schools and homes and, there's just too many computers Give every computer a real address. And so we have these special addresses, they're called the non-routable addresses. So you'll probably notice if you go to one person's house, you will have a IP address of 192 dot 168 dot something dot something. Go to a different person's house it'll also be 192.168. something dot something. And you go to your house and it's 192.168. something dot something. And you're like, how can that work? I seem to have the same address. Well, that's because of a technology called network address translation, where each of the home routers actually has a unique and distinct address, but you're not seeing it. It's giving you a temporary address, an address that really can't run at all on the Internet.It only lives within the house, but then as your packets leave the house or leave the Starbucks, the real address is put in, and then when it comes back the real address is taken out and your local address is put in. So they're called non-routable addresses because if they ever escaped into the real internet, they'd be like, oh those are for your house, they're only for, they're not supposed to go very far and I don't even know where they go. They go nowhere in the core of the internet but they go properly inside your house. So the way this ends up working Is if you are at your coffee shop, the coffee shop has an address. You associate with their base access point. It gives you a non-routable address to use locally, and then as your traffic gets sent. This address is changed to the address, that address. You never see this happening. It's done as the packet goes through the base station. And then when the packet comes back, it comes back with this address. But then as it goes to the base station it switches back to this address. So even though this address is not the real address the network sees, they see you having this address here. So if you would do an IP lookup from a coffee shop, the coffee shop will be identified. You'll see the IP address here, and if you looked at your laptop, your laptop would not have that same address, because it's being translated in the access point. So then, you go home, and at home, your access point has a different address, but your computer asks your as, ask, address, asks your access point foreign address, and it gets a local address that's generated locally. And again, there is a mapping. It's called NAT, NAT. Oh I'll change the color. NAT, Network Address Translation. So as the packet goes through, it takes out the one address and puts in the second. Dave comes back. He takes the address out and puts the local one in. And the same thing happens at school. Alright, so, you're at school finally and you get a different address. They're not the same, but you look and the prefixes are the same. It's like they should be the same, but they're completely different because your school has a different address and there's a translation that goes back and forth as the data goes round and round. So just for the distance of the local Wi-Fi, or whatever, use these 192.168 numbers, and then they're translated to the real numbers by your network access points. So these are illegal inside this network, so if it ever saw a 192.168 It would just throw that packet away. They're only for very local connections. So with that, I'm wondering if by now, you know why this is funny. I'll give you a minute. OK. So the reason this is funny Is she traced the killer's IP address and it had a prefix of 192.168 which means that killer had to be within a short radius using likely the same WiFi access point which means it was close. Very scary. Hope you think it's funny. 'Course, XKCD is never exactly funny, but it hopefully makes you smile a little bit. So up till now,[COUGH] I've been talking about. [SOUND] So, up to now, I've been talking about this cloud network that's magic. And the packets take different routes and we don't know, but they show up. Remember the mail box, like, they just show up or don't show up, right? So, it turns out. That sometimes, we as engineers, want to take a look at what's going on inside the internet. And it turned out that there was a feature they added early on to help diagnose problems in the internet that we still use today. And it's so convenient that it's built right into your operating system. Y'know, in Macintosh or Linux, Traceroute is built in, and if you have Windows, you've got to install Traceroute. So just say Windows and Install Traceroute, and you'll find something. But there was a problem. So if you recall, I said that each router sees the world very narrowly, and simply sees a packet and makes a decision, one of one place. So let's say that here comes a packet on the way to Stanford, and these routers are sort of strangely configured. This router thinks it should go there, this router thinks it should go there, and this router thinks it shoud go there. Well it comes in. It goes like, oh, well I know where that one goes, there. So if you end up with this misconfigured router situation, you end up with your data going round and round in circles. It would actually, like, crush the network because it's like a whirlpool. You can't even notice that it's happening, because there might acutally be, you know, ten. You know there might be a bunch of them, and then it comes back and you send it around again. So you're filling up all your bandwidth. It's never going to get there, unless something changes, unless something crashes. It's not going to change because these routers think that's the best thing to do. They're mistaken. But they are, they can be mistaken because they're, they're operating with imperfect information. So how would you solve this problem? The routers are imperfect but they solve the problem with a thing called Time to Live field. So much like the network entrance translation tweaks the addresses on the way in and the way out, Time to Live is a field that routers change. Every time a packet goes through a router it subtracts one from this field. And it starts with a number between 25, it can be as high as 255 but it usually like 25. And what happens is, is every time the packet goes through a router, the number goes down by one. So, if it was, it would be come in here as 255 and it will go through here 254, and 253. It will come back it will be 252 and what would happen is eventually. We get to one of these guys and it hit 0 and they would decide okay, you've been running around to long we will throw you away. So the number goes down, and it always goes down but then when it hits 0 they throw the packet away. They say you have been through 255 hops. Chances are good you're never going to get to your destination. So the Traceroute command sort of cheats. Normal packets are sent with a TTL, or time to live, of like 30, 30 hops or 40 hops. But what Traceroute does is send broken packets It turns out that when a router throws away your packet most of the time it is courteous, and it sends back a notification and says hi I got your packet, I decremented it, subtracted one and it got to zero and I threw it away. Sorry about that. Here's here's who I am. I mean I really feel bad about throwing your packet away. Maybe you want to figure something else out. I don't know. Something must be messed up. It can't be my fault, but I threw it away. So what it does is, it first sends a packet with a time to live of one. So the first router goes like hello, this has been around a long time. Sets to zero, throws it away. Then sends a note back Then Traceroute sends a packet of two across. It goes hop, hop, and then it gets thrown away, and a little note comes back. So you can kind of build a map by sending enough packets and getting kind of a return rejection from one of the routers. It would have got there. So if, for example, I do a Traceroute from the University of Michigan to Stanford, you'd, if I did it now, it'd be a different set of things. [COUGH] I get this output, and if I take a look at this, this is the hop. So there's the first one, two, three, four through 14, 14 hops. So it takes 14 hops. Now interestingly, again I don't remember what the hop count was in the store in former days but is quite a few. And that's because it's optimizing geography. and so you can see the first hop is on my campus. Then the second and third hop are bouncing around my campus some more. Now we don't quite know where this one is. But now it's on an, on a national network called internet 2, internet 2, internet 2. This is probably going across the country. And then it ends up on scenic, which I think is sort of California's network, it bounces through California's network a couple of times. Let's see hprlax, that's Los Angeles. And this is, I don't know where that is. Los Angeles, that looks like it's making Oakland, I don't know, there's probably some meaning to these things. So it's making it through Oakland, then it's going to Stanford from something Okland. I don't know. But now it's on Stanford campus, and now it has three more hops to get across the Stanford campus To the Stanford campus's web server. Now what's also going on here, is it's keeping track of how long it's taking. It sends each one a couple of times, and so these are milliseconds, so milliseconds are thousandths of a second, so 534 milliseconds is a half a second. 490 is a half a second. So these are, like, half a second, half a second, oh, wait, no, no, sorry, not half a second, that'd be 4,000, well, 1,000 milliseconds would be one second so I got that all wrong. So, 0.49 milliseconds is like half of a thousandth of a second. So that's fast, fast. 6 milliseconds is 6 1/1000ths of a second. 76 milliseconds, which is 9 hops away, that's 76,000 or 7, 100s. So it takes about 7, 100s. Yeah, so like 77 over 1000. So, no 7 100's. Sorry, 7 100's of a second. It's less than a 10th of a second to get through 14 routers from Michigan to Stanford Less than a tenth of a second. Pretty impressive. Now, if I do a trace route from Ann Arbor, Michigan to East Lansing Michigan, Michigan State University, we have a very close connection. I mentioned the Merit Network, where we've have a close connection for a long time. So not only is it fewer hops, it's only eight hops to get to Michigan State. if you look at the, if you look at the hops here I'm bouncing around the campus for three, I'm bouncing through the state for two and bouncing on the Michigan State campus for three. So it's total of eight, two hops to get, two, three hops to get across my campus, two hops to get across the State of Michigan and three hops to get on campus. And it's really fast. It's 9 1000ths of a second which is less than a hundredth of a second. So really fast, you can kind of see it. Now if you ran this tracer out more than once, this might change. It doesn't change too fast, but legally it could change. I mean it, there's no guarantee it's going to be the same. It's highly likely it's going to be the same because the most efficient way is not going to change within a few seconds. But if you start in the middle of the day, and you do it the next day, it might change quite a bit. So it'd be something to play with. Run it. Print it out. And run it again at midnight, run it at noon, see if your Traceroute is different. Right, interesting. So here's an example of a Traceroute From University of Michigan to Peking University in China and and so it's again, you know it's. {COUGH} it bounces thru the state of my campus for a couple of hops. Alright my campus for a couple of hops. It bounces around the United States for a couple of hops. and then it starts crossing the Pacific Ocean. It goes this, there's traffic actually went through Seoul, Korea. And then it ended up in Beijing. Now the interesting thing is you can see that it looks like it's taking about 61 thousandths or six one hundredths, just over a, just almost, well, a half of a tenth of a second to get across the country. And then it starts taking longer. And then by the time it's going all the way to China and back, it's doing 256 milliseconds which is about a quarter of a second. Now the big different here is likely not traffic It is likely the speed of the light. It is how fast it takes light to get across the Pacific Ocean, so it takes awhile. the reason I think it's most likely[INAUDIBLE] numbers[INAUDIBLE][INAUDIBLE] load traffic because these are very consistent. [INAUDIBLE] pretty much all the time. So that suggests that we're not waiting for any traffic. We're getting through as fast as we physically can. Which is some combination of the speed of the link and the speed of light. So we just got done talking about how we add to every packet this global number, the IP address. It has the prefix of the network number in the internet part, the inter network, where it's really moving data from one network to another network and leaving it up to those destination networks how to, how to move it. we end up really simplifying the postcard, and the postcard ends up being a really apt example. But the key thing, especially when thinking about the four layer architecture that, the reason that, I think, TCP/IP succeeded was in this real complex problem of moving data between billions of computers, it kept the part in the middle real simple. It doesn't try to be perfect. It doesn't try to retransmit data. Doesn't try to store it, it doesn't try to keep it in the right order, it doesn't try to say that "if this packet went here I'm going to make sure the next one goes there." If the two packets, one gets ahead, we don't really care. It means it really fast and really scalable. And by keeping it simple and really fast, It solves really an amazing problem, but we yet have other problems to solve. So I want to close this lecture by introducing you to another person. So, Vint Cerf was a graduate student as the whole notion of packet-switching was being sort of examined and, both in the Federal Government at the Defense Advance Research Project Agency, DARPA, and in higher education. Both in the United States and Europe UK and elsewhere. So, Vint Cerf was kind of at the right place at the right time and we can be very thankful for that. He's credited as being one of the father's of the ARPANET. Which of course begat the internet. And so, Vint is going to talk to us, in a sense, going back even pre-ARPANET and bring us up packets and what packet's mean and then how that all flowed into the ARPANET And how the ARPANET evolved, to become the internet, Enjoy.