[MUSIC] So we'll talk a little bit about protocols, network protocols, Internet protocols specifically and what their responsibilities are. We won't go into great depth. But we want to give you a flavor of what's contained inside these protocols and what they define. So what does the protocol do? An Internet Protocol, it does a lot. An Internet Protocol, meaning IP or TCP or UDP, they do several things. One basic thing is provide a naming scheme. Actually that's a very important thing. So IP, you've probably heard of an IP address. That comes from the Internet Protocol and it's a unique address that every network component has. Every component on the Internet has to have an IP address, and so each host and router gets assigned at least one of these Internet addresses. Now when you say least one, basically it should be one to every network adapter. But a particular machine can have many network adapters. By network adapter, I mean hardware interfaces to the network. So if you look at a laptop, you'll often have a wi-fi adapter, but you'll also have a wired adapter and a wired ethernet jack. You might not. Depends on your laptop, but you might have an ethernet jack where you can plug into the wall, right? So, you might have two network adapters there. Two ethernet Internet network adapters. So you might get two IP addresses, one for each. Usually you focus on one, but it's possible to have more. So, Internet protocol, one very important thing it does is it gives this naming scheme, this unique naming scheme. Every machine on the Internet has to have a different name. And now there are problems with this, right, because IP addresses are not that long. IP addresses are four byte numbers, four single bytes, so you've seen them referred to as these, let's see like 124.254.27.33. Okay, and they're four numbers separated by dots. So it's four numbers and each number can range from 0 to 255. So there aren't that many addresses compared to how many network components there are these day, because of IOT. There's so many things on a network. You need so many addresses. So there are a lot of challenges in dealing with that. We won't really cover those right now. But the idea is everything on the network has to have a unique IP address. Also, these protocols provide a delivery mechanism. So what we mean by that is that whenever you send a message from one machine to another machine, you gotta go through a sequence of machines, okay? You've gotta define a packet, a chunk of data, and it's gotta be sent from machine to machine to machine because these machines are not directly wired together. They're not within radio range directly. There has to be a route taken, so it has to hop from one machine to the next. So these protocols define methods of doing routing. Of how you send a message through a sequence of machines to get to the destination you wanna go to, that's one important role. Another thing is that it defines the header. All right? The header and the payload. So by header, if you look at any packet. You can usually break it up into header and payload, maybe footer too, but let's just talk about header. So, payload is the actual data that you want to send. The header is the information that is sort of metadata. It's about the packet, but it's not the actual payload of the packet, not the important part of the packet. It's not the data you want to send. But it has information about the packet. Now generally the header information comes from the network protocols. So the data in the network protocol, that the network protocol uses, it gets put into the header, typically. So we'll look at that a little bit, here. So yeah and like I said I brought this up last lecture. Citizen ban radio, you say over at the end of talking and roger means data received and so on. So that would be called footer. So you say a message and then at the end of your message you say over. And that word over is actually added to the end of the message. So the payload is the text. So say I say something like, hello, my name is Ian Harris, over. Hello, my name is Ian Harris, that's the actual payload. And then the over is overhead, we call that footer because its at the end. But, text that you put, something that you add to the beginning you'd call header. And header and footer same thing a beginning and an end but its the same thing. Excess overhead data is required to help you adhere to the protocol but its not the actual data that you want to send. So, these rules enable efficient communication. These rules, these header and footer rules, the data you put in them, you need that so that at the receiving end you know like, for instance, with CB, you know oh, I heard the word, over. That means I can talk now, right? So, in order to establish efficient communication, you need that information that's contained in the header and footer. And, for instance, with routing and the Internet, some of that information inside the header will be important for routing. Things like this. So, all the different functions that these protocols handle, they use information inside the header typically to do that. There are many different tasks that are performed by protocols, by network protocols. A lot of different tasks. And we can't go into details of all of those. But some of those are routing, you know, figuring out a route sequence of machines to send a packet through to get to its destination. Flow control, right? So making sure that you don't have a bottleneck. That all of your traffic isn't going through one router. That you spread it out over different routers so that you can get good traffic flow. Arbitration. Arbitration means when you have some kind of a network segment where only one packet can travel at a time and two packets want to travel. So say two machines want to send messages on this one piece of network segment at the same time. Then, somehow you have to arbitrate. You have to figure out which one gets to go first, right? So, there are rules for all these things, and all these rules are encoded inside the network protocols. So, the protocols define those rules. What do you do when two machines want to talk on the same wire at the same time, right? The set of rules, that's called network protocol. When you want to send a machine message from A to B, how do you figure out what the next node is that you want to send your message to, right? That's defined by the protocols and so on. So, these protocols are very complicated in general. And because they are so complicated, what people have done, is they've divided the protocols into layers. So, OSI, open system interconnect model, OSI model. It presents what's called a protocol stack. Classification protocol. So it takes all the things that these network protocols do and it divides them up. So routing is one layer. Flow control is another layer. Arbitration is maybe another layer, right? It just separates them. Now, all these layers have to be taken care of, but the separation is generally good for coding frankly. Because writing one piece of code that handles all those complex tasks at once, it would be one nasty piece of code. So it makes a lot of sense to cut that code up, to separate the responsibilities across different layers, and then write different pieces of code for each layer. And then let the different layers of code work together. So that's what the OSI model does. It proposes a set of layers. Now the Internet uses a similar set of layers, maybe a more compressed version of that, but definitely the idea of taking all these complicated tasks and dividing them amongst different layers of protocols is a good thing to reduce the complexity and make the coding more manageable. So each layer has it's own responsibilities, and each layer uses different data. So different data usually in the header, right? So for instance, if you're looking at routing, there's a layer that's doing routing, you're gonna need to use routing information in the header, and actually place routing information in the header. Where, if on the other hand, if your working on float control, right? And flow control's maybe at a different layer, then flow control doesn't necessarily need to know the routing information, not the details of it. But it might need to know the capacity at a node, how many messages can a particular node take at one time. So that would be different information that also might be present in the header, or something like that. So each, or not in the header, but they definitely, each layer uses different types of information to do its job. Thank you. [MUSIC]