[From the last episode: We reviewed the various communications concepts we’ve looked at so far, in preparation for a more in-depth discussion.]
How do machinesIn our context, a machine is anything that isn't human (or living). That includes electronic equipment like computers and phones. talk to each other? You could say that they do it by talking to each other in a way that’s inspired by how we humans talk to each other. We can hold conversations that are more streamlined than what machines can do, but there are ways that machines can approximate such a conversation.
At the root of it all is the electronic message. A message is… something a machine wants to say. It could be a statement returning some data. It could be a command to some other machine. It might simply be an acknowledgment that you received a prior message. Using English rather than machine-talk, you might have:
- “CurrentThe amount of electrical flow. Measured in amperes or amps (A). air pressure is 30 inches of mercury.”
- “Turn the heater down to 65.”
- “Copy that.”
A Mess of Messages
But, for every message that you might think of as natural – like the examples above – there are multiple messages going through systemsThis is a very generic term for any collection of components that, all together, can do something. Systems can be built from subsystems. Examples are your cell phone; your computer; the radio in your car; anything that seems like a "whole." for administrative and management reasons.
- When you go to a new website on your browser, you type the website name (not the IPThis can mean two things (at least):
• The Internet Protocol. Governs the addresses of sources and destinations on a network (without worrying about what’s in between). Used on Layer 3 of the stack.
• "Intellectual property." This can have lots of meanings, but, in the computer-chip world, it refers to parts of a chip design that have been built and optimized by one company, which then sells them to other companies that don’t want to design those blocks themselves. They’re not selling actual chips; they’re selling the design of a block that will be used within a chip.
address, which is the “real” address). Your computer keeps track of which IP addresses go with which URLs – for the places you’ve gone before. Need to go to a new place? You computer sends out a message asking if anyone (any of the so-called name serversA server that’s part of the internet infrastructure. Its job is to take a website name (like “InsideTheIoT.com” and return the IP address for that website. That lets us use human-friendly names that then get turned into machine-friendly addresses. out there) knows the IP address for the new website. Some name server (whose job is to return the IP address for some website name, like “InsideTheIoT.com”) will send a message back with the IP address. - If you have a website and you change hosts, then your IP address will change. Those name serversA computer with a dedicated purpose. Older familiar examples are print servers (a computer that controls local printing) and file servers (a computer used for storing files centrally). More modern examples are web servers (the computers that handle your web requests when you use your browser) or application servers (computers dedicated to handling the computing needs of a specific application). Servers are often powerful, expensive machines since they have to handle a heavy load. have to be updated, or else they’ll keep giving out the old IP address. So messages go out to the name servers to update the IP address of your website. While this can happen quickly, they tell you that it might take up to 72 hours for all name servers to be updated.
- When you’re on a website and you click on a pull-down menu, it’s likely that the menu contents aren’t already in your computer: your browser sends a quick message to the website to ask for whatever should be in the menu. That’s why it sometimes takes a sec for a menu to populate.
- When you use a cellphone, there’s tons of message trafficRefers to any kind of electronic message -- email, web request, streaming video, or anything else -- that travels over a network. going back and forth between your phone and the towers, keeping track of where you are and whether your phone is on and where to send calls when they come in.
- With some messages, after you send them, you have no way of knowing whether they actually arrived. With others, you get an acknowledgment (often abbreviated as ACK, as so eloquently uttered by Bill the Cat) that lets you know that it got there. In that case, if you don’t get an ACK, then you need to resend the original message.
With all of these examples, you never see these messages. They happen quietly in the background, and they hopefully happen quickly enough to where you may not even notice a delay.
Message Received, but… Understood?
But what is the content of these messages? That gets us back to our discussion of interoperability: the machines need to know how to talk to each other for this to work (just like with humans). Macintosh computers may or may not be able to exchange messages with Windows computers, for example (it depends on the message).
So how do we deal with that? That’s where protocols and standards come in: we come to agreement on how to do something. So, for example, when your computer wants the IP address for the website you’re trying to find? It sends out a message formatted according to a standard called the Address Resolution Protocol, or ARP.
You may remember the communication stacks we saw before. Many of these protocolsAn agreed way of doing something. Like a convention, except that protocols tend to be related to processes. belong in these stacks. For instance, ARP works between the Network layer (layer 3) and the Data link layer (layer 2).
But you may also recall that the top layer is the Application layer. That’s where the actual main function of some program works; the layers below it are simply (I use that word cautiously, since it’s anything but simple) support functions for the top layer.
So, while the bottom layers may be handled by standardsA way of doing something specific that has been agreed by multiple parties in an official manner. Some "standards" aren't official standards; the best ones have been established in an open fashion, where anyone with an interest can contribute and where large companies can't push little companies around., some system designer may create a private “language” for some use up in the application layer. If one company makes, say, thermostats, fans, and automatic windows, then they might make a controller that tells these things what to do, and they might use private instructions that no one else uses. Because they aren’t intended to work with anyone else, then it doesn’t matter that they can’t work with anyone else. You’ve got a walled garden.
It’s when you want to have devices from different companies talk together that interopThis refers to how well different pieces of equipment can work together. Macs and PCs, for instance have some limited interop, but there are many Mac devices that can't work on a PC, and vice versa. This is an important notion for systems, like the IoT, that involve many different pieces of equipment working together. is important. So then you still need agreement of some sort on how to create a message that all of the machines will understand.
So we’ve talked about messages, which represent something one machine wants to say to another. Next we’ll start talking about how those messages get around.
Leave a Reply