I T

I T
What Is Networking?

For such an extensive and involved subject, which includes so many different technologies, hardware devices and protocols, the definition of networking is actually quite simple. A network is simply a collection of computers or other hardware devices that are connected together, either physically or logically, using special hardware and software, to allow them to exchange information and cooperate. Networking is the term that describes the processes involved in designing, implementing, upgrading, managing and otherwise working with networks and network technologies.

Key Concept: A network is a set of hardware devices connected together, either physically or logically to allow them to exchange information.

Networks are used for an incredible array of different purposes. In fact, the definitions above are so simple for the specific reason that networks can be used so broadly, and can allow such a wide variety of tasks to be accomplished. While most people learning about networking focus on the interconnection of PCs and other “true” computers, you use various types of networks every day. Each time you pick up a phone, use a credit card at a store, get cash from an ATM machine, or even plug in an electrical appliance, you are using some type of network.

In fact, the definition can even be expanded beyond the world of technology altogether: I'm sure you've heard the term “networking” used to describe the process of finding an employer or employee by talking to friends and associates. In this case too, the idea is that independent units are connected together to share information and cooperate.

The widespread networking of personal computers is a relatively new phenomenon. For the first decade or so of their existence, PCs were very much “islands unto themselves”, and were rarely connected together. In the early 1990s, PC networking began to grow in popularity as businesses realized the advantages that networking could provide. By the late 1990s, networking in homes with two or more PCs started to really take off as well.

This interconnection of small devices represents, in a way, a return to the “good old days” of mainframe computers. Before computers were small and personal, they were large and centralized machines that were shared by many users operating remote terminals. While having all of the computer power in one place had many disadvantages, one benefit was that all users were connected because they shared the central computer.

Individualized PCs took away that advantage, in favor of the benefits of independence. Networking attempts to move computing into the middle ground, providing PC users with the best of both worlds: the independence and flexibility of personal computers, and the connectivity and resource sharing of mainframes. in fact, networking is today considered so vital that it’s hard to conceive of an organization with two or more computers that would not want to connect them together!







The Advantages (Benefits) of Networking

You have undoubtedly heard the “the whole is greater than the sum of its parts”. This phrase describes networking very well, and explains why it has become so popular. A network isn't just a bunch of computers with wires running between them. Properly implemented, a network is a system that provides its users with unique capabilities, above and beyond what the individual machines and their software applications can provide.

Most of the benefits of networking can be divided into two generic categories: connectivity and sharing. Networks allow computers, and hence their users, to be connected together. They also allow for the easy sharing of information and resources, and cooperation between the devices in other ways. Since modern business depends so much on the intelligent flow and management of information, this tells you a lot about why networking is so valuable.

Here, in no particular order, are some of the specific advantages generally associated with networking:
Connectivity and Communication: Networks connect computers and the users of those computers. Individuals within a building or work group can be connected into local area networks (LANs); LANs in distant locations can be interconnected into larger wide area networks (WANs). Once connected, it is possible for network users to communicate with each other using technologies such as electronic mail. This makes the transmission of business (or non-business) information easier, more efficient and less expensive than it would be without the network.

Data Sharing: One of the most important uses of networking is to allow the sharing of data. Before networking was common, an accounting employee who wanted to prepare a report for her manager would have to produce it on his PC, put it on a floppy disk, and then walk it over to the manager, who would transfer the data to her PC's hard disk. (This sort of “shoe-based network” was sometimes sarcastically called a “sneakernet”.)

True networking allows thousands of employees to share data much more easily and quickly than this. More so, it makes possible applications that rely on the ability of many people to access and share the same data, such as databases, group software development, and much more. Intranets and extranets can be used to distribute corporate information between sites and to business partners.

Hardware Sharing: Networks facilitate the sharing of hardware devices. For example, instead of giving each of 10 employees in a department an expensive color printer (or resorting to the “sneakernet” again), one printer can be placed on the network for everyone to share.

Internet Access: The Internet is itself an enormous network, so whenever you access the Internet, you are using a network. The significance of the Internet on modern society is hard to exaggerate, especially for those of us in technical fields.

Internet Access Sharing: Small computer networks allow multiple users to share a single Internet connection. Special hardware devices allow the bandwidth of the connection to be easily allocated to various individuals as they need it, and permit an organization to purchase one high-speed connection instead of many slower ones.

Data Security and Management: In a business environment, a network allows the administrators to much better manage the company's critical data. Instead of having this data spread over dozens or even hundreds of small computers in a haphazard fashion as their users create it, data can be centralized on shared servers. This makes it easy for everyone to find the data, makes it possible for the administrators to ensure that the data is regularly backed up, and also allows for the implementation of security measures to control who can read or change various pieces of critical information.

Performance Enhancement and Balancing: Under some circumstances, a network can be used to enhance the overall performance of some applications by distributing the computation tasks to various computers on the network.

Entertainment: Networks facilitate many types of games and entertainment. The Internet itself offers many sources of entertainment, of course. In addition, many multi-player games exist that operate over a local area network. Many home networks are set up for this reason, and gaming across wide area networks (including the Internet) has also become quite popular. Of course, if you are running a business and have easily-amused employees, you might insist that this is really a disadvantage of networking and not an advantage!
Key Concept: At a high level, networks are advantageous because they allow computers and people to be connected together, so they can share resources. Some of the specific benefits of networking include communication, data sharing, Internet access, data security and management, application performance enhancement, and entertainment.



Well, if that list isn't enough to convince you that networking is worthwhile, then… I have no idea what it is you do with your computers! J At any rate, it's quite possible that only some of the above items will match your particular circumstances, but at least one will definitely apply to almost every situation, assuming you own or manage more than one computer.



The Disadvantages (Costs) of Networking

Now that I have portrayed the great value and many useful benefits of networking, I must bring you crashing back to earth with that old nemesis of the realistic: TANSTAAFL. For those who are not Heinlein fans, this acronym stands for “There Ain’t No Such Thing As A Free Lunch”. Even though networking really does represent a “whole that is greater than the sum of its parts”, it does have some real and significant costs and drawbacks associated with it.

Here are a few of the items that balance against the advantages of networking.
Network Hardware, Software and Setup Costs: Computers don't just magically network themselves, of course. Setting up a network requires an investment in hardware and software, as well as funds for planning, designing and implementing the network. For a home with a small network of two or three PCs, this is relatively inexpensive, possibly amounting to less than a hundred dollars with today's low prices for network hardware, and operating systems already designed for networks. For a large company, cost can easily run into tens of thousands of dollars—or more.

Hardware and Software Management and Administration Costs: In all but the smallest of implementations, ongoing maintenance and management of the network requires the care and attention of an IT professional. In a smaller organization that already has a system administrator, a network may fall within this person's job responsibilities, but it will take time away from other tasks. In more substantial organizations, a network administrator may need to be hired, and in large companies an entire department may be necessary.

Undesirable Sharing: With the good comes the bad; while networking allows the easy sharing of useful information, it also allows the sharing of undesirable data. One significant “sharing problem” in this regard has to do with viruses, which are easily spread over networks and the Internet. Mitigating these effects costs more time, money and administrative effort.

Illegal or Undesirable Behavior: Similar to the point above, networking facilitates useful connectivity and communication, but also brings difficulties with it. Typical problems include abuse of company resources, distractions that reduce productivity, downloading of illegal or illicit materials, and even software piracy. In larger organizations, these issues must be managed through explicit policies and monitoring, which again, further increases management costs.

Data Security Concerns: If a network is implemented properly, it is possible to greatly improve the security of important data. In contrast, a poorly-secured network puts critical data at risk, exposing it to the potential problems associated with hackers, unauthorized access and even sabotage.

Most of these costs and potential problems can be managed; that's a big part of the job of those who set up and run networks. In the end, as with any other decision, whether to network or not is a matter of weighing the advantages against the disadvantages. Of course today, nearly everyone decides that networking is worthwhile.
Key Concept: Networking has a few drawbacks that balance against its many positive aspects. Setting up a network has costs in hardware, software, maintenance and administration. It is also necessary to manage a network to keep it running smoothly, and to address possible misuse or abuse. Data security also becomes a much bigger concern when computers are connected together.





Fundamental Network Characteristics

There are many different kinds of networks, and network technologies used to create them. The proliferation of networking methods has generally occurred for a very good reason: different needs require different solutions. The drawback of this is that there are so many different types of protocols and technologies for the networking student to understand! Before you can really compare these approaches, you need to understand some of the basic characteristics that make networks what they are. While network types may be quite dissimilar, they are often described and even contrasted on the basis of a number of common attributes.

In this section, I introduce and discuss a number of key networking concepts that describe and differentiate different types of networks and networking technologies. I also introduce and define a number of terms and “buzzwords” that you cannot avoid if you are going to learn about networks. The topics here include explanations of protocols, switching methods, types of network messages, message formatting, and ways of addressing messages. I also discuss the differences between client-server and peer-to-peer networking.
Note: If you have considerable experience in networking, you may not need to read everything in this section. I'd suggest scanning the headings of the various topics here; if you understand the terminology mentioned in a topic’s title, you can probably feel pretty safe in skipping it.




Networking Layers, Models and Architecture

One of the reasons why many people find networking difficult to learn is that it can be a very complicated subject. One of the chief reasons for this complexity is that networks consist of so many hardware and software elements. While a network user may only perceive that he or she is using one computer program (like a Web browser) and one piece of hardware (like a PC), these are only parts of a much larger puzzle. In order for even the simplest task to be accomplished on a network, dozens of different components must cooperate, passing control information and data to accomplish the overall goal of network communication.

The best way to understand any complex system is to break it down into pieces and then analyze what they do and how they interact. The most logical approach for this is to divide the overall set of functions into modular components, each of which is responsible for a particular function. At the same time, we also need to define interfaces between these components, which describe how they fit together. This enables us to simplify the complexity of networking by approaching it in digestible chunks.
Networking Layers

Networking technologies are most often compartmentalized in this manner by dividing their functions into layers, each of which contains hardware and/or software elements. Each layer is responsible for performing a particular type of task, as well as interacting with the layers above it and below it. Layers are conceptually arranged into a vertical stack. Lower layers are charged with more concrete tasks such as hardware signaling and low-level communication; they provide services to the higher layers. The higher layers in turn use these services to implement more abstract functions such as implementing user applications.

Dividing networks into layers this way is somewhat like the division of labor in a manufacturing facility, and yields similar benefits. Each hardware device or software program can be specialized to perform the function needed by that layer, like a well-trained specialist on an assembly line. The different modules can be combined in different ways as needed. Understanding how a network functions overall is also made much easier this way.

Networking Models

One other important benefit of layering is that it makes it possible for technologies defined by different groups to interoperate. For this to be possible, it is necessary for everyone to agree on how layers will be defined and used. The most common tool for this purpose is a networking model. The model describes what the different layers are in the network, what each is responsible for doing, and how they interact. A universally-accepted model ensures that everyone is on the same page when creating hardware and software.

The most common general model in use today is the Open Systems Interconnection (OSI) Reference Model, which concepts of seven stacked layers. These range from the Physical Layer (layer one) at the bottom, which is responsible for low-level signaling, to the Application Layer (layer seven) at the top, where application software is implemented. Understanding the OSI model is essential to understanding networking as a whole. I explain models and layers in more detail, as well as providing a complete description of the OSI Reference Model, in its own dedicated section.
Networking Architectures

Closely related to the concept of a model is that of an architecture. An architecture is essentially a set of rules that describes the function of some portion of the hardware and software that constitute a stack of layers. Such a rule-set usually takes the form of a specification or standard that describes how equipment and programs using the technology must behave. A networking architecture is designed to implement the functions associated with a particular contiguous set of layers of the OSI Reference Model, either formally or informally.

In this Guide we are, of course, interested in the TCP/IP protocol suite, which runs the Internet, and a complex set of technologies that spans many layers of the OSI model. It is by examining the various components of TCP/IP and how they implement different OSI model layers that we will really learn how TCP/IP works. For starters, the name of the suite, TCP/IP, comes from the Transmission Control Protocol (TCP), which operates at layer four of the OSI model, and the Internet Protocol (IP) that runs at OSI model layer three. IP provides services to layer four and uses services of layer two below it. TCP uses IP's functions and provides functions to the layers above it. The complete examination of TCP/IP starts by looking at its architecture and a second, special model that was developed specifically to make sense of TCP/IP.

Protocols: What Are They, Anyway?

If there’s one word you will get used to seeing a lot as you go through this Guide, it is this one: protocol. You will see reference to networking protocols, internetworking protocols, high-level protocols, low-level protocols, protocol stacks, protocol suites, sub-protocols, and so on. Clearly protocols are important, yet many reference works and standards use the term over and over again without ever explaining it. One reason for this may be because the term is somewhat vague and can have many meanings, which can make it difficult to grasp.
The Meaning of the Word “Protocol”

In some cases, understanding a technical term is easier if we go back to look at how the term is used in plain English. In the real world, a protocol often refers to a code of conduct, or a form of etiquette observed by diplomats. These people must follow certain rules of ceremony and form to ensure that they communicate effectively, and without coming into conflict. They also must understand what is expected of them when they interact with representatives from other nations, to make sure that, for example, they do not offend due to unfamiliarity with local customs. Even we “normal people” follow protocols of various sorts, which are sort of the “unwritten rules of society”.

This may seem to have little to do with networking, but in fact, this is a pretty good high-level description of what networking protocols are about. They define a language and a set of rules and procedures that enable devices and systems to communicate. Obviously, computers do not have “local customs”, and they hardly have to worry about committing a “faux pas” that might cause another computer to take offense. What networking protocols concern themselves with is ensuring that all the devices on a network or internetwork are in agreement about how various actions must be performed in the total communication process.

So, a protocol is basically a way of ensuring that devices are able to talk to each other effectively. In most cases, an individual protocol describes how communication is accomplished between one particular software or hardware element in two or more devices. In the context of the OSI Reference Model, a protocol is formally defined as a set of rules governing communication between entities at the same Reference Model layer. For example, the Transmission Control Protocol (TCP) is responsible for a specific set of functions on TCP/IP networks. Each host on a TCP/IP network has a TCP implementation, and they all communicate with each other logically at layer four of the OSI model.

While OSI Reference Model definitions are sometimes overly theoretical in nature, this particular one is rather accurate in assessing protocols in real-world networking. If something doesn’t specify a means of communication, it arguably isn’t a protocol.
Key Concept: A networking protocol defines a set of rules, algorithms, messages and other mechanisms that enable software and hardware in networked devices to communicate effectively. A protocol usually describes a means for communication between corresponding entities at the same OSI Reference Model layer in two or more devices.


Related Information: The formalized OSI Reference Model meaning of the word “protocol” is covered in the OSI model topic on horizontal layer communication.

Different Uses of the Word “Protocol”

Despite the strict OSI definition, the term “protocol” is often used colloquially to refer to many different concepts in networking. Some of the more common “alternative” uses of the word include the following:
Protocol Suites: It is very common to hear the word “protocol” used to refer to sets of protocols that are more properly called protocol suites (or stacks, in reference to a stack of layers). For example, TCP/IP is often called just a “protocol” when it is really a (large) set of protocols.

Sometimes, the name of the technology itself leads to this confusion. The Point-to-Point Protocol (PPP), for example, is not one protocol; it contains many individual protocols that serve different functions and even have distinct message formats. Thus, PPP is really a protocol suite, or alternately, can be considered a protocol with “sub-protocols”.

Microsoft Windows Protocols: One important example of the issue of referring to protocol suites as single protocols is the networking software in Microsoft Windows. It usually calls a full networking stack like TCP/IP or IPX/SPX just a “protocol”. When you install one of these “protocols”, however, you actually get a software module that supports a full protocol suite.

Other Technologies: Sometimes technologies that are not protocols at all are called protocols, either out of convention or perhaps because people think it sounds good. For example, TCP/IP Remote Network Monitoring (RMON) is often called a protocol when it is really just an enhancement to the Simple Network Management Protocol (SNMP)—which is a protocol!

So, does it really matter whether a protocol is a “true” protocol or not? Well, the networking hardware devices and software programs sure don’t care. J But hopefully having read about the term and what it means, you will be able to better understand the word when you encounter it in your studies—especially in the places where it may not always be used in a way entirely consistent with its formal definition.


In my “grand overview” of networking, I describe networks as devices that are connected together using special hardware and software, to allow them to exchange information. The most important word in that sentence is the final one: information. As you will see in your exploration of this Guide, there are many methods for exchanging information between networked devices. There are also a number of ways of categorizing and describing these methods and the types of networks that use them.

One fundamental way of differentiating networking technologies is on the basis of the method they use to determine the path between devices over which information will flow. In highly simplified terms, there are two approaches: either a path can be set up between the devices in advance, or the data can be sent as individual data elements over a variable path.
Circuit Switching

In this networking method, a connection called a circuit is set up between two devices, which is used for the whole communication. Information about the nature of the circuit is maintained by the network. The circuit may either be a fixed one that is always present, or it may be a circuit that is created on an as-needed basis. Even if many potential paths through intermediate devices may exist between the two devices communicating, only one will be used for any given dialog. This is illustrated in Figure 1.







Figure 1: Circuit Switching

In a circuit-switched network, before communication can occur between two devices, a circuit is established between them. This is shown as a thick blue line for the conduit of data from Device A to Device B, and a matching purple line from B back to A. Once set up, all communication between these devices takes place over this circuit, even though there are other possible ways that data could conceivably be passed over the network of devices between them. Contrast this diagram to Figure 2.


The classic example of a circuit-switched network is the telephone system. When you call someone and they answer, you establish a circuit connection and can pass data between you, in a steady stream if desired. That circuit functions the same way regardless of how many intermediate devices are used to carry your voice. You use it for as long as you need it, and then terminate the circuit. The next time you call, you get a new circuit, which may (probably will) use different hardware than the first circuit did, depending on what's available at that time in the network.

Packet Switching

In this network type, no specific path is used for data transfer. Instead, the data is chopped up into small pieces called packets and sent over the network. The packets can be routed, combined or fragmented, as required to get them to their eventual destination. On the receiving end, the process is reversed—the data is read from the packets and re-assembled into the form of the original data. A packet-switched network is more analogous to the postal system than it is to the telephone system (though the comparison isn't perfect.) An example is shown in Figure 2.







Figure 2: Packet Switching

In a packet-switched network, no circuit is set up prior to sending data between devices. Blocks of data, even from the same file or communication, may take any number of paths as it journeys from one device to another. Compare this to Figure 1

Key Concept: One way that networking technologies are categorized is based on the path used to carry data between devices. In circuit switching, a circuit is first established and then used to carry all data between devices. In packet switching no fixed path is created between devices that communicate; it is broken into packets, each of which may take a separate path from sender to recipient.

Comparing Circuit Switching and Packet Switching

A common temptation when considering alternatives such as these is to ask which is “better”—and as usually is the case, the answer is “neither”. There are places where one is more suited than the other, but if one were clearly superior, both methods wouldn't be used.

One important issue in selecting a switching method is whether the network medium is shared or dedicated. Your phone line can be used for establishing a circuit because you are the only one who can use it—assuming you can keep that pesky wife/husband/child/sister/brother/father/mother off the phone.

However, this doesn't work well in LANs, which typically use a single shared medium and baseband signaling. If two devices were to establish a connection, they would “lock out” all the other devices for a long period of time. It makes more sense to chop the data into small pieces and send them one at a time. Then, if two other devices want to communicate, their packets can be interspersed and everyone can share the network.

The ability to have many devices communicate simultaneously without dedicated data paths is one reason why packet switching is becoming predominant today. However, there are some disadvantages of packet switching compared to circuit switching. One is that since all data does not take the same, predictable path between devices, it is possible that some pieces of data may get lost in transit, or show up in the incorrect order. In some situations this does not matter, while in others it is very important indeed.

While the theoretical difference between circuit and packet switching is pretty clear-cut, understanding how they are used is a bit more complicated. One of the major issues is that in modern networks, they are often combined. For example, suppose you connect to the Internet using a dial-up modem. You will be using IP datagrams (packets) to carry higher-layer data, but it will be over the circuit-switched telephone network. Yet the data may be sent over the telephone system in digital packetized form. So in some ways, both circuit switching and packet switching are being used concurrently.

Another issue is the relationship between circuit and packet switching, and whether a technology is connection-oriented or connectionless. The two concepts are related but not the same; the next topic discusses this in much more detail.
Note: Note that the word “packet” is only one of several terms that are used to refer to messages that are sent over a network. Other terms you will encounter include frame, datagram, cell and segment.

Connection-Oriented and Connectionless Protocols
(Page 1 of 3)

In the previous topic I described and contrasted networking technologies based on whether or not they use a dedicated path, or circuit, over which to send data. Another way in which technologies and protocols are differentiated has to do with whether or not they use connections between devices. This issue is closely related to the matter of packet versus circuit switching.
Division of Protocols into Connection-Related Categories

Protocols are divided into two categories based on their use of connections:
Connection-Oriented Protocols: These protocols require that a logical connection be established between two devices before transferring data. This is generally accomplished by following a specific set of rules that specify how a connection should be initiated, negotiated, managed and eventually terminated. Usually one device begins by sending a request to open a connection, and the other responds. They pass control information to determine if and how the connection should be set up. If this is successful, data is sent between the devices. When they are finished, the connection is broken.

Connectionless Protocols: These protocols do not establish a connection between devices. As soon as a device has data to send to another, it just sends it.
Key Concept: A connection-oriented protocol is one where a logical connection is first established between devices prior to data being sent. In a connectionless protocol, data is just sent without a connection being created.

Connection-Oriented and Connectionless Protocols
(Page 2 of 3)

The Relationship Between Connection Orientation and Circuits

You can probably immediately see the relationship between the concepts of circuits and connections. Obviously, in order to establish a circuit between two devices, they must also be connected. For this reason, circuit-switched networks are inherently based on connections. This has led to the terms “circuit-switched” and “connection-oriented” being used interchangeably.

However, this is an oversimplification that results due to a common logical fallacy—people make the mistake of thinking that if A implies B, then B implies A, which is like saying that since all apples are fruit, then all fruit are apples. A connection is needed for a circuit, but a circuit is not a prerequisite for a connection. There are, therefore, protocols that are connection-oriented, while not being predicated on the use of circuit-based networks at all.

These connection-oriented protocols are important because they enable the implementation of applications that require connections, over packet-switched networks that have no inherent sense of a connection. For example, to use the TCP/IP File Transfer Protocol, you want to be able to connect to a server, enter a login and password, and then execute commands to change directories, send or retrieve files, and so on. This requires the establishment of a connection over which commands, replies and data can be passed. Similarly, the Telnet Protocol obviously involves establishing a connection—it lets you remotely use another machine. Yet, both of these work (indirectly) over the IP protocol, which is based on the use of packets, through the principle of layering.

To comprehend the way this works, one must have a basic understanding of the layered nature of modern networking architecture (as I discuss in some detail in the chapter that talks about the OSI Reference Model). Even though packets may be used at lower layers for the mechanics of sending data, a higher-layer protocol can create logical connections through the use of messages sent in those packets.
Key Concept: Circuit-switched networking technologies are inherently connection-oriented, but not all connection-oriented technologies use circuit switching. Logical connection-oriented protocols can in fact be implemented on top of packet switching networks to provide higher-layer services to applications that require connections.

Connection-Oriented and Connectionless Protocols
(Page 3 of 3)

Connection-Oriented and Connectionless Protocols in TCP/IP

Looking again at TCP/IP, it has two main protocols that operate at the transport layer of the OSI Reference Model. One is the Transmission Control Protocol (TCP), which is connection-oriented; the other, the User Datagram Protocol (UDP), is connectionless. TCP is used for applications that require the establishment of connections (as well as TCP’s other service features), such as FTP; it works using a set of rules, as described earlier, by which a logical connection is negotiated prior to sending data. UDP is used by other applications that don't need connections or other features, but do need the faster performance that UDP can offer by not needing to make such connections before sending data.

Some people consider this to be like a “simulation” of circuit-switching at higher network layers; this is perhaps a bit of a dubious analogy. Even though a TCP connection can be used to send data back and forth between devices, all that data is indeed still being sent as packets; there is no real circuit between the devices. This means that TCP must deal with all the potential pitfalls of packet-switched communication, such as the potential for data loss or receipt of data pieces in the incorrect order. Certainly, the existence of connection-oriented protocols like TCP doesn't obviate the need for circuit switching technologies, though you will get some arguments about that one too. J

The principle of layering also means that there are other ways that connection-oriented and connectionless protocols can be combined at different levels of an internetwork. Just as a connection-oriented protocol can be implemented over an inherently connectionless protocol, the reverse is also true: a connectionless protocol can be implemented over a connection-oriented protocol at a lower level. In a preceding example, I talked about Telnet (which requires a connection) running over IP (which is connectionless). In turn, IP can run over a connection-oriented protocol like ATM.

Messages: Packets, Frames, Datagrams and Cells
(Page 1 of 2)

Many networking technologies are based on packet switching, which involves the creation of small chunks of data to be sent over a network. Even though the word “packet” appears in the name of this method, the data items sent between networked devices are most generically called messages. “Packet” is one of a variety of similar words that are used in different contexts to refer to messages sent from one device to another.

In some cases these different terms can be very useful; simply the type of name used for the message can tell you something about what the message contains. In particular, different message names are usually associated with protocols and technologies operating at specific layers of the OSI Reference Model. Thus, the use of these different names can help clarify discussions that involve multiple protocols operating at different layers.

Unfortunately, these terms can also cause confusion, because they are not always applied in a universal or even consistent manner. Some people are strict about applying particular message designations only to the appropriate technologies where they are normally used, while others use the different terms completely interchangeably. This means that you should be familiar with the different message types and how they are normally used, but be prepared for the unexpected.

Messages: Packets, Frames, Datagrams and Cells
(Page 2 of 2)

Common Names For Messages

The most common terms that are used for messages are the following:
Packet: This term is considered by many to most correctly refer to a message sent by protocols operating at the network layer of the OSI Reference Model. So, you will commonly see people refer to “IP packets”. However, this term is commonly also used to refer generically to any type of message, as I mentioned at the start of this topic.

Datagram: This term is basically synonymous with “packet” and is also used to refer to network layer technologies. It is also often used to refer to a message that is sent at a higher level of the OSI Reference Model (more often than “packet” is).

Frame: This term is most commonly associated with messages that travel at low levels of the OSI Reference Model. In particular, it is most commonly seen used in reference to data link layer messages. It is occasionally also used to refer to physical layer messages, when message formatting is performed by a layer one technology. A frame gets its name from the fact that it is created by taking higher-level packets or datagrams and “framing” them with additional header information needed at the lower level.

Cell: Frames and packets, in general, can be of variable length, depending on their contents; in contrast, a cell is most often a message that is fixed in size. For example, the fixed-length, 53-byte messages sent in Asynchronous Transfer Mode (ATM) are called cells. Like frames, cells usually are used by technologies operating at the lower layers of the OSI model.

Protocol Data Unit (PDU) and Service Data Unit (SDU): These are the formal terms used in the OSI Reference to describe protocol messages. A PDU at layer N is a message sent between protocols at layer N. It consists of layer N header information and an encapsulated message from layer N+1, which is called both the layer N SDU and the layer N+1 PDU. After you stop scratching your head, see the topic on OSI model data encapsulation for a discussion of this that may actually make sense. J

I should also point out that there are certain protocols that use unusual names to refer to their messages, which aren’t used elsewhere in the world of networking. One prominent example is the Transmission Control Protocol (TCP), which calls its messages segments.
Key Concept: Communication between devices on packet-switched networks is based on in items most generically called messages. These pieces of information also go by other names such as packets, datagrams, frames and cells, which often correspond to protocols at particular layers of the OSI Reference Model. The formal OSI terms for messages are protocol data unit (PDU) and service data unit (SDU).


Message Terminology in this Guide

As for this Guide and its use of these terms, I have made a specific effort not to imply anything about the nature of a message solely based on the name it uses, but I do try to follow the most common name used for a particular technology. For example, messages sent over Ethernet are almost always called Ethernet frames—they are not generally called Ethernet datagrams, for example. However, I do not structure discussions so that the type of name used for a message is the only way to determine what sort of message it is.

Message Formatting: Headers, Payloads and Footers

Messages are the structures used to send information over networks. They vary greatly from one protocol or technology to the next in how they are used, and as I described in the previous topic, they are also called by many different names. Shakespeare had the right idea about names, however. The most important way that messages differ is not in what they are called but in terms of their content.

Every protocol uses a special formatting method that determines the structure of the messages it employs. Obviously, a message that is intended to connect a Web server and a Web browser is going to be quite different from one that connects two Ethernet cards at a low level. This is why I separately describe the formats of dozens of different protocol messages in various parts of this Guide.
Fundamental Message Elements

While the format of a particular message type depends entirely on the nature of the technology that uses it, messages on the whole tend to follow a fairly uniform overall structure. In generic terms, each message contains the following three basic elements (see Figure 3):
Header: Information that is placed before the actual data. The header normally contains a small number of bytes of control information, which is used to communicate important facts about the data that the message contains and how it is to be interpreted and used. It serves as the communication and control link between protocol elements on different devices.

Data: The actual data to be transmitted, often called the payload of the message (metaphorically borrowing a term from the space industry!) Most messages contain some data of one form or another, but some actually contain none: they are used only for control and communication purposes. For example, these may be used to set up or terminate a logical connection before data is sent.

Footer: Information that is placed after the data. There is no real difference between the header and the footer, as both generally contain control fields. The term trailer is also sometimes used.






Figure 3: Network Message Formatting

In the most general of terms, a message consists of a data payload to be communicated, bracketed by a set of header and footer fields. The data of any particular message sent in a networking protocol will itself contain an encapsulated higher-layer message containing a header, data, and footer. This “nesting” can occur many times as data is passed down a protocol stack. The header is found in most protocol messages; the footer only in some.


Since the header and footer can both contain control and information fields, you might rightly wonder what the point is of having a separate footer anyway. One reason is that some types of control information are calculated using the values of the data itself. In some cases, it is more efficient to perform this computation as the data payload is being sent, and then transmit the result after the payload in a footer. A good example of a field often found in a footer is redundancy data, such as a CRC code, that can be used for error detection by the receiving device. Footers are most often associated with lower-layer protocols, especially at the data link layer of the OSI Reference Model.
Key Concept: The general format of a networking message consists of a header, followed by the data or payload of the message, followed optionally by a footer. Header and footer information is functionally the same except for position in the message; footer fields are only sometimes used, especially in cases where the data in the field is calculated based on the values of the data being transmitted.


Interpretation of Message Elements

Generally speaking, any particular protocol is only concerned with its own header (and footer, if present). It doesn't care much about what is in the data portion of the message, just as a delivery person only worries about driving the truck and not so much on what it contains. At the beginning of that data will normally be the headers of other protocols that were used higher up in the protocol stack; this too is shown in Figure 3. In the OSI Reference Model, a message handled by a particular protocol is said to be its protocol data unit or PDU; the data it carries in its payload is its service data unit or SDU. The SDU of a lower-layer protocol is usually a PDU of a higher-layer protocol. The discussion of data encapsulation contains a full explanation of this important concept.


Message Addressing and Transmission Methods: Unicast, Broadcast and Multicast Messages
(Page 1 of 2)

In a networking technology that uses messages to send data, there are a number of tasks that must be undertaken in order to successfully transmit the data from one place to another. One is simply the addressing of the message—putting an address on it so that the system knows where it is supposed to go. Another is transmitting the message, which is of course sending it to its intended recipient.

There are several different ways of addressing and transmitting a message over a network, One way in which messages are differentiated is in how they are addressed, and to how many recipients. Which method is used depends on what the function of the message is, and also on whether or not the sender knows specifically whom they are trying to contact, or only generally.
Message Transmission Methods

To help explain these different methods, I will use a real-world analogy. Consider a social function with 300 people that is being held in a large hall. These people are mingling and are having different conversations. There are different kinds of messages that may need to be sent in this setting, much as is the case with networks.

Bearing this analogy in mind, consider these three kinds of message transmissions, which are illustrated in Figure 4:
Unicast Messages: These are messages that are sent from one device to another device; they are not intended for others. If you have a friend at this social event, this is the equivalent of pulling him or her aside for a private conversation. Of course, there is still the possibility of someone else at the event overhearing your conversation—or even eavesdropping on it. The same is true in networking as well—addressing a message to a particular computer doesn't guarantee that others won't also read it, just that they normally will not do so.

Broadcast Messages: As the name suggests, these messages are sent to every device on a network. They are used when a piece of information actually needs communicating to everyone on the network, or used when the sending station needs to send to just one recipient, but doesn't know its address.

For example, suppose a new arrival at the social gathering saw a blue sedan with New Hampshire plates in the parking lot that had its lights left on. He of course does not know whose car this is. The best way to communicate this information is to broadcast it by having the host make an announcement that will be heard by all, including the vehicle’s owner. In networks, broadcast messages are used for a variety of purposes, including finding the locations of particular stations or the devices that manage different services.

Multicast Messages: These are a compromise between the previous two types: they are sent to a group of stations that meet a particular set of criteria. These stations are usually related to each other in some way, such as serving a common function, or being set up into a particular multicast group. (Note that one can also consider broadcast messages to be a special case of multicast, where the group is “everyone”.

Back to our analogy: this would be somewhat like a group of friends who go to this large social hall and then stay together in a small discussion group—or perhaps use radios to talk to each other from a distance. Multicasting requires special techniques that make clear who is in the intended group of recipients.






Figure 4: Unicast, Multicast and Broadcast Message Addressing and Transmission

The three basic type of addressing and message delivery in networking are illustrated in this simplified local area network. Device #6 is sending a unicast message to #2 shown in purple. Device #4 is sending a multicast message to multicast group “X”. In this case, that group includes devices #1 and #3, shown in green. Finally, Device #5 is sending a broadcast message, which goes to all other devices on the LAN.
Message Addressing and Transmission Methods: Unicast, Broadcast and Multicast Messages
(Page 2 of 2)

Message Addressing Methods

Since the transmission methods above differ based on how many and which devices receive the transmission, they are tied directly to the methods used for addressing:
Unicast Addressing: Unicast delivery requires that a message be addressed to a specific recipient. This is the most common type of messaging, so this addressing capability is present in almost all protocols.

Broadcast Addressing: Broadcasts are normally implemented via a special address that is reserved for that function. Whenever devices see a message sent to that address, they all interprets it as meaning “this message goes to everyone”.

Multicast Addressing: Multicasts are the most complex type of message because they require a means of identifying a set of specific devices to receive a message. It is often necessary to create several such groups, which may or may not partially overlap in their membership. Some mechanism is needed to manage which devices are in which groups.
Key Concept: Three basic methods are used to address and transmit data between networked devices. A unicast transmission goes from one device to exactly one other; this is the “normal” method used for most message transactions. A broadcast transmission is sent from one device to all connected devices on a network. A multicast transmission is addressed and sent to a select group of devices.


Note: A new type of message addressing method was defined as part of IP version 6: the anycast message. This term identifies a message that should be sent to the closest member of a group of devices. The topic on IPv6 multicast and anycast addressing describes this type of addressing and transmission.



Finally, one special case in the field of addressing is worth mentioning. In some networks or links, only two devices are connected together, forming what is often called a point-to-point network. In this situation, everything sent by one device is implicitly intended for the other, and vice-versa. Thus, no addressing of messages on a point-to-point link is strictly necessary.

Network Structural Models and Client/Server and Peer-to-Peer Networking
(Page 1 of 4)

I mentioned in my discussion of the advantages of networking that networks are normally set up for two primary purposes: connectivity and sharing. If you have a network with a number of different machines on it, each computer can interact with the hardware and software of the others, to enable a variety of tasks to be performed. How precisely this is done depends to a large degree on the overall design of the network.
Resource Sharing Roles and Structural Models

One very important issue in network design is how to configure the network for the sharing of resources. Specifically, the network designer must decide whether or not to dedicate resource management functions to the devices that constitute it. In some networks, all devices are treated equal in this regard, while in others, each computer is responsible for a particular job in the overall function of providing services. In this latter arrangement, the devices are sometimes said to have roles, somewhat like actors in a play.

Two common terms are used to describe these different approaches to setting up a network, sometimes called choosing a structural model.

Network Structural Models and Client/Server and Peer-to-Peer Networking
(Page 2 of 4)

Peer-to-Peer Networking

In a strict peer-to-peer networking setup, every computer is an equal, a peer in the network. Each machine can have resources that are shared with any other machine. There is no assigned role for any particular device, and each of the devices usually runs similar software. Any device can and will send requests to any other, as illustrated in Figure 5.







Figure 5: Peer-to-Peer Networking

In this model, each device on the network is treated as a peer, or equal. Each device can send requests and responses, and none are specifically designated as performing a particular role. This model is more often used in very small networks. Contrast to Figure 6.

Network Structural Models and Client/Server and Peer-to-Peer Networking
(Page 3 of 4)

Client/Server Networking

In this design, a small number of computers are designated as centralized servers and given the task of providing services to a larger number of user machines called clients. The servers are usually powerful computers with a lot of memory and storage space, and fast network connections. The clients are typically smaller, “regular” computers like PCs, optimized for human use.

The term “client/server” also frequently refers to protocols and software, which are designed with matching, complementary components. Usually, server software runs on server hardware, and client software is used on client computers that connect to those servers. Most of the interaction on the network is between client and server, and not between clients, as shown in Figure 6. Server software is designed to efficiently respond to requests, while client software provides the interface to the human users of the network.







Figure 6: Client/Server Networking

In the client/server model, a small number of devices are designated as servers and equipped with special hardware and software that allows them to more efficiently interact simultaneously with multiple client machines. While the clients can still interact with each other, most of the time they send requests of various sorts to the server, and the server sends back responses to them. Contrast this to the peer-to-peer networking example in Figure 5.

Key Concept: Networks are usually configured to share resources using one of two basic structural models. In a peer-to-peer network, each device is an equal and none are assigned particular jobs. In a client/server network, however, devices are assigned particular roles—a small number of powerful computers are set up as servers and respond to requests from the other devices, which are clients. Client/server computing also refers to the interaction between complementary protocol elements and software programs, and is rising in popularity due to its prevalence in TCP/IP and Internet applications.

Network Structural Models and Client/Server and Peer-to-Peer Networking
(Page 4 of 4)

Comparing Client/Server and Peer-to-Peer Networking

The choice of client/server or peer-to-peer is another where there is no “right answer” in this regard. Which should be used depends entirely on the needs of the particular network.

Peer-to-peer networking has primary advantages of simplicity and low cost, which means it has traditionally been used on small networks. Client/server networking provides advantages in the areas of performance, scalability, security and reliability, but is more complicated and expensive to set it up. This makes it better-suited to larger networks. Over time, however, there has been a steady evolution towards client/server networking, even on smaller networks. Many years ago it was common to see even networks with 20 to 50 machines using the peer-to-peer model; today, even networks with only a half-dozen machines sometimes are set up in a client/server mode because of the advantages of centralized resource serving.

The rise in popularity of client/server networking is ironic because in some ways, it is actually a throwback to the days of large mainframes decades ago. A mainframe with attached terminals can be thought of as a client/server network with the mainframe itself being the server and the terminals being clients. This analogy is not perfect, of course, because modern client computers do a lot more work than dumb terminals do on mainframes.

One of the reasons why the client/server structural model is becoming dominant is that it is the primary model used by the world’s largest network: the Internet. Client/server architecture is the basis for most TCP/IP protocols and services. For example, the term “Web browser” is really another name for a “Web client”, and a “Web site” is really a “Web server”.
Related Information: For more information on client/server computing, I recommend you read the topic devoted to TCP/IP client/server operation. That topic also contains a very relevant exposition on the different meanings of the terms “client” and “server” in hardware, software and transactional contexts.

Types and Sizes of Networks

One of the reasons that understanding networks can be difficult at times is that there are so many different types! When someone talks about a “network”, this can mean anything from two computers hooked together in an apartment to a globe-spanning entity with millions of nodes. Every network is unique, and each one has an important role to play in filling the communication and data-sharing needs of different individuals and organizations. In fact, the great diversity and flexibility of networking is one of its most important strengths.

In this section I describe the major types of networks that exist by drawing distinctions between them based on their size and scope, and show how each type and size is used. I begin with a discussion of LANs, WLANs and WANs, and a few variations on these three main categories. I explore the many terms that are related to the various sizes of networks and how they are used, including segments, subnetworks, internetworks, intranets and extranets
Note: As with other networking fundamentals discussions, if you have some background or experience in networking, you may not need to read everything in this section. I'd suggest scanning the headings of the various topics here to get a handle for what you feel you need to read.

Local Area Networks (LANs), Wireless LANs (WLANs) and Wide Area Networks (WANs) and Variants (CANs, MANs and PANs)
(Page 1 of 2)

Two of the most basic ways that networks are differentiated and contrasted are the relative distances between the devices that they connect, and the general mechanisms used to communicate between them. The reason for making these distinctions is that the technological needs of a network differ greatly depending on the amount of ground you are trying to cover, and also on the overall way that you want to transmit and receive information.
Fundamental Network Classifications

Many people, including me, like to divide the many kinds of networks in existence into three general classes:
Local Area Networks (LANs): Networks that connect together computers that are relatively close to each other—generally, within the same room or building. When most people think about networking PCs and other small computers, this is what they usually have in mind. The vast majority of regular LANs connect using cables, so the term “LAN” by itself usually implies a wired LAN, but not always.

Wireless Local Area Networks (Wireless LANs or WLANs): Local area networks that connect devices without wires, using radio frequencies or light. WLANs can be entirely wireless, but most are not: they usually connect wireless devices to each other and also to the wired portion of the network. Due to the limits of most wireless technologies, wireless LANs usually connect devices that are very close to each other, generally within a few hundred feet at most.

Wide Area Networks (WANs): Networks that connect together devices or other networks over a greater distance than is practical for local area networking. If the distance between devices can be measured in miles, you will generally use WAN and not LAN technology to link them.

More often than not, WANs are used to link together physically distant LANs. For example, a company with locations in two different cities would normally set up a LAN in each building and then connect them together in a WAN. I also consider most Internet access technologies to be a form of wide area networking, though some might not agree with that. There is also the term wireless WAN (WWAN), which just refers to a WAN that uses wireless technology.

Local Area Networks (LANs), Wireless LANs (WLANs) and Wide Area Networks (WANs) and Variants (CANs, MANs and PANs)
(Page 2 of 2)

Difficulties in Categorizing Network Classes

As with most other distinctions and categorizations in the world of networking, the lines between these various definitions are not very concrete. As I mentioned already, wireless LANs are usually not entirely wireless, because they contained wired elements. Similarly, trying to say absolutely when a network is “local” and when it is “wide” is difficult.

It's also somewhat pointless to spend too much energy on differentiating these network classes precisely. In some cases it's not the definitions that decide what technology to use, but rather the technology that indicates what kind of network you have! Since some protocols are designed for wide area networking, if you are using them, many would say you have a WAN, even if all the devices in that technology are near each other. On the other hand, some LAN technologies allow the use of cables that can run for many miles; most would still consider a mile-long Ethernet fiber link to be a LAN connection, even though it may span WAN distances.

There are many dimensions in which local and wide area networking technologies differ; two of the most important are cost and performance. It's easy to establish a high-speed conduit for data between two systems that are in the same room; much more difficult if the two are in different states. This means that in the world of WAN, one either pays a lot more or gets a lot less throughput—and often both.
"Intermediate" Network Types

The blurry line between LAN and WAN is becoming more muddled every years. One reason is the emergence of “intermediate” network types that straddle the line between these more familiar terms.
Campus Area Networks (CANs): A campus area network (CAN) is one created to span multiple buildings in the same location, such as the campus of a university. Campus area networking is a “gray area”, since neither LANs nor WANs alone are always well-suited for this type of application. Often, a mix of LAN and WAN techniques are used for campus networking, depending on the characteristics of the campus and the needs of the organization.

Metropolitan Area Networks (MANs): Another “intermediate” term that you may see sometimes is the metropolitan area network or MAN. As the name implies, this refers to a network that spans a particular small region or a city. Metropolitan area networks can be considered either as “small WANs” that cover a limited geographical area, or as “large LANs” that cover an area greater than that normally associated with a local network. Wireless metropolitan area networks are of course sometimes called WMANs; IEEE 802.16 is an example of a WMAN standard.
Personal Area Networks (PANs)

Finally, there is one other term occasionally used that should be mentioned: the personal area network (PAN). This type of network generally means a very small LAN with a range of only a few feet, intended mostly to connect together devices used by a single person (or very small group). The term is most commonly used in reference to Bluetooth / IEEE 802.15 wireless technology, so you will sometimes see the terms wireless personal area network (WPAN) and just PAN used interchangeably.
Key Concept: Networks are often divided by size and general communication method into three classes. Local area networks (LANs) generally connect together proximate devices, usually using cables. Wireless LANs (WLANs) are like cabled LANs but use radio frequency or light technology to connect devices without wires. Wide area networks (WANs) connect distant devices or LANs to each other. Campus area networks (CANs) and metropolitan area networks (MANs) fall between LANs and WANs in terms of overall size; personal area networks (PANs) are like very small LANs and often appear as wireless PANs (WPANs).

Segments, Networks, Subnetworks and Internetworks
(Page 1 of 2)

One of the reasons that networks are so powerful is that they can not only be used to connect computers together, but to connect groups of computers together. Thus, network connections can exist at multiple levels; one network can be attached to another network, and that entire whole can be attached to another set of networks, and so on. The ultimate example of this is, of course, the Internet, a huge collection of networks that have been interconnected into… dare I say a “Web”? J

This means a larger network can be described as consisting of several smaller networks or even parts of networks that are linked together. Conversely, we can talk about taking individual networks or network portions and assembling them into larger structures. The reason why this concept is important is that certain technologies are best explained when looking at an entire large network at a high level, while others really require that we drill down to the detailed level of how constituent network pieces work.
Common Terms Describing the Size of Networks

Over time, a collection of terms has evolved in the networking world to describe the relative sizes of larger and smaller networks. Understanding these different terms is important not only for helping you comprehend what you read about networks, but also because they are important concepts in network design. This is particularly true for local area networking, where decisions regarding how to set up segments and how to connect them to each other have an important impact on the overall performance and usability of the network. Here are some of the most common ones.
Network

This is the least specific of the terms mentioned here. Basically, a network can be of pretty much any size, from two devices to thousands. When networks get very large, however, and are clearly comprised of smaller networks connected together, they are often no longer called networks but internetworks, as we will see momentarily. Despite this, it is fairly common to hear someone refer to something like “Microsoft's corporate network”, which obviously contains thousands or even tens of thousands of machines.
Subnetwork (Subnet)

A subnetwork is a portion of a network, or a network that is part of a larger internetwork. This term is also a rather subjective one; subnetworks can in fact be rather large when they are part of a network that is very large.

The abbreviated term “subnet” can refer generically to a subnetwork, but also has a specific meaning in the context of TCP/IP addressing.

Segments, Networks, Subnetworks and Internetworks
(Page 2 of 2)

Segment (Network Segment)

A segment is a small section of a network. In some contexts, a segment is the same as a subnetwork and the terms are used interchangeably. More often, however, the term “segment” implies something smaller than a subnetwork. Networks are often designed so that, for the sake of efficiency, with computers that are related to each other or that are used by the same groups of people put on the same network segment.

This term is notably problematic because it is routinely used in two different ways, especially in discussions related to Ethernet. The earliest forms of Ethernet used coaxial cables, and the coax cable itself was called a “segment”. The segment was shared by all devices connected to it, and became the collision domain for the network (a phrase referring generally to a collection of hardware devices where only one can transmit at a time.)

Each Ethernet physical layer had specific rules about how many devices could be on a segment, how many segments could be connected together, and so on, depending on what sort of network interconnection devices were being used. Devices such as hubs and repeaters were used to extend collision domains by connecting together these segments of cable into wider networks. Over time, the terms “collision domain” and “segment” started to be used interchangeably. Thus today a “segment” can refer either to a specific piece of cable, or to a collection of cables connected electrically that represent a single collision domain.
Note: As if that potential ambiguity in the use of the word “segment” isn’t bad enough, it also has another, totally unrelated meaning: it is the name of the messages sent in the Transmission Control Protocol!


Internetwork (or Internet)

Most often, this refers to a larger networking structure that is formed by connecting together smaller ones. Again, the term can have either a generic or a specific meaning, depending on context. In some technologies, an internetwork is just a very large network that has networks as components. In others, a network is differentiated from an internetwork based on how the devices are connected together.

An important example of the latter definition is TCP/IP, where a network usually refers to a collection of machines that are linked at layer two of the OSI Reference Model, using technologies like Ethernet or Token Ring and interconnection devices such as hubs and switches. An internetwork is formed when these networks are linked together at layer three, using routers that pass Internet Protocol datagrams between networks. Naturally, this is highly simplified, but in studying TCP/IP you should keep this in mind when you encounter the terms “network” and “internetwork”.
Note: The shorter form of the word internetwork (“internet”) is often avoided by people who wish to avoid confusion with the proper noun form (“The Internet”). The latter of course refers only to the well-known global internetwork of computers and all the services it provides. I personally try to use the word “internetwork” most of the time in this Guide instead of “internet”, for this very reason.


Key Concept: Several terms are often used to describe the relative sizes of networks and parts of networks. The most basic term is network itself, which can refer to most anything, but often means a set of devices connected using an OSI layer two technology. A subnetwork is a part of a network (or internetwork), as is a segment, though the latter often has a more specific meaning in certain technologies. An internetwork refers either generically to a very large network, or specifically to a set of layer-two networks connected using routers at layer three.

The Internet, Intranets and Extranets

I mentioned in the topic discussing segments, networks, subnetworks and internetworks that the Internet is really the king of internetworks. After all, you don't get to be called “the” something unless you pretty much define it.

In fact, the Internet is not just a large internetwork, but substantially more. The Internet is defined not just as the computers that are connected to each other around the world, but as the set of services and features that it offers. More than that, the Internet defines a specific way of doing things, of sharing information and resources between people and companies. And though it might be a bit melodramatic to say so, to many people the Internet is a way of life. As Internet use and popularity exploded in the 1990s, many people realized that the techniques and technologies used on the Internet would be useful if applied to internal company networks as well. The term intranet was coined to refer to an internal network that functioned like a “private Internet”. It comes from the prefix “intra”, which means “within”. Of course, “inter” is the opposite of “intra”, so this makes some people think that an “intranet” is the opposite of an “internet”. In fact, most intranets are internetworks as well!

As if that weren't bad enough from a jargon standpoint, the buzzword buzzards then decided to take matters a step further. If an intranet is “extended” to allow access to it not only strictly from within the organization, but also by people or groups outside the main company, this is sometimes called an extranet. “Extra” of course, is a prefix that means “outside” or “beyond”.

So, an extranet is a type of internal, private Internet that, uh, well, isn't entirely internal. An extranet is an extended intranet, which is really a type of internet that works like the Internet. (You can start to see why I am not a big fan of these fancy terms. But then, I don't get to choose them; I just have to help you understand them!) An extranet isn't public and open to all—it is controlled by a private organization. At the same time, it isn't entirely private either.

As you can see, the lines between the Internet, intranets and extranets were pretty blurry from the start, and the concepts are rapidly blending into a diffuse mass of gray, as the whole computing world becomes more tightly integrated. For example, even if you have an entirely private intranet, you will want to connect it to the Internet to communicate with the “outside world” and to allow access to Internet resources. And an extranet may be implemented, in part, through the public Internet infrastructure, using technologies such as virtual private networking (VPN). I think you get the picture.

The key that binds all of these concepts together is that they all use “Internet technologies”, a term that is itself somewhat vague. This usually refers to the use of the TCP/IP protocol suite, which is the defining technology of the Internet, as well as the set of services that are available on the Internet.

The bottom line is that being told that a company has an “intranet” or an “extranet”—as opposed to a plain old boring “network”—doesn't tell you much at all. It is best not to rely on the slogans and instead look at the underlying characteristics of the network or internetwork itself. Furthermore, when designing such a network, focus on using the technologies and protocols that make sense—let the marketing people decide what to call it later. J
Key Concept: The generic noun internet is a short form for the word internetwork, while the proper noun Internet refers to the global internetwork of TCP/IP networks we all know and use. The term intranet refers to an internal network that uses TCP/IP technologies like the Internet does. An extranet is like an intranet that is extended to individuals or organizations outside the company. All these terms can be used ambiguously, so care must be taken in determining exactly what they mean in any given context.

Network Performance Issues and Concepts

Networking is largely about connecting together devices so that information can be shared between them. Since the idea is to send data from one place to another, a very important characteristic of any network is its speed: how fast can data be transmitted and received? This matter of speed turns out to be only one of several issues that determine the overall performance of a network. The issue is complex enough that I decided a section was warranted to introduce the various related topics and help you understand how to look at network performance in a balanced way. When it comes to network performance, there's a lot of hype out there!

In the computing world, performance is, in general, one of the most often discussed but least well-understood characteristics of any system or hardware device. This is true of networking as well. For example, most people know the raw throughput rating of their network hardware, and may even start to draw conclusions about its capabilities based on those numbers. Many, however, don't realize that they will never actually achieve that “rated” amount of performance in the real world.

Most of the other “subtle” issues related to performance are also typically ignored or misunderstood, such as the impact of software drivers on hardware performance, and the fact that certain applications need more than just raw bit speed—they need reliable delivery of data. But even beyond all of this, one of the most important issues related to network performance is understanding what your needs are, to make sure you don't spend too much money for performance you don't need—or worse, create a network that can't meet your requirements.

In this section, I discuss various performance issues and concepts that are related to networking in one way or another. First and foremost, I try to put performance in context, and also contrast it with non-performance issues. Then, I talk about several key performance terms and metrics: speed, bandwidth, throughput and latency. I also talk about some of the units used to measure network performance. I then explain how the real-world performance of a network differs from its theoretical performance, and talk about factors that have an impact on network performance. I conclude by contrasting full-duplex and half-duplex network operation, and talking about quality of service, a concept that is especially important in the use of networks for real-time applications such as streaming multimedia.

Putting Network Performance In Perspective

Performance is probably the “mother of all buzzwords” in the computer industry. There are many people who consider it the ultimate goal of any computer or computer system, and by extension, any network. A lot of people spend many dollars and hours of time trying to maximize it. There's good reason for this: performance is very important. A network that does not offer adequate performance simply will not get the job done for those that rely on it. However, it is very important to keep performance in perspective. Successfully maximizing performance requires that you first take a step back and look at the issue in a big picture way.

The first question you must ask yourself is also the most essential one: how important is performance to you? Before you answer this question, recall the old auto racing adage: “speed costs money—how fast do you want to go?” While there are some situations where you can get much better performance in a network by spending just a little more money, in general, you don't get more performance without paying for it in some way. That may mean more dollar cost for the network, or it may mean a trade-off of some non-performance characteristic.

If you are designing or specifying a network, it's very important to keep in mind that your goal is to come up with a system that will meet the needs that were determined for it during requirements analysis. This means coming up with a network that has a level of performance that matches the requirements, and of course leaves some room for expansion. Unless you have an unlimited budget—and who does?—your objective is not “performance at any cost”. It is to create a network that meets all of your users' needs, including balancing performance and non-performance characteristics.

A primary reason why I make a point of trying to keep performance in perspective is that so many others do not—especially those who are trying to sell you things. Companies are constantly coming out with the “latest and greatest” high-performance networking technologies. The usual way that they try to sell them is by attempting to convince everyone that they just cannot live without this latest advance; that they “need” to upgrade—immediately, if not sooner! Well, it's simply not the case. As just one example, even though Ethernet hardware now exists that runs with a theoretical throughput of 10,000 megabits per second, there are many older networks that continue to work just fine at a hundredth that speed—or even a thousandth!

Finally, remember that designing a network is usually not an “irreversible”, permanent decision. Networks can be upgraded and expanded. While it is prudent to build some “slack” into any network to allow for growth, it is not wise to spend too much on planning for the future when changes can be made later. This is especially true given that network hardware prices drop over time. Again here, this is a matter of drawing an appropriate balance between future performance planning and budget.

Balancing Network Performance with Key Non-Performance Characteristics

We all know that performance is very important to any network. However, anyone putting together a network must also be concerned with many different non-performance characteristics as well. Depending on the network, these can be just as essential to the users of the network as performance, and possibly even more critical. More than this, non-performance issues often trade off against performance, and in fact, often more than not one has to be reduced to get performance to increase.

So, if you want to create a very-high-performance network, you need to understand the key non-performance network characteristics where you may need to compromise. Here are a few of these issues, and specifically how they relate to performance concerns:
Design and Implementation Cost: Unless you have bottomless pockets, you need to be concerned with the network’s costs. As mentioned in the prior topic, cost is the main trade-off with performance. Going faster costs more money—not always, but usually.

Quality: The quality of the network is a function of the quality of the components used and how they are installed. Quality is important because of its impact on all of the factors described here, such as reliability and ease of administration, as well as performance. Quality doesn't trade off directly with performance—you can design high-quality, high-performance networks—but it does compete with performance for resources such as budget. All else being equal, it costs a great deal more to implement a high-quality, high-performance network than a high-quality, low-speed one.

Standardization: Network protocols and hardware can either be designed to meet universally-accepted standards, or non-standard, proprietary ones. Standard designs are almost always preferable, as they make interoperability, upgrading, support and training easier. Proprietary standards may include enhancements that improve performance, but may increase cost and/or make management more difficult.

Reliability: This is related to several other issues, especially quality and performance. Faster networks aren't necessarily less reliable, but it's more difficult and expensive to run them as reliably as slower ones.

Expandability and Upgradability: It's very important to always plan for the future when creating a network. Higher-performance networks can be more difficult to expand; they are certainly more expensive to expand. Once again, the matter of implementing a network with capacity for future needs now, as opposed to upgrading later if it becomes necessary, is an important network design decision.

Ease of Administration and Maintenance: Higher-performance networks require more work and resources to administer and maintain, and are more likely to require troubleshooting, than slower ones.

Premises and Utility Issues: Implementation of high-speed networks may be limited by the physical premises, or may have an impact on how they are laid out. Choosing a higher-speed option may require more infrastructure to be put in place, increasing cost. The classic example of this is seen in choosing between wired and wireless options for a home or small office network: with wires you can go much faster, but do you really want to run the wires?

Anyway, now you have a flavor of how performance balances against some of the other key issues in networking. The idea of this topic wasn't to convince you not to build a high-performance network, just to let you know part of the price you will pay.
Key Concept: While performance is one of the most important characteristics of any network, there are others that are equally important. In many cases, the cost, quality, reliability, expandability, maintainability and other attributes of a network may in fact trade off against overall performance. The faster you want your network to go, the more difficult it is to ensure these other attributes are kept at sufficiently high levels.

Performance Measurements: Speed, Bandwidth, Throughput and Latency
(Page 1 of 3)

There are a number of terms that are commonly used to refer to various aspects of network performance. Some of them are quite similar to each other, and you will often see them used—and in many cases, misused or even abused. J It's a good idea for us to take a look at each of them, therefore, discuss how they are commonly used and what they really mean.

More than just the issue of different terms related to performance, however, is the more important reality that there are multiple facets to performance. Depending on the application, the manner in which data is sent across the network may be more important than the raw speed at which it is transported. In particular, many multimedia applications require real-time performance; they need data sent in such a manner that it will be delivered steadily. For these purposes, raw speed isn't as important as consistent speed, and this is an issue that is often not properly recognized.
Performance Measurement Terms

Let's take a look at the most common performance measurement terms and see what they are all about.
Speed

This is the most generic performance term used in networking. As such, it can mean just about anything. Most commonly, however, it refers to the rated or nominal speed of a particular networking technology. For example, Fast Ethernet has a nominal speed of 100 megabits per second; it is for that reason often called 100 Mbit Ethernet, or given a designation such as “100BASE-TX”.

Rated speed is the biggest “performance magic number” in networking—you see it used to label hardware devices, and many people bandy the numbers about as if they actually were the real “speed of the network”. The problem with using nominal speed ratings is that they are theoretical only, and as such, tell an incomplete story. No networking technology can run at its full rated speed, and many run substantially below it, due to real-world performance factors.

Speed ratings such as “100 Mbps Ethernet” are also often referred to as the “throughput” of a technology, even though the maximum theoretical speed of a technology is more analogous to bandwidth than throughput, and the two are not identical. More on this in the next two bullet points.
Bandwidth

Bandwidth is a widely-used term that usually refers to the data-carrying capacity of a network or data transmission medium. It indicates the maximum amount of data that can pass from one point to another in a unit of time. The term comes from the study of electromagnetic radiation, where it refers to the width of a band of frequencies used to carry data. It is usually given in a theoretical context, though not always.

Bandwidth is still used in these two senses: “frequency band width” and data capacity. For example, radio frequencies are used for wireless technologies, and the bandwidth of such technologies can refer to how wide the RF band is. More commonly, though, it refers to how much data can be sent down a network, and is often used in relative terms. For example, for Internet access, a cable or xDSL is considered “high bandwidth” access; using a regular analog modem is “low bandwidth”.

Performance Measurements: Speed, Bandwidth, Throughput and Latency
(Page 2 of 3)

Throughput

Throughput is a measure of how much actual data can be sent per unit of time across a network, channel or interface. While throughput can be a theoretical term like bandwidth, it is more often used in a practical sense, for example, to measure the amount of data actually sent across a network in the “real world”. Throughput is limited by bandwidth, or by rated speed: if an Ethernet network is rated at 100 megabits per second, that's the absolute upper limit on throughput, even though you will normally get quite a bit less. So, you may see someone say that they are using 100 Mbps Ethernet but getting throughput of say, 71.9 Mbps on their network.

The terms bandwidth and throughput are often used interchangeably, even though they are really not exactly the same, as I just discussed.
Key Concept: The three terms used most often to refer to the overall performance of a network are speed, bandwidth, and throughput. These are related and often used interchangeably, but are not identical. The term speed is the most generic and often refers to the rated or nominal speed of a networking technology. Bandwidth can refer either to the of a frequency band used by a technology, or more generally to data capacity, where it is more of a theoretical measure. Throughput is a specific measure of how much data flows over a channel in a given period of time. It is usually a practical measurement.


Latency

This very important, often overlooked term, refers to the timing of data transfers on a communications channel or network. One important aspect of latency is how long it takes from the time a request for data is made until it starts to arrive. Another aspect is how much control a device has over the timing of the data that is sent, and whether the network can be arranged to allow for the consistent delivery of data over a period of time. Low latency is considered better than high latency.

Performance Measurements: Speed, Bandwidth, Throughput and Latency
(Page 3 of 3)

Applying Performance Measurement Terms

As with all networking terms, there are no hard and fast rules; many people are rather loose with their use of the terms above. You will even see terms such as “throughput bandwidth”, “bandwidth throughput” and other charming inventions from the department of redundancy department. J More often, you will just see a lot of mish-mashed term usage, and especially, spurious conclusions being drawn about what data streams a network can handle based on its rated speed. Making matters worse is that speed ratings are usually specified in bits per second, but throughput may be given in bits or bytes per second.

In general, “speed”, bandwidth and throughput get a lot of attention, while latency gets little. Yet latency considerations are very important for many real-time applications such as streaming audio and video and interactive gaming. In fact, they are often more important than raw bandwidth.

For example, suppose you move to a rural home and your choices for Internet access are a regular 28.8 kbps modem connection or fancy satellite Internet. The companies selling satellite connectivity call it “broadband” and advertise very high rated speeds—400 kbps or more. They make a big deal about it being “over 10 times as fast as dialup” and they certainly charge a lot for this very high-tech service. This is a slam dunk, right?

Wrong. The satellite connection has high bandwidth, but very poor (high) latency due to the time it takes for the signals to travel to and from the satellite. It is definitely much better than the modem for downloading that nice little 150 MB patch from Microsoft. However, it is much worse than the modem for playing the latest online video game with your buddy over the Internet, because of the latency, or lag, in transmissions. Every move you make in your game will be delayed for over half a second as the signal bounces around between the satellite and the earth, making online gaming nearly impossible. Thus, whether satellite Internet is worth the extra money depends entirely on what you plan to use it for.
Related Information: An important issue closely related to latency is quality of service, a general term that refers (among other things) to the ability of networks to deliver necessary bandwidth and reliable data transfer for applications that need it. See the topic devoted to this subject later in this section.


Key Concept: Where bandwidth and throughput indicate how fast data moves across a network, latency describes the nature of how it is conveyed. It is most often used to describe the delay between the time that data is requested and the time when it arrives. A networking technology with very high throughput and bad (high) latency can be worse for some applications than one with relatively low throughput but good (low) latency.

Understanding Performance Measurement Units
(Page 1 of 3)

People who make networking hardware, or write materials that try to tell you how to operate it, make use of many terms to describe performance, such as throughput and bandwidth. In addition, they also use several different units to measure performance. Unfortunately—and I'm sure you knew this was coming—these units are often used incorrectly, and they are also very similar to each other in name. Worse, they also have overlapping abbreviations, and lots of people use these abbreviations without making clear what the heck they are talking about. Isn't that great?
“Bits and Bytes”

The first issue is “the infamous letter B”. Or rather, I should say, the matter of the “big B” and the “little b”.By popular convention, the capitalized “B” is supposed to be used for “byte”, and the lower-case “b” for bit—this is the way these abbreviations are always used in this Guide. (A byte is normally eight bits; sometimes the term octet is used instead. If you aren’t familiar with these terms, refer to the primer on binary basics, where you will also find a discussion of the small “controversy” related to bytes and octets.)

Unfortunately, this convention is not followed strictly by everyone. As a result, you may on occasion see “b” being used to refer to bytes, and “B” used for bits. This “b” and “B” business causes a tremendous amount of confusion sometimes, with people mistaking bits for bytes and accidentally thinking that networks are running eight times faster or slower than they really are.

Bear in mind when looking at speed ratings that they are almost always given in terms of bits, not bytes. The “56k” in a “56k modem” means 56,000 bits, not 56,000 bytes, of theoretical transfer speed. (This is true even if someone calls it a “56K” modem.) Similarly, Fast Ethernet operates at 100 megabits per second, not megabytes, and a 1.544 Mbps T-1 link sends a theoretical maximum of 1,544,000 bits each second. This, at least, is usually pretty consistent.

When it comes to throughput measurements, however, both bits and bytes are used, so you have to be careful. Raw throughput values are normally given in bits per second, but many software applications report transfer rates in bytes per second, including many Web browsers and FTP client programs. This often leads to users wondering why they are only getting one eighth of their expected download or transfer speeds.
Key Concept: In most cases in discussions of networking performance, the lower-case letter “b” refers to “bits” and the upper-case “B” to “bytes”. However, these conventions are not always universally followed, so context must be used to interpret a particular measurement.

Understanding Performance Measurement Units
(Page 2 of 3)

Throughput Measurement Units and the Kilo, Mega and Giga Multipliers

The standard unit for bit throughput is the “bit per second”, commonly abbreviated “bit/s”, “bps” or “b/s”. The byte unit is “byte per second”, abbreviated “bytes/s”, “Bps” or “B/s”—unless some cruel author decides to use a lower-case “b” just to confuse you. This means that the maximum theoretical throughput of 100BASE-TX (100 Mbps) Ethernet is about 12 MB/s. Where the context is unclear, it is better to spell out the unit as “100 Mbits/s” or “12 Mbytes/s”, which of course, I try to do in this Guide.

You will also occasionally, especially when dealing in the realm of communications, see throughput measured in characters per second, or “cps”. In most computer systems (including PCs) each character takes up one byte, so “cps” is equivalent to “bytes/s”, “B/s” or “Bps”.

Of course, most networking technologies don't move just a few bits and bytes around every second; they move, thousands, millions, or even billions. Thus, most speed ratings are not in bits per second, but rather kilobits (kb), megabits (Mb), or gigabits (Gb) per second, and the same thing can be done for bytes. Thus, we find terms such as “100 Mbps Ethernet” or “700 kb/s ADSL”.

Here we run into another problem: the existence of both decimal and binary versions of the terms “kilo”, “mega” and “giga”. For example, the decimal form of the prefix for a million (“mega”) is 106 or 1,000,000, while the binary form is 220 or 1,048,576. This differential of about 5% leads to all sorts of confusion. When you see these abbreviations, bear in mind that in networking, they almost always refer to the decimal form. Thus, 100 Mbps Ethernet is rated at 100,000,000 bits per second, not 104,857,600 bits per second.
Key Concept: The unit most often used to express networking throughput is bits per second or bps. This term is often expressed in thousands, millions or billions as kbps, Mbps or Gbps. It almost always uses the decimal, not binary, versions of the kilo, mega or giga multipliers.

Understanding Performance Measurement Units
(Page 3 of 3)

Signaling Rate and the Baud

Finally, there's another term that you will encounter frequently in discussions of modems and some other technologies: the baud. Named for telegraphy pioneer Jean Maurice Emile Baudot (1845-1903), this is a unit that measures the number of changes, or transitions, that occur in a signal in each second. So, if the signal changes from a “one” value to a “zero” value (or vice-versa) one hundred times per second, that is a rate of 100 baud.

In the early days of very slow modems, each bit transition encoded a single bit of data. Thus, 300 baud modems sent a theoretical maximum of 300 bits per second of data. This led to people confusing the terms “baud” and “bits per second”—and the terms are still used interchangeably far too often. You'll commonly hear people refer to a 28.8kbps modem, for example, as running at “28,800 baud”.

But the two units are in fact not the same; one measures data (the throughput of a channel) and the other transitions (called the signaling rate). Modern modems use advanced modulation techniques that encode more than one bit of data into each transition. A 28,800 bps modem typically encodes nine bits into each transition; it runs at 3,200 baud, not 28,800 baud (the latter number being the product of 3,200 and 9). In fact, there's no way to operate a modem on a conventional phone line at 28,800 baud—it exceeds the frequency bandwidth of the phone line. That's the reason why advanced modulation is used to encode more data into each transition.
Key Concept: The units baud and bps are often treated equivalently, but are not the same. Baud measures not the throughput of a network but its signaling rate, meaning the number of times that the signal changes value in each second. Since modern encoding and modulation techniques often encode either greater or fewer than one bit value into each such transition, the throughput and baud rate of network technologies are usually different.



Wow, when I started writing this topic, I never envisioned that I would have to write so much just to explain something that should be fairly simple. Leave it to computer people to complicate the simple, but well, there you have it. At least you should now be able to figure out what all those terms are about, and can impress your friends and relatives with explanations of why their 56k modem doesn't actually run at 56,000 baud. J

Theoretical and Real-World Throughput, and Factors Affecting Network Performance
(Page 1 of 3)

When assessing the performance of networks, keep in mind that there is always a difference between theoretical speed ratings, and “real-world” throughput. If you are lucky—rather, if your network is set up well—then this difference is relatively small but still significant. Otherwise, the difference can be extremely large. Notice that there is no option for the difference between theoretical and practical performance being “negligible”!
Major Categories of Real-World Performance Impact Factors

The reasons for the difference between what a network or communications method is supposed to be able to do and what it can actually do are many. I consider them as generally falling into three categories: normal network overhead, external performance limiters, and network configuration problems.
Normal Network Overhead

Every network has some degree of normal network overhead, which guarantees that you will never be able to use all of the bandwidth of any connection for data. Take as an example 10 Mbit/s Ethernet. Sure, the line may be able to transmit 10,000,000 bits every second, but not all of those bits are data! Some are used to package and address the data—data can't just be thrown onto the network in raw form. Also, many of those bits are used for general overhead activities, dealing with collisions on transmissions, and so on. There are natural inefficiencies in any networking technology.

Even beyond this, there are other overhead issues. Any network transaction involves a number of different hardware and software layers, and overhead exists at each of them, from the application and operating system down to the hardware. These overheads mean that you generally lose at least 20% of the “rated” speed of a LAN technology “off the top”, and sometimes even more. For example, 7 Mbits/s user data throughput on a regular 10 Mbit/s Ethernet network is actually very good.

Theoretical and Real-World Throughput, and Factors Affecting Network Performance
(Page 2 of 3)

External Performance Limiters

There are external factors that limit the performance of a network. Important issues here include the ability of the hardware to process the data, and also any bandwidth limitations that exist in the chain of data transmission between two nodes. Hardware issues most often show up with very fast networking technologies. Consider a Gigabit (1000 Mbps) Ethernet connection between two regular PCs. In “theory”, this connection should allow the transmission of 1 gigabit of data every second. Well, even beyond the matter of overhead mentioned above, no regular PC is capable of pumping this much data per second if its life depended on it. Only high-end servers have this capacity—and even they would have problems sustaining this unless they were doing nothing else. An older PC's hard disk probably can't even stream data fast enough to keep a 100 Mbit/s Ethernet connection busy. Thus, upgrading a 100 Mbps Ethernet card in an older machine to Gigabit is not likely to help as much as you might expect.

Bandwidth limitations cause network throughput issues because the entire network can only run as fast as its slowest link. These bottlenecks create reduced performance. As a common example, suppose you have a cable modem connection to the Internet that is rated at 1 Mbps for downloads. It may be very fast most of the time, but if the Web site you are accessing is totally bogged down, or it is having connectivity problems itself, you are not going to download from that site at 1Mbps. In fact, probably not even close.

Finally, it’s also important to remember that there are many technologies that simply do not always operate at a constant fixed speed; they may change speeds based on physical network characteristics. A good example is an analog modem, which can vary greatly in performance depending on the quality of the line over which it operates.
Network Configuration Problems

The issues I mentioned above are usually ones that you cannot do anything about; they are just the nature of the networking beast. The third category of performance limiters, misconfiguration, is different. This refers to network slowdowns that occur because hardware or software have not been set up correctly. Poor cabling, misconfigured interface cards, or bad drivers can seriously reduce the performance of a network—by 90% or even more.

These problems can usually be corrected, but only if you are looking for them. Driver problems are particularly insidious because the natural tendency is for people to blame hardware when slowdowns occur. However, you cannot get the most of your hardware devices without proper software to run it. These issues are much more significant with “bleeding edge” hardware than with established products, incidentally.

Also included in this category of issues are problems that occur due to poor design. For example, putting 30 busy workstations on a shared 10 Mbit/s Ethernet segment is likely to result in poor performance—using a network switch would be much better, since this would create multiple, independent segments for higher performance. Another common mistake is not providing a “fatter pipe” (higher bandwidth connection) to servers in a client/server setup. These issues can be avoided or ameliorated by reconfiguring the network—or even better, designing it properly in the first place, right?

Theoretical and Real-World Throughput, and Factors Affecting Network Performance
(Page 3 of 3)

The Effect of Asymmetry

In addition to the above, bear in mind that many networking technologies, especially ones used for Internet access, are asymmetric, meaning that they offer much higher bandwidth in one direction than the other. Usually, this is arranged so that more bandwidth goes down to the user than from the user to the network, since most Internet users download far more than they upload. However, it's always important to find out if a speed rating is for both directions, or for only one direction, and if so, what the other direction's speed is. Common technologies with asymmetric performance include 56k modems, ADSL, cable modems, and satellite Internet access. Beware, because the marketing droids who sell these technologies will often try to hide the asymmetry of their services, usually highlighting only the bigger download figure and avoiding mention of the slower uploads.

Asymmetry can also have unexpected effects on network performance, because most communications, even if they seem unidirectional, are not. The most common case is when an Internet access technology has much higher download bandwidth than upload bandwidth. When using TCP/IP to download data, acknowledgments must be sent regularly. If the upstream bandwidth is too low, this may make it impossible to fully exploit the download bandwidth of the link.
Performance Metric Issues

Finally, take into account that there are many different ways of measuring and assessing performance. Synthetic benchmark programs are often used to measure throughput, and can produce impressive performance scores—which usually have little to do with how a network will actually operate. Such metrics are best used for comparison purposes, by showing that one network or system is faster than another, rather than paying too much attention to the actual number they produce. Even when doing comparisons, however, caution is wise.
Key Concept: The theoretical rated speed of a network is never achieved in practice, for a number of reasons. Overhead issues mean that not all of the possible capacity of a network can be used for data. External factors such as hardware bandwidth limitations restrict data input and output. Configuration problems can also greatly reduce real-world performance. Finally, it is important to remember that many technologies are asymmetric, offering higher speed in one direction than the other, and the larger number is often the one that is advertised.

Simplex, Full-Duplex and Half-Duplex Operation
(Page 1 of 2)

Another aspect of performance that is worthy of some attention is the mode of operation of the network or connection. Obviously, whenever we connect together device A and device B, there must be some way for A to send to B and B to send to A. Many people don’t realize, however, that networking technologies can differ in terms of how these two directions of communication are handled. Depending on how the network is set up, and the characteristics of the technologies used, performance may be improved through the selection of performance-enhancing modes.
Basic Communication Modes of Operation

Let's begin with a look at the three basic modes of operation that can exist for any network connection, communications channel, or interface.
Simplex Operation

In simplex operation, a network cable or communications channel can only send information in one direction; it's a “one-way street”. This may seem counter-intuitive: what's the point of communications that only travel in one direction? In fact, there are at least two different places where simplex operation is encountered in modern networking.

The first is when two distinct channels are used for communication: one transmits from A to B and the other from B to A. This is surprisingly common, even though not always obvious. For example, most if not all fiber optic communication is simplex, using one strand to send data in each direction. But this may not be obvious if the pair of fiber strands are combined into one cable.

Simplex operation is also used in special types of technologies, especially ones that are asymmetric. For example, one type of satellite Internet access sends data over the satellite only for downloads, while a regular dial-up modem is used for upload to the service provider. In this case, both the satellite link and the dial-up connection are operating in a simplex mode.
Half-Duplex Operation

Technologies that employ half-duplex operation are capable of sending information in both directions between two nodes, but only one direction or the other can be utilized at a time. This is a fairly common mode of operation when there is only a single network medium (cable, radio frequency and so forth) between devices.

While this term is often used to describe the behavior of a pair of devices, it can more generally refer to any number of connected devices that take turns transmitting. For example, in conventional Ethernet networks, any device can transmit, but only one may do so at a time. For this reason, regular (unswitched) Ethernet networks are often said to be “half-duplex”, even though it may seem strange to describe a LAN that way.
Full-Duplex Operation

In full-duplex operation, a connection between two devices is capable of sending data in both directions simultaneously. Full-duplex channels can be constructed either as a pair of simplex links (as described above) or using one channel designed to permit bidirectional simultaneous transmissions. A full-duplex link can only connect two devices, so many such links are required if multiple devices are to be connected together.

Note that the term “full-duplex” is somewhat redundant; “duplex” would suffice, but everyone still says “full-duplex” (likely, to differentiate this mode from half-duplex).

Simplex, Full-Duplex and Half-Duplex Operation
(Page 2 of 2)

Comparing Half-Duplex and Full-Duplex Operation

Of these three options, full-duplex is obviously the one that yields the highest performance. Full-duplex operation doubles the theoretical bandwidth of the connection. If a link normally runs at 1 Mbps but can work in full-duplex mode, it really has 2 Mbps of bandwidth (1 Mbps in each direction). Remember the key word “theoretical” however—you do not really get double the performance in real life, because communications usually do not involve sending lots of data in both directions at once. However, you certainly get better throughput than in a half-duplex mode.

In some cases, the mode of operation is a function of the technology and cannot be changed. In others, however, full-duplex mode is a matter of the correct hardware settings, and also whether the software supports full-duplex operation or not. Thus, getting higher performance in this area is sometimes simply a matter of ensuring proper configuration.

Full-duplex operation has been pretty much taken for granted in communications for years. The more interesting development has been the rise in significance of full-duplex operation for local area networking. Traditionally, LANs have always used half-duplex operation on a shared access medium. As the use of switches has increased, allowing dedicated bandwidth to each computer, full-duplex operation has become very popular. Full-duplex operation in Ethernet not only allows the simultaneous transmission of data in both directions, it also eliminates contention for the formerly shared access medium—no more collisions. The combination of these two effects improves performance, sometimes substantially.
Key Concept: There are three basic operating modes that describe how data is sent between connected devices on a network. In simplex operation, data can flow in only one direction between two devices. Half-duplex networks allow any device to transmit, but only one may do so at a time. Full-duplex operation means two attached devices can each transmit and receive simultaneously—this offers the greatest potential performance, since throughput is not decreased by forcing one device to wait for another before sending data.

Quality of Service (QoS)

I mentioned in my discussion of common network performance measurements that there were many different aspects to network performance. I also introduced the concept of latency, which measures how long it takes for data to travel across a network. Latency is one important part of a larger issue in networking that is sometimes called quality of service or QoS.

The inherent nature of most networking technologies is that they are more concerned with pumping data from one place to another as fast as possible than they are with how the data is sent. For example, the Internet is designed on top of the Internet Protocol, a packet-switching technology that is designed to get packets from point “A” to point “B” in whatever way is most effective, without the user necessarily having any ability to know what route will be taken. In fact, some packets in the same data stream may be sent along different routes. Packets may be stored for a while before being forwarded to their destination, or even dropped and retransmitted.

For most applications, such as simple file or message transfers, this is perfectly fine. However, there are applications where this sort of service is simply of “too low quality”. In these cases, the nature of how the data is delivered is more important than merely how fast it is, and there is a need for technologies or protocols that offer “quality of service”. This general term can encompass a number of related features; common ones include the following:
Bandwidth Reservation: The ability to reserve a portion of bandwidth in a network or interface for a period of time, so that two devices can count on having that bandwidth for a particular operation. This is used for multimedia applications where data must be streamed in real-time and packet rerouting and retransmission would result in problems. This is also called resource reservation.

Latency Management: A feature that limits the latency in any data transfer between two devices to a known value.

Traffic Prioritization: In conventional networks, “all packets are created equal”. A useful QoS feature is the ability to handle packets so that more important connections receive priority over less important one.

Traffic Shaping: This refers to the use of buffers and limits that restrict traffic across a connection to be within a pre-determined maximum.

Network Congestion Avoidance: This QoS feature refers to monitoring particular connections in a network, and rerouting data when a particular part of the network is becoming congested.

So, in essence, quality of service in the networking context is analogous to quality of service in the “real world”. It is the difference between getting take-out and sit-down service at a nice French restaurant—both cure the hunger pangs, but they meet very different needs. Some applications, especially multimedia one such as voice, music and video, are time-dependent and require a constant flow of information more than raw bandwidth; for these uses, a burger and fries in a paper bag just won’t cut the mustard. J
Key Concept: The generic term quality of service describe the characteristics of how data is transmitted between devices, rather than just how quickly it is sent. Quality of service features seek to provide more predictable streams of data rather than simply faster ones. Examples of such features include bandwidth reservation, latency minimums, traffic prioritization and shaping, and congestion limitation. Quality of service is more important for specialty applications such as multimedia than for routine applications such as those that transfer files or messages.



To support quality of service requirements, many newer technologies have been developed or enhanced to add quality of service features to them. This includes the ability to support isochronous transmissions, where devices can reserve a specific amount of bandwidth over time to support applications that must send data in real time. One technology that has received a lot of attention for its quality of service features is Asynchronous Transfer Mode (ATM). ATM is designed to support traffic management features that are not generally available on networks not created to provide quality of service features (such as Ethernet)
Note: “Quality of service” has become a big buzzword, lately. By itself, this term conveys about as much useful information about what the technology offers as being told that it is “high performance”. You have to dig past the marketingspeak and find out exactly what QoS features are being offered.

Network Standards and Standards Organizations

You can't study networking and its related technologies without very quickly encountering a whole host of standards that are related to the subject—and organizations that create these standards. Network standards facilitate the interoperability of network technologies and are extremely important. It may be an exaggeration to say that networking wouldn't exist without standards, but it isn’t to say that networking as we know it would not exist without them. Networks are literally everywhere, and every hardware device or protocol is governed by at least one standard, and usually many.

In this section I provide a brief examination of the often-overlooked subject of network standards and standards organizations. I begin with a background discussion of why standards are important, highlighting the differences between proprietary, de facto and open standards. I give an overview of networking standards in general terms, and then describe the most important international standards organizations and industry groups related to networking. I then describe the structure of the organizations responsible for Internet standards, including the registration authorities and registries that manage resources such as addresses, domain names and protocol values. I conclude with a discussion of the Request For Comment (RFC) process used for creating Internet standards

Proprietary, Open and De Facto Standards
(Page 1 of 3)

Why are standards important? Well, because I said so. They are. Alright, fine, I'll try to do a bit better than that; even my young kids won't take that for an answer any more. But I have to warn you that the proper answer is a lot longer than the cute answer. J

An old saw in the computer world says that “the beauty of standards is that there are so many to choose from”. This little joke reflects the frustration that technicians often feel at the sheer number of standards that are found in the industry: thousands. Aside from differing in terms of content—what technologies and protocols they describe—standards also often differ in terms of the type of standards they are, and how they came about. In fact, part of the reason why there are sometimes “so many to choose from” in a particular area is because of how they come about.
Proprietary Standards

In the early days of computing, many people didn't quite understand just how important universal standards were. Most companies were run by skilled inventors, who came up with great ideas for new technologies and weren't particularly interested in sharing them. It wasn't considered a “smart business move” to share information about new inventions with other companies—the competition! Oh sure, every company believed that standards were important, but they thought it was even more important that they be the ones to control those standards.

I'll give you an example of what I mean. Let’s imagine that it's 1985, and I have just come up with a great networking technology, which I have incorporated into a fancy new local area networking product called “SooperDooperNet”. (Catchy, eh?) SooperDooperNet is my product. I have patents on the technology, I control its design and manufacture, and I sure as heck don't tell anyone else how it works—if I did, they would copy me, right?

Now, I could sell interface cards, cables and accessories for SooperDooperNet, and a company that wanted to use it could install the cards in all of their PCs and be assured that they would be able to talk to each other. This solves the interoperability problem for this company by creating a “SooperDooperNet standard”. This would be an example of a proprietary standard—it's owned by one company or person.

The problem with proprietary standards is that other companies are excluded from the standard development process, and therefore have little incentive to cooperate with the standard owner. In fact, just the opposite: they have a strong motivation to develop a competing proprietary standard, even if it doesn't improve on the existing one.

So when my competition sees what I am doing, he is not going to also create network interface cards that can work with SooperDooperNet, which would require paying me a royalty. Instead, he's going to develop a new line of networking hardware called MegaAwesomeNet, which is very similar to SooperDooperNet in operation but uses different connectors and cable and logic. He too will try to sell bunches of cards and cables—to my customers, if possible!

You can see what the problem is here: the market ends up with different companies using different products that can't interoperate. If you install SooperDooperNet, you have to come to me for any upgrades or changes—you have no choices. Worse, what happens if Acme Manufacturing, which has 50 PCs running SooperDooperNet, merges with Emca Manufacturing, which has 40 PCs running MegaAwesomeNet? Well, the IT people have a problem, that's what. Sure, there would be ways to solve it, but wouldn't everyone be better off to just avoid these difficulties in the first place? And how could you create something like the Internet if everyone's networks used different “standards”?

Proprietary, Open and De Facto Standards
(Page 2 of 3)

Open Standards

Eventually, companies learned that they would be better off to have standards that everyone agreed with, instead of constantly fighting with each other. This is particularly true of networking, where devices need to talk to each other. If many companies get together and agree to cooperate, they can create an open standard instead of a bunch of proprietary ones. The name is rather self-explanatory; rather than being the closely-guarded secret of one organization, and open standard is available to any who are interested in using it.

One key to the success of an open standard is a steering organization to promote it. Usually, a neutral, non-profit trade association or working group is established to develop and promote the standard, and the various for-profit hardware and software companies join this group and support it financially. These groups also work with standards approval bodies like the ITU and ISO to gain acceptance for their standards.

Of course, the companies aren't doing this just to be nice to their customers. In creating open standards, they split the “market share pie” between them, but they make the pie grow much larger by attracting more customers. Customers like open standards more than proprietary ones, because they give them more choices, and increase their ability to interact with other companies, troubleshoot problems, hire skilled workers, and expand in the future. As for the companies, they still compete in their specific offerings, so it's not like they all end up making the same products. For all of these reasons, open standards are now far more common than proprietary ones.

However, the process involved in creating these standards is often a difficult one. In some cases the standards organization will draft the standard from the ground up, but in others it may select one technology as the basis for the standard from several that are submitted in what is commonly called a “technology bake-off”. Thus, many different companies may come to the table with different approaches, each of them vying for selection as the standard for use by the group. Politics can cause groups to get bogged down for years fighting over various options, or even to split into multiple groups. Good examples are what occurred in the conflict between supporters of 100VG-AnyLAN and Fast Ethernet, and the problems with standards politics that have plagued the world of powerline networking.

Furthermore, there are still some companies that believe strongly in proprietary standards, because they really want to control and direct the market. One of the most famous/infamous in this regard is Sony, a company that makes excellent hardware but frequently refuses to accept established standards. For this reason, some people avoid their products, even though they are good; because they want to stick to industry standards.

Proprietary, Open and De Facto Standards
(Page 3 of 3)

De Facto Standards

This brings me to the third type of standard that is often seen in the computer world: the de facto standard. “De facto” is Latin for “in fact”, so a de facto standard is one that is used as a universal standard just because over time it became widely used, and not because the standard was developed and approved by a standards committee. A good example of a de facto standard is the “AT” command set used by modems; virtually all modems use it, but this resulted not from an industry group agreeing to adopt and deploy it. Rather, it was developed unilaterally by Hayes, the pioneering modem company, and then adopted by virtually every other modem maker until it became a standard.

One reason why proprietary standards are still sometimes seen is that some companies want to produce a standard that will become so universally used that it becomes the de facto standard, thus giving them a leadership position in that market. Again, in my estimation Sony falls into this category—they often want to do things “their way” and create proprietary standards that they try to promote using their powerful market presence.

Sometimes this succeeds but often it does not, resulting a fragmented market of incompatible products. An excellent example is when Sony created a new format for digital camera flash memory (the “memory stick”) rather than using the CompactFlash format used by other camera manufacturers. The result of this was not everyone using memory sticks as Sony had hoped, but two incompatible standards that increase confusion and yield no real benefit to the customer.
Key Concept: Networking standards can be classified as proprietary, open or de facto. Proprietary standards are owned by one particular organization. If that organization has sufficient market clout and the industry lacks alternatives to its standard, it may be adopted by the whole industry, becoming a de facto standard. Usually, however, differing proprietary standards compete with each other, resulting in a fragmented market. In contrast, open standards are not owned by anyone—they are created by neutral organizations to ensure that compatible products can be designed and developed by many different companies. This makes life easier for the customer as well as promoting the market as a whole.

Networking Standards

All networking technologies have standards associated with them. These are usually highly technical documents, and often presume that the reader has a fair bit of knowledge about networking. If you aren't an expert, you will probably have some difficulty understanding networking standards. (Some people seem to think I am an expert, but I too have trouble with most of the details in a typical networking standard.)

In fact, many technologies have quite a number of standards associated with them. A networking technology may have more than one standard for any or all of the following reasons:
The original standard has been revised or updated;

The technology is sufficiently complex that it needs to be described in more than one document;

The technology borrows from or builds on documents used in related technologies;

More than one organization has been involved in developing the technology.

Standards documents created in the United States are usually developed in English, but are also routinely translated into other languages. European standards are often published simultaneously in English, French and German, and perhaps other languages as well.

Today, virtually all networking standards are “open” standards, administered by a standards organization or industry group. As I explained in the previous topic, open standards are more popular than proprietary ones in the computer industry, and that's particularly so when it comes to networking. In fact, the few technologies where there is no universally-accepted open standard have been losing ground to those with open standards, particularly in the areas of wireless LANs and home networking—pretty much proving how important an open process really is.

I considered having a separate section where I listed all of the various standards used for networking within the Guide. However, this would be a very large section indeed, and the discussions of the various standards would be somewhat “detached” from the places where I describe the technologies they define. Instead, I have many different smaller discussions of standards, within the sections where I describe each networking method or protocol. These can usually be found in an overview topic introducing each technology type, though for more complex protocols I have a dedicated topic just discussing relevant standards and where they are documented.

International Networking Standards Organizations

The rise of open standards not owned by any one company has been a great boon to customers of computer and networking products, as well as the manufacturers that sell to them. In order to facilitate the development of open standards, however, organizations are needed that will coordinate the creation and publishing of these documents. Generally, these are non-profit organizations that specifically take a neutral stance regarding technologies and work for the betterment of the industry as a whole.

Here are some of the standards organizations that you are likely to encounter when reading about networking and the Internet:
International Organization for Standardization (ISO): Probably the biggest standards organization in the world, the ISO is really a federation of standards organizations from dozens of nations. In the networking world, the ISO is best known for its OSI Reference Model.
Note: The shortened name of the International Organization for Standardization is indeed “ISO”, and not “IOS” as you might imagine. In fact, it is not an acronym at all. Since the full name of the body differs from one language to the next, any acronym for that name would differ as well. Instead, the organization chose the name “ISO” from the Greek word “isos”, meaning “equal”. Many people, especially in the United States, think “ISO” is short for “International Standards Organization”, but this is incorrect.


American National Standards Institute (ANSI): ANSI is the main organization responsible for coordinating and publishing computer and information technology standards in the United States. While they are commonly thought of as developing and maintaining standards, they do neither. Instead, they oversee and accredit the organizations that actually create the standards, qualifying them as Standards Developing Organizations or SDOs. ANSI also publishes the standards documents created by the SDOs, and serves as the United States' representative to the ISO.

Information Technology Industry Council (ITIC): ITIC is a group of several dozen companies in the information technology (computer) industry. ITIC is the SDO approved by ANSI to develop and process standards related to many computer-related topics. It was formerly known as the Computer and Business Equipment Manufacturers Association (CBEMA).

National Committee for Information Technology (NCITS): A committee established by the ITIC to develop and maintain standards related to the information technology world. NCITS was formerly known by the name Accredited Standards Committee X3, Information Technology, or more commonly, just X3. It maintains several sub-committees that develop and maintain standards for various technical subjects.

Institute of Electrical and Electronics Engineers (IEEE): The IEEE (pronounced “eye-triple-ee”) is a well-known professional organization for those in the electrical or electronics fields, including computers and networking. IEEE's main claim to fame in the networking industry is the IEEE 802 Project, which encompasses many popular networking technologies including Ethernet.

Electronic Industries Alliance (EIA): The EIA is an international industry association that is best known for publishing electrical wiring and transmission standards.

Telecommunications Industry Association (TIA): The TIA is the communications sector of the EIA, and is responsible for developing communications standards. Since communications, wiring and transmission are all related, and since the TIA and EIA organizations are also related, standards produced by the EIA or TIA are often labeled with the combined prefixes “EIA/TIA” or “TIA/EIA”.

International Telecommunication Union - Telecommunication Standardization Sector (ITU-T): ITU-T is another large international body that develops standards for the telecommunications industry. The ITU-T was formerly named the International Telephone and Telegraph Consultative Committee or CCITT (the abbreviation was of the French version of the organization's name, Comité consultatif international téléphonique et télégraphique.)

European Telecommunications Standards Institute (ETSI): An organization with members from dozens of countries both within and outside Europe that is dedicated to developing telecommunications standards for the European market (and elsewhere). ETSI is known for, among other things, regulating the use of radio bandwidth in Europe and developing standards such as HiperLAN.

This list represents some of the more important organizations that are responsible for establishing and publishing standards in the networking world. It is not an exhaustive list, however. I should also point out that the set of related organizations responsible for creating Internet standards is not shown in this list as I have covered them in two dedicated topics on Internet standards organizations and registration authorities.

I want to emphasize that many of the organizations above do not actually develop the various standards. Generally, these are oversight organizations—“high level management” if you will—that work with many other smaller groups who actually develop the standards. Also, in many cases a particular standard may be published by more than one standards organization, so it may be labeled with more than one name.
Key Concept: There are a number of well-known international organizations that play an important role in the development of open networking standards. Some of the most important of these are ISO, ANSI, ITIC, IEEE, EIA/TIA, ITU-T and ETSI. These are oversight organizations, responsible for overall management of the standards development process, rather than for the particulars of creating individual standards.

Networking Industry Groups

As I explained in the previous topic, most open standards are coordinated and published by a small number of large, often international standards organizations. However, these are not the only groups of people who are involved in the development of standards for networking and Internet technologies. There are also many different networking industry groups that play an important role in the standard creation process.

Networking industry groups differ in a few ways from standards organizations.They are typically dedicated to the promotion of a specific technology, where standards organizations are more generic and handle the oversight of hundreds of different ones. Industry groups are also generally smaller than standards organizations, with members drawn primarily from the field of developers and manufacturers that create products for the particular technology the group promotes.

Perhaps most importantly, industry groups often actually write and maintain the standards, where standards organizations are generally more “supervisors” who ensure that the standards meet, well, the standards for the development of standards. Some industry groups, however, are concerned only with marketing and promotion activities.

Obviously, these industry groups work closely together with the standards organizations. In some cases, they may even be part of the same overall organization, and all of the different groups are related in some ways. For example, the IEEE 802 project consists of a number of working groups that are charged with maintaining and developing specific technology standards, which the larger IEEE organization approves and publishes.

One of these working groups is the 802.11 working group, which develops wireless Ethernet technology. At the same time that this group “does its thing”, there is an industry group called the Wireless Ethernet Compatibility Alliance (WECA). This group works to ensure the cross-vendor compatibility of 802.11b wireless networking hardware and software.

Other industry groups are formed specifically to develop independent standards that are not approved through a formal standardization process. Examples include groups such as HomePNA, IrDA and HomeRF. One of the problems with these groups is that they usually do not make their standards open to the public. This is undoubtedly due to some sort of security concern or desire to keep the “inner workings” of their technology “secret”.

Unfortunately for these groups, this policy harms the ability of regular people to learn about how their technologies work. For example, in writing this and other reference works, I am almost always unable to obtain specifications from most of the private industry groups. They either refuse to allow me to get the document at all, or want to charge me a great deal of money for the privilege (well into the thousands of dollars in some cases). In doing this, these groups harm their own cause, by making it more difficult for those interested in their technologies to learn about them. This is another key advantage of open standards managed by public organizations such as ANSI or the IEEE.

Internet Standards Organizations (ISOC, IAB, IESG, IETF, IRSG, IRTF)
(Page 1 of 3)

High-quality, widely-accepted open standards become more important the larger the number of people that use a network. The largest network of all is of course the Internet, which connects millions of people on thousands of individual networks into a globe-spanning internetwork. The Internet has revolutionized not only networking and computing, but communication, business, and even society as a whole. One of the critical factors in the success of the Internet has been its development using open standards.

Of course, nobody sat down one day and said “hey, let’s create the Internet!” (No, not even Al Gore. J) It began as a small research network, and was developed over time concurrently with the technology set that implemented it: TCP/IP. At first, a relatively small organization was sufficient to manage the development of Internet standards and oversee its activities, but as the Internet continued to grow, this became inadequate. Eventually a more formalized structure of organizations was required, to manage the Internet development process and other activities to ensure the continued success and growth of the Internet and the TCP/IP technologies that power it.

Today, there are six organizations that are responsible for the development of the Internet’s architecture, standards and policies, and related activities. They are closely-related, with certain organizations being responsible for oversight of others, as shown in Figure 7. These organizations perform many tasks, and can be somewhat confusing to understand, since many have similar-sounding names and responsibilities. Therefore, I will concentrate mostly on their role in the development of Internet standards, since that is our primary interest in this discussion.







Figure 7: Internet Standards Organizations

The Internet Society (ISOC) oversees the IAB, which in turn directs the IETF and IRTF. The IETF develops current Internet and TCP/IP standards, and is headed by the IESG, which manages IETF working groups (WGs). The IRTF is the IETF’s research counterpart, containing research groups (RGs) led by the IRSG.

Internet Standards Organizations (ISOC, IAB, IESG, IETF, IRSG, IRTF)
(Page 2 of 3)

Key Internet Standards Organizations

Here is a brief description, rather simplified, of the key Internet standards organizations:
Internet Society (ISOC): A professional society responsible for general, high-level activities related to the management, development and promotion of the Internet. ISOC has thousands of individual and organizational members that engage in activities such as research, education, public policy development and standardization. It is responsible for providing financial and administrative support to the other organizations listed below. From the standpoint of standards development, ISOC’s key role is its responsibility for oversight of the IAB.

Internet Architecture Board (IAB): Formerly the Internet Activities Board, the IAB is charged with overall management of the development of Internet standards. It makes “big picture” policy decisions related to how Internet technologies and structures should work, to ensure that various standardization efforts are coordinated and consistent with overall development of the Internet. It is responsible for publishing Internet standards (RFCs). It advises the ISOC, and oversees the IETF and IRTF; it also acts as an appeals body for complaints about the standardization activities performed by the IETF. The charter of the IAB is described in RFC 2850.

Internet Engineering Task Force (IETF): The IETF focuses on issues related to the development of current Internet and TCP/IP technologies. It is divided into a number of working groups (WGs), each of which is responsible for developing standards and technologies in a particular area, such routing or security. Each area is managed by an area director (AD), who serves on the IESG. The IETF is overseen directly by the IESG and in turn by the IAB; it is described in RFC 3160.

Internet Engineering Steering Group (IESG): The IESG is directly responsible for managing the IETF and the Internet standards development process. It consists of each of the area directors of the IETF, who make final decisions about the approval of proposed standards, and works to resolve any issues that may arise in the standardization process. The IESG is technically considered part of the IETF and is also described in RFC 3160.

Internet Research Task Force (IRTF): Where the IETF is focused primarily on short-term development issues, the IRTF is responsible for longer-term research related to the Internet and TCP/IP technologies. It is a much smaller organization than the IETF, consisting of a set of research groups (RGs), which are analogous to the IETF’s working groups. The IRTF is overseen by the IRSG and IAB. It is described in RFC 2014.

Internet Research Steering Group (IRSG): The IRSG manages the IRTF in a similar way to how the IESG manages the IETF. It consists of the chairs of each of the IRTF research groups and works with the chair of the whole IRTF to make appropriate decisions on research activities. It is also discussed in RFC 2014.

Internet Standards Organizations (ISOC, IAB, IESG, IETF, IRSG, IRTF)
(Page 3 of 3)

The Importance of the IETF

Of these organizations, the IETF is the one that you will most often hear referenced, because that is the organization directly responsible for the development of the majority of Internet standards. It is for this reason that throughout this Guide, whenever I mention Internet standards development efforts, I refer to the IETF as doing the work. This is of course a bit of an oversimplification, since all of these organizations play a role in the standards development process, described in more detail in a separate topic.
Other Responsibilities of Standards Organizations

I also feel I should re-emphasize that many of these organizations are responsible for a great deal more than just standards development. This is especially true of the Internet Society, for which standardization is just one of many activities. The IAB also performs a number of functions not strictly associated with standards development, including managing the assignment of protocol values done by IANA and acting as a liaison between the Internet standards organizations and other standards bodies.
Key Concept: A group of related organizations is responsible for the development of TCP/IP standards and Internet technologies. The Internet Society (ISOC) has overall responsibility for many Internet activities including standards development. It oversees the Internet Architecture Board (IAB), which makes high-level decisions about Internet technology development. Most of the actual work of creating current Internet standards is performed by the Internet Engineering Task Force (IETF), which is managed by the Internet Engineering Steering Group (IESG). Longer-term research is done by the IETF’s sibling organization, the Internet Research Task Force (IRTF), led by the Internet Research Steering Group (IRSG).

Internet Registration Authorities and Registries (IANA, ICANN, APNIC, ARIN, LACNIC, RIPE NCC)
(Page 1 of 3)

The success of the global Internet relies on the development of universally-accepted standards for protocols and other technologies. Internet standards organizations such as the IETF are thus critically important; they manage the standards development process, to ensure that everyone agrees on how to create hardware and software that will work together to communicate world-wide.
Important Standardization Functions

While the need to standardize protocols seems obvious, there are a couple of other aspects to Internet standardization that are equally important but perhaps not quite as well understood:
Parameter Standardization: Most protocols rely on the use of parameters that control how they function. As just two of many, many examples, the Internet Protocol has a set of numbers that define different IP options, and the Address Resolution Protocol (ARP) has an Operation Code field that can take on many different values. Just as it is essential for devices to agree on what protocols to use, they must also agree on what parameters to use for those protocols, if communication is to be successful.

Global Resource Allocation and Identifier Uniqueness: There are a number of resources that are used on the Internet that must be allocated from a fixed set of values and where uniqueness in assignment is essential. The most obvious example is that each TCP/IP host must have a unique IP address; another important example is ensuring that only one organization uses a given DNS domain name. If two devices have the same IP address or two organizations try to use the same domain name, the results would be unpredictable, but almost certainly bad.

Internet Registration Authorities and Registries (IANA, ICANN, APNIC, ARIN, LACNIC, RIPE NCC)
(Page 2 of 3)

Internet Centralized Registration Authorities

In both of the cases above, some sort of centralized organization is required. We need a group to take responsibility for managing parameters and ensuring that everyone uses the same ones, just as they use the same protocols. We also need to coordinate the assignment of identifiers such as addresses and names, to ensure that they are created and allocated in a way that is acceptable to all. In the world of the Internet, these are sometimes called management authorities or registration authorities.

The organization originally responsible for this task was the Internet Assigned Numbers Authority (IANA). Amazingly, while the name makes it sound like the IANA was a huge bureaucracy, it was effectively one man: Jonathan B. (Jon) Postel, one of the most important pioneers of Internet and TCP/IP technologies. Jon Postel ran IANA until his untimely and unfortunate death in 1998.

IANA was originally charged with the task of managing which IP address blocks had been assigned to different companies and groups, and maintaining periodically-published lists of Internet parameters such as UDP and TCP port numbers. It also was in charge of registrations of DNS domain names, which were more directly handled by the Internet Network Information Center (InterNIC), a service managed by the United States government. Network Solutions Inc. (NSI) was later granted the contract to manage the InterNIC, and was eventually purchased by Verisign.

As the Internet continued to grow, an effort commenced in the mid-1990s to define a new organization that would be responsible for the central registration of Internet addresses and names. This took the form of a new private, non-profit company called the Internet Corporation for Assigned Names and Numbers (ICANN). ICANN is officially charged with all of the centralized registration tasks I have mentioned so far in this topic, including IP address assignment, DNS domain name assignment, and protocol parameters management.

In a simpler world, this development would have meant that ICANN would have replaced IANA, which would no longer exist. Instead, ICANN kept IANA around, leaving that organization in charge of overseeing IP address registration and Internet parameters. ICANN is of course now in charge of IANA, so really both organizations are responsible for IP addresses and parameters. This often leads to confusion, and to make things worse, it is common to see IANA and ICANN mentioned in conjunction as “IANA/ICANN” or “ICANN/IANA”.
Key Concept: Internet registration authorities are centralized organizations responsible for coordinating protocol parameters and globally-assigned resources such as IP addresses. The first such organization was the Internet Assigned Numbers Authority (IANA), which was initially in charge of IP address assignment, DNS domain name management and protocol parameters.Today the Internet Corporation for Assigned Names and Numbers (ICANN) has overall responsibility for these activities; the IANA operates under the auspices of ICANN and is still responsible for IP address assignment and parameter coordination.

Internet Registration Authorities and Registries (IANA, ICANN, APNIC, ARIN, LACNIC, RIPE NCC)
(Page 3 of 3)

Modern Hierarchy of Registration Authorities

In the original “classful” IP addressing scheme, addresses were assigned to organizations directly by IANA in address blocks: Class A, Class B and Class C addresses. Today, a hierarchical, classless addressing system called Classless Inter-Domain Routing (CIDR) is used instead. Address assignment in CIDR involves the hierarchical allocation of blocks of addresses, starting with large blocks that are given to big organizations, which split them to assign to smaller groups. (Much more detail on these methods can be found in the large section on IP addressing.)

IANA, as the organization in charge of all IP addresses, assigns the largest blocks of addresses to regional Internet registries (RIRs) that are responsible for further allocation activities. Each RIR manages IP addresses and other Internet number resources (such as autonomous system numbers) for a particular region. The four regional registries are:
Asia Pacific Network Information Centre (APNIC): Covers the Asia/Pacific region.

American Registry for Internet Numbers (ARIN): Manages North America, part of the Caribbean, and sub-equatorial Africa.

Latin American and Caribbean Internet Addresses Registry (LACNIC): Responsible for Latin America and part of the Caribbean.

Réseaux IP Européens Network Coordination Center (RIPE NCC): Takes care of Europe, the Middle East, Central Asia, and Africa north of the equator.

Each registry may assign address blocks to Internet service providers (ISPs) directly, or further delegate them to national Internet registries (NIRs) or smaller local Internet registries (LIRs). See the topic on IP address allocation issues for more details.

Name registration has changed over the last several years. It is no longer part of IANA’s responsibilities, and ICANN has opened up the name registration business so it is no longer the province of a single organization such as InterNIC/Network Solutions/Verisign. Now, many different accredited registrars can be used for name registration in many of the popular top-level domains. This is discussed in the topic on DNS public registration.
On The Web: The complete list of documents containing Internet and TCP/IP protocol parameters can be found on the IANA’s web site at: http://www.iana.org/numbers.html

Internet Standards and the Request For Comment (RFC) Process
(Page 1 of 3)

The precursors of the modern Internet were diminutive networks developed and run by a small group of computer scientists and engineers. These technologists knew that developing open, widely-adopted standards would be essential to the eventual growth of the Internet and the TCP/IP protocol suite. But there was no formalized standards development mechanism back then.
Consensus-Based Standardization Using Requests For Comments (RFCs)

Standardization was achieved largely through building consensus through discussion about new technologies and protocols. If someone had a proposal for a new protocol or technology, or an idea for a change to an existing one, that person would create a memorandum describing it and circulate it to others. Since the goal was to solicit comments on the proposal, these memos were called requests for comments (RFCs). Not all RFCs described formalized standards: many were just descriptive documents, clarifications or miscellaneous information.
Note: The documents defining early standards were originally called Internet Engineering Notes (IENs) before they were called RFCs.



Today, of course, the Internet is enormous and there is an official structure of Internet standards organizations that is responsible for creating new Internet and TCP/IP standards. Due to the many thousands of people who play an active role in developing Internet technologies, having an informal system where anyone could just write an RFC would lead to chaos. Thus, Internet and TCP/IP standards are still called RFCs, but the process of creating one is much more formal and organized today.

The Internet Engineering Task Force (IETF) is the standards body that is most directly responsible for the creation of Internet standards. The IETF’s working groups, overseen by the Internet Engineering Steering Group (IESG) and the Internet Architecture Board (IAB), develop new protocols and technologies continuously, and these developments are formalized in RFCs.

The publishing of RFCs is handled by the office of the RFC Editor. From nearly thirty years, starting in 1969, “the” RFC Editor was Internet pioneer Jon Postel. After his death in 1998, the function was assigned to the Networking Division of the USC Information Sciences Institute (ISI), where Jon Postel was once director. The function of the RFC Editor is to publish and archive RFCs, and maintain an online repository of these documents so that they can accessed and used by the Internet community.

The open and free access to RFCs has greatly contributed to the Internet’s success. If you consider that even today there are standards bodies that charge thousands of dollars for access to a single standard, the ability to log on and immediately retrieve any of the thousands of RFCs is noteworthy.
On The Web: An up-to-date list of RFCs with hyperlinks to each document (except for some of the early ones) can be found at the office of the RFC Editor: http://www.rfc-editor.org/rfc-index.html

Internet Standards and the Request For Comment (RFC) Process
(Page 2 of 3)

RFC Categories

As before, not all RFCs are official Internet standards, which is important to remember. Each RFC has a category or status associated with it that indicates its disposition:
Proposed Standard / Draft Standard / Standard: These are documents that describe technologies said to be on the “standards track”. That means they are either already formally approved as standards, or they are likely to become standards in the future. In many cases, the document is just given as “Standards Track” as opposed to one of those three precise labels. See below for more information.

Best Current Practice: A document providing guideline information or recommendations from the IETF that is not a formal standard.

Informational: A document that provides general information or commentary.

Experimental: A proposal for an experimental standard that is not on the standards track. In some cases, protocols or proposed changes to existing protocols that are not accepted as formal standards are changed to “experimental” status.

Historic: Former standards that have been obsoleted.

Internet Standards and the Request For Comment (RFC) Process
(Page 3 of 3)

The Internet Standardization Process

The full process for creating and publishing an Internet standard is lengthy and beyond the scope of this Guide. It is interesting, however, so I will outline it here briefly. The full details of the standards process can be found in… where else, an Internet RFC: 2026. J

Before a proposal will be considered for the Internet standardization process, it must be published as an Internet Draft (ID). The IETF publishes a set of guidelines that specify how IDs must be created and submitted. Most IDs are written by members of working groups within the IETF who are involved in specific projects. However, since the standards process is open, any member of the public can make an independent submission for review as a standard, by creating an ID for consideration by the IETF and IESG. Internet Drafts are usually revised many times based on feedback from others in various working groups within the IETF.

If an Internet Draft has been reviewed and is considered valuable, well-understood and stable (meaning that it is not being rapidly updated with new revisions) it may become a candidate for standardization. The IESG can place the Draft on the Internet standards track by changing its status to Proposed Standard. Documents of this status are considered mostly complete, but may still be revised based on further review, testing and experimentation with the technology.

Once the specification is sufficiently mature and widely accepted, it may be elevated from Proposed Standard to Draft Standard. A key requirement for such advancement is that the technology must be demonstrated to be functional on at least two independent and interoperable implementations. This proves that the standard is sufficiently clear and complete that at least two different groups have been able to implement it compatibly.

A document only reaches Draft Standard when the IETF community believes it is technically mature and the specification is complete. Changes are usually made to Draft Standards only to correct problems encountered in testing, or resolve new issues that arise.

The final “station” on the Internet standards track is Internet Standard. This designation is only applied to very mature specifications that are popular and that have been widely implemented. A document that reaches this status often describes a technology that is or will become universally-implemented, and is assigned an “STD” (“standard”) number.

The RFC development process can take months or even years, depending on how complex the technology is, how many changes are required to the documents, and whether or not the proposal is considered important or interesting. Many RFCs never make it officially to Internet Standard status; Draft Standard status is generally considered sufficiently stable that the technology is often just implemented by companies when that level is reached. Some RFCs never even make it to Draft Standard status and the technologies they describe are still used in products.

Once an RFC is published, it cannot be changed. This is a specific policy decision intended to avoid the confusion that would otherwise result due to there being multiple versions of the same RFC. The RFC publication process incorporates a number of steps at which RFC authors can revise their documents, and check for editorial omissions and errors.

This need for a new document whenever a change is made is also why proposals are typically published with a category designation of “Standards Track” rather than “Proposed Standard”, “Draft Standard” and “Internet Standard”. This eliminates the need to publish a new RFC that has no changes other than a different category designation, if a proposal advances down the standards track without requiring any real changes.
Key Concept: Internet standards are described in a series of documents called requests for comments (RFCs). The RFC process describes how an Internet standard is usually created. An idea for a new technology or enhancement begins with the creation of an Internet Draft (ID). After review and feedback, if the proposal has support, it may be placed on the Internet standards track, and its status changed to Proposed Standard. As the fledgling standard matures, its status may advance to Draft Standard and eventually, Internet Standard. However, many RFCs are implemented in products without reaching Internet Standard status. There are also other RFCs that define experimental technologies or provide information without describing official Internet standards.




Backgrounder: Data Representation and the Mathematics of Computing

Humans use decimal (base 10) numbers to represent numeric information, and various alphabets and symbol systems to represent other types of information. In contrast, computers understand only one basic type of information: ones and zeroes, which themselves are representative of either an “on” or “off” electrical or light state within the hardware of the device. These ones and zeroes are combined in various ways to form all the more common data elements we are used to finding in computers: regular numbers, characters and files. However, all of these are really only abstractions; the ones and zeroes are always “underneath” whatever logical structures used within the computer.

This same basic foundation of ones and zeroes applies to networking as well. Even though most of the information in a network is exchanged in a logical fashion between higher-layer protocols, underlying all networking structures are the ones and zeroes sent over the network medium. Understanding how data is represented and manipulated in computer systems is important background information that will help you comprehend many of the different technologies. Not only are computer data representation and mathematics important for explaining how low-level physical layer modulation and encoding techniques work, they come into play even for higher-level concepts, such as how IP addresses are set up and used on the Internet.

In this section I provide some general background information on how numerical data is represented, stored and manipulated within computers and networking hardware. I begin with a description of binary numbers and the different terms used to refer to collections of binary information of various sizes. I describe the different types of numbering systems used in computer systems, such as octal, decimal and hexadecimal, and how data can be converted between these different types. I explain how arithmetic is performed on binary and hexadecimal numbers. I then discuss boolean logic and how logical functions are used to manipulate binary data.

These explanations then form the basis for a discussion of how logical functions are used for setting, clearing, inverting and masking bits. These operations are employed extensively in certain networking technologies and protocols. Masking operations are especially often used in IP addressing, so even though this section seems rather low-level it is quite relevant to the world of TCP/IP.

Needless to say, many of you reading this Guide know most or all of the information in this section, so feel free to skip (or just skim) those topics that you already know. However, I wanted to provide this background detail for the sake of those new to computing, or those needing a refresher. The pages are somewhat long and I try to assume little in the descriptions, so you may want to breeze through the parts that seem familiar. However, even those of you who know what a bit and byte are and the difference between binary and decimal numbers may find the discussion of bit masking worth perusing.
Note: There is only so much detail on the rudimentary basics of computing that I can cover in a Guide of this sort without getting too far afield. If the contents of this section are not sufficient to get you up to speed, I would recommend consulting a more comprehensive reference specific to computing theory and mathematics.

Binary Information and Representation: Bits, Bytes, Nibbles, Octets and Characters
(Page 1 of 3)

The essence of computing is information. Computer hardware and software products are designed to allow the input, storage, transfer and expression of various types of information. A primary way in which types of information are differentiated is based on whether they are analog or digital. In highly simplified terms, analog information is continuous, while digital is discrete. The distinction between them can be seen by considering, for example, a light switch and a dimmer. A light switch allows a light to be turned on or off only—no “in-between” states. That's digital information—on or off. In contrast, a dimmer allows you to fine-tune the light output from fully on to fully off, with an infinite number of intermediate states in between: this is analog.
Binary Information

Modern digital computers store all of their information in digital form, because of how they work at a fundamental level. Much the way a light bulb has only an “on” or “off” value, so too do the components that store and manipulate information within computers. Millions of transistors comprise computer processors and other circuits, and are, in highly-simplified form, digital switches. Thus, all information in computers is manipulated as collections of information pieces that can be only “on” or “off”, like a switch.

Since there are only two possible states, “on” or “off”, this is called binary information (the prefix “bi” meaning “two”, of course.) There are several advantages to using binary representation for information. It is a simple way to represent many types of information, such as the state of a light bulb, or whether a file has been successfully copied, or whether a temperature should be expressed in Celsius or Fahrenheit. It is also possible to collect multiple binary values together to represent more complex information.

Perhaps most importantly, binary information is unambiguous. “On” is “on” and “off” is “off”, and this is important as it allows devices to detect clearly the value of a particular piece of information. Computers like black and white; they are not particularly good at dealing with “shades of gray”. This becomes especially important in the field of networking when transmission of data can cause signals to become polluted by noise.

The “on” or “off” condition of a binary value can be expressed in a number of different ways. In logical expressions, we may consider the value to be “true” or “false”. For representing mathematical values, the most common representation is “one” (“on”) or “zero” (“off”).

Binary Information Representation and Groups

The fundamental building block of computer information is the bit (a contraction of binary digit). Every bit can be either 0 or 1. Making the value of a bit 1 is commonly called setting the bit; changing it to 0 is resetting or clearing it.

Of course, bits represent only a very small amount of information: a single fact or value. We must make collections of these bits so we can use them to store large amounts of information and more complex data types. The most common grouping is to take eight bits and reference them as a single unit. A collection of eight bits is technically called an octet, but is more commonly called a byte. (More on that in a moment.)

“Byte” is a jocular play on the term “bit”. Over time, other sizes of “bit collections” have also been defined. Some geek comedian decided that if eight bits made a “byte”, then four bits must be a “nybble” (or “nibble”). Hilarious. J Larger collections have also been defined and given various names. Table 1 summarizes the most common representations of groups of bits, and the terms used for them; their relative sizes are also shown graphically in Figure 8.


Table 1: Binary Information Group Representations and Terms

Number of Bits Common Representation Terms
1 Bit / Digit / Flag
4 Nybble / Nibble
8 Byte / Octet / Character
16 Double Byte / Word
32 Double Word / Long Word
64 Very Long Word

A few of these terms are worth special mention. Bit and byte we have already discussed, of course. A bit is also sometimes called a flag; this term is most often heard when a bit is used by itself to represent a particular information state. For example, a computer might use a “changed flag” to represent whether a particular file has been modified; this is an analogy to a flag either being raised or lowered to indicate a condition. These “flags” are often seen in networking message formats.

The term character is also used to express a set of eight bits. This use comes from the fact that computers often store alphanumeric characters, such as letters and numbers, one to a byte. The 16-bit word is fairly often used, but not nearly as much as “byte”. The larger collections of bits, such as double word and so on, are not often encountered in every-day parlance; they are used to represent chunks of data in technical fields such as hardware design or programming.




Figure 8: Binary Information Representations and Terms

This diagram shows the relative sizes of the most commonly-sized “collections” of binary information.


You may also have noticed the number of bits used for each of these terms is a power of two. This is of course not a coincidence. As we will see in the subsequent topics in this section, this occurs because when bits come in sets that are a power of two in size, they are easier to represent and manipulate in a convenient manner. The number of bits in the term can itself be easily expressed using binary numbers. This will make more sense after you read the topic that follows on decimal binary, octal and hexadecimal numbers.
Key Concept: Computers store all information in binary digital form, which means all data—be it text, photographs, audio or whatever else—is comprised only of collections of ones and zeroes. The fundamental building block of digital information is the binary digit or bit, which represents a single zero or one state. To represent larger amounts of information, bits can be collected into groups of four, eight, sixteen, 32 or 64, called nybbles, bytes, words, long words and very long words respectively.
Binary Information and Representation: Bits, Bytes, Nibbles, Octets and Characters
(Page 3 of 3)

Byte versus Octet

There has been some disagreement, and even controversy, surrounding the use of the words byte and octet. The former term has traditionally been the most popular in common parlance for a set of eight bits, especially in North America. However, it is technically not the correct term.

A byte is, formally, the smallest unit of data that can be read from or written to at one time in a computer system. In almost all cases today, that is indeed eight bits, but there are have been some systems where a byte was not eight bits. Some older 36-bit computers used 9-bit bytes, and there were also systems that had byte sizes of 6 or 7 bits, or even variable-sized bytes. For this reason, many people, especially techie professionals, prefer the term octet, which clearly and unambiguously implies “eight”. This term is much more common outside North America.

This matter of octets and bytes is another of the little “tempests in tea pots” that computer people seem to love so much. The bottom line in modern computer systems, however, is that an octet is a byte and a byte in an octet, and the terms can be used interchangeably without too much danger. You will more often see octets used in technical standards. In this Guide, I use the term bytes for a simple reason: it is the term that most people are familiar with, including myself (though bear in mind that I live in North America; if I were European I might have rather different views on this!)
Key Concept: Formally, an octet is the correct term for exactly eight bits, while a byte is the smallest number of bits that can be accessed in a computer system, which may or may not equal eight. In practice, modern computers use 8-bit bytes, and the terms are used interchangeably (with byte being more common in North America, and octet often being preferred in Europe).

Decimal, Binary, Octal and Hexadecimal Numbers
(Page 1 of 3)

The numbers we are used to using in every-day life are called decimal numbers, where the word “decimal” refers to the number ten. The reason for this is rather obvious: every digit can take on one of ten values: 0 to 9. Arithmetic performed on decimal numbers is also called base 10 mathematics, because of this orientation around the number 10. (Why is the number 10 the foundation of our normal mathematical system? Hold both hands up and count…)

Computer systems, however, don’t have fingers or toes; they deal only with binary numbers. Each bit can represent not a value from 0 to 9, but from, well, 0 to 1. A single “0 or 1” value is sufficient for encoding a single fact, such as whether your car currently is using summer tires or snow tires. It's not nearly enough to hold more complex information, such as your bank account balance, or a text document, or a picture of the Yellowstone canyon.
Binary Numbers and their Decimal Equivalents

For this reason, larger collections of bits have been defined by computer scientists, such as bytes (octets), words, and so forth. When individual bits are collected into sets in this way, they can be used together to represent larger integers, which are called binary numbers. Since there are only two possible values for each digit, binary numbers are also called base 2 numbers.

A lot of people are intimidated by binary numbers, because at first they seem quite confusing. The key to understanding them is realizing that they are exactly the same as decimal numbers, except that instead of each digit having a value in the range of 0 to 9, each has a value in the range of 0 to 1. For example, when you count in decimal, you go up to 9 in the one’s place, and then you need a second place for “tens”. If you go above 99, you need a third place for “hundreds”. Each additional place added on the left is a higher power of ten. Binary is the same, except the limit for each place is 1 instead of 9. In binary, you go up to 1 in the one’s place, and then need a second place for “twos”. If you go above 3, you need a third place for “fours”. Each added place is a subsequent higher power of two, rather than ten.

Thus, where counting in decimal goes 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 and so on, counting in binary goes 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101. The concept is identical—you just need a lot more digits for binary numbers because there are so many fewer values allowed for each digit. For example, the number “13” in decimal is the same as “1101” in binary. How? Well, in decimal, we have a 3 in the one’s place, plus a “1” in the “tens” place, which has a value of 10. This is 3+10=13. In binary, we have a “1” in the “ones” place, plus a “1” in the “fours” place, plus a “1” in the “eights” place, which is 1+4+8 or 13.

To take a more complex example, 211 in decimal is 11010011 in binary. Table 2 shows how the two are equivalent, by adding the values for each binary digit place where there is a 1. Read it from left to right, going top to bottom. Starting in the left-most column, we see that the example number has a 1 in the "128s" place. So we start with a sum of 128. In the next column there is a 1 in the "64s" place, so we add 64 for a running sum of 192. But in the "32s" place the binary digit value is 0, so we don't add 32 to the sum. We continue down to the "ones" place to get the decimal equivalent of the binary number.

Table 2: Binary and Decimal Number Equivalents

Binary Number 1 1 0 1 0 0 1 1
Power of Two 27 26 25 24 23 22 21 20
Value of Digit Place 128 64 32 16 8 4 2 1
Value For This Number 128 64 0 16 0 0 2 1
Running Sum (from left to right) 128 128+64 = 192 192 192+16 = 208 208 208 208+2 = 210 210+1 = 211

As you can see from this, a binary number with N digits can hold up to 2N values. So, a byte, with eight bits, can hold 28 or 256 different values, which are numbered from 0 to 255. A 16-bit word can hold 216 or 65,536 values.

Decimal, Binary, Octal and Hexadecimal Numbers
(Page 2 of 3)

Making Binary Numbers Easier to Use By Grouping Bits

One problem with binary numbers is that while computers love them, they are unintuitive for humans, who are used to decimal numbers. One reason for this is that they quickly get very, very long and cumbersome to deal with. For example, 1,000,000 in decimal is 11110100001001000000 in binary. To make binary numbers easier to work with, two different shorthand notations have been defined. In both of these, instead of working with each bit individually, they are collected into subgroups, each of which is assigned a single digit in an alternative numbering system.
Octal Numbers

Let's take the binary number 11110100, which is 244 in decimal. Now, instead of looking at each bit individually, let's chop them into groups of three, starting from the right. So, 11110100 becomes (11)(110)(100). Now, each of those groups has three bits, so each can have 23 values: from 0 to 7. In this case, (11)(110)(100) = (3)(6)(4), or 364 in the octal or base-8 numbering system (see Figure 9). Just as with binary, octal numbers are the same as decimal numbers, except they are base 8 instead of base 10. So, 364 in octal is just 3 times 64 plus 6 times 8 plus 4, or 244. The advantage that octal has over binary is obvious: it's a lot less cumbersome to deal with larger numbers. 1,000,000 in decimal is 3641100 in octal.






Figure 9: Binary, Octal and Hexadecimal Number Representations

A binary number can be represented in octal form by grouping its bits into sets of three, or in hexadecimal by using sets of four bits. These base-8 and base-16 numbers have the advantage of being far shorter than binary numbers, and hence much easier to work with.
Decimal, Binary, Octal and Hexadecimal Numbers
(Page 3 of 3)

Hexadecimal Numbers

Octal numbers were at one time quite commonly used, but are much less popular today. The problem with octal is that it divides bits into groups of three, but sets of binary numbers typically use a number of bits that is a multiple of four. An alternative method was defined that does the same thing but using groups of four. Since there are four bits in each group, each can have one of sixteen values, and this is called the hexadecimal or base 16 numbering system. It is also commonly called just hex for short.
Note: As an interesting “sidebar”, the term hexadecimal was not the first one used for base-16 numbers in computing. Originally, these were called sexadecimal numbers. This is actually the correct term, since Latin prefixes (sexa-) are normally used for numbers, not Greek ones (hexa-). However, in the early 1950s, IBM decided that the word “sexadecimal” was just a little too “provocative” for their tastes, so they changed it to hexadecimal. IBM being IBM—especially back then—meant everyone else followed suit. As I understand it, neither term is etymologically perfect, but well, this note is long enough already. J



Now, let's go back to the example just above, 11110100 in binary, 244 in decimal. We divide this into groups of four, to get (1111)(0100). The binary value “1111” is 15, and “0100” is four, so we have (15)(4). Hmm, now we have a bit of a problem, don't we? We need to be able to represent “15”, but we only have 10 numerals. To get around this, in hexadecimal numbers the values 10, 11, 12, 13, 14, or 15 are represented by the letters “A”, “B”, “C”, “D”, “E” and “F” respectively. So, 11110100 in binary is (15)(4), or “F4” in hexadecimal (also shown in Figure 9).

Hexadecimal numbers are in some ways even less intuitive than binary ones. After all, it takes some practice to get used to thinking of letters as numbers. However, they are very useful due to the way they compactly represent binary information. Where 1,000,000 in decimal is 11110100001001000000 in binary, it is only “F4240” in hexadecimal—even shorter than the decimal number, since 16 is larger than 10. Also, a single byte has eight bits, so it can be represented using only two hexadecimal digits. Due to this convenience factor, hex numbers are widely used in the field of computing, including networking. For example, you will often see values expressed in hexadecimal for items such as MAC addresses, and for representing different types of information in frame or packet formats.
Key Concept: Regular numbers are called decimal numbers because they are built upon our base-10 system of mathematics. Computers use collections of one-or-zero bits called binary numbers, which can be treated just like regular numbers except that each digit can only be 0 or 1 instead of 0 to 9. Bits in a binary number can be expressed as octal numbers by grouping three bits into an octal digit that ranges from 0 to 7, or taking sets of four bits to create a single hexadecimal digit from 0 to 15. To represent the values 10 through 15 in hexadecimal using a single character, the letters A through F are used.



If you see a number that has a letter from “A” to “F” in it, you know it is a hex number, but not all hex numbers have those digits. Hex numbers are usually displayed in a special notation, to avoid confusing them with decimal numbers. That notation is either a prefix of “0x” or a suffix of “h” (sometimes both). Thus, the number “54” is just “54”, but “0x54” is “54” in hexadecimal, which is 5 times 16 plus 4, or “84” in decimal. Be sure to watch for these representations.

Decimal, Binary, Octal and Hexadecimal Number Conversion
(Page 1 of 4)

Humans are accustomed to dealing with decimal numbers, while computers use binary digits. Octal and hexadecimal numbers are “short forms” for binary numbers, where each hexadecimal digit takes the place of either three or four binary digits. Since people and computers speak different “number languages”, it is often necessary to convert numbers from one of these systems to the other. If you spend any amount of time dealing with computers or networks, you will find yourself needing to do this on occasion, so it's worth taking a quick look at how it is done.

First of all, let me say this: the easiest way to convert between decimal, binary, octal and hexadecimal numbers is to use a scientific calculator. This is what most people do, and I highly recommend it. However, there are cases where you may need to be able to do this by hand—we don't all always have a calculator on us. Also, understanding the manual conversion process will help you comprehend more intuitively how binary, octal and hexadecimal numbers work. So, let's take a look.
Note: If you don't have a scientific calculator, there is a reasonable facsimile built into most versions of Windows: the Calculator program, which can usually be found in your Accessories folder. Open it, go to the View menu, and change the setting from “Standard” to “Scientific”. Click the button next to a numbering system. Then enter a number, and if you click a button next to a different numbering type, the number will be converted for you. Easy. (I would bet Apple and UNIX machines have similar tools, I just have more experience with Windows.)

Decimal, Binary, Octal and Hexadecimal Number Conversion
(Page 2 of 4)

Conversions Between Binary, Octal and Hexadecimal

Okay, let's start with the easy stuff first. Conversion between binary, octal and hexadecimal is very simple, as you may have noticed in the preceding topic, where I introduced them. Each octal digit is three binary digits, and each hexadecimal digit is four binary digits. Thus, to convert from binary to octal or hex, just group the digits, and convert each group into an octal or hex digit. To go the other way, convert each hex or octal digit into a set of bits. Table 3 shows the conversions from each of the octal and hexadecimal single-digit values to binary (with decimal digits thrown in for convenience):


Table 3: Binary, Octal and Hexadecimal Digit Conversion

Binary Digits Octal Digit Hexadecimal Digit Decimal Digit
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 8 8
1001 9 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Let’s look at some specific examples using larger numbers:
Binary to Octal: Suppose we start with the binary number 110101001010. We divide this into groups of three: (110)(101)(001)(010). Each of these, we convert to a number from 0 to 7 (which is easy to do in your head if you practice a bit). The result is (6)(5)(1)(2) or 6512 octal.

Hexadecimal to Binary: Let's start with the hex number 0x4D1B. We convert each digit as given in the table above. So, we have 0x4D1B = (0100)(1101)(0001)(1011) or 0100110100011011.

Decimal, Binary, Octal and Hexadecimal Number Conversion
(Page 3 of 4)

Conversions From Binary, Octal and Hexadecimal to Decimal

Conversions to and from decimal are more complicated than conversions between binary, octal and hexadecimal, because 2, 8 and 16 are powers of two but ten is not. Of the two directions, conversions to decimal are easier: you take the value of each binary, octal or hexadecimal digit, convert it to decimal, and then multiply it by the power of 2, 8 or 16 represented by the digit's place in the number. Then you add all the numbers together. I did this in the previous topic with the example of the decimal number 211 (see Table 2).

Let’s take an example of going from hexadecimal to decimal. Table 4 shows the hexadecimal number 0x830C converted to decimal (octal uses a similar process). Read the table from left to right, top to bottom; each digit’s value is multiplied by the appropriate power of 16 and added together, yielding the result 33,548 decimal.


Table 4: Hexadecimal to Decimal Number Conversion

Hexadecimal Number 8 3 0 C
Decimal Value of Digit 8 3 0 12
Power of 16 163 162 161 160
Value of Digit Place 4096 256 16 1
Value For This Number 4096*8 = 32768 3*256 = 768 0*16 = 0 12*1 = 12
Running Sum (from left to right) 32768 32768+768 = 33536 33536 33536+12 = 33548

Decimal, Binary, Octal and Hexadecimal Number Conversion
(Page 4 of 4)

Conversions From Decimal to Binary, Octal and Hexadecimal

Now let’s consider conversions from decimal. These require that you perform the opposite of the calculation above: you divide and subtract instead of multiplying and adding.
Conversion From Decimal to Binary

The easiest of the three conversions from decimal is to binary—since the maximum value of each digit is one, there is no dividing, just subtraction. All you do is the following:
Find the largest power of two that is smaller than the number.

Put a “1” in the digit place for that power of two and subtract that power of two from the decimal number.

Repeat steps #1 and #2 until you are reduced to zero.

This is easier to explain using an example and a table, of course. Let's convert the decimal number 689, as shown in Table 5. Again, read the table starting from the upper left, and going down and then across. We start by noticing that 1024 is not less than or equal to 689, so the “1024s” place gets a 0. In the next place, 512 is less than 689, so we make the “512s” place a 1 and subtract 512 from 689 to leave 177. The calculation continues, eventually showing shows that 689 decimal is 1010110001 binary.


Table 5: Decimal to Binary Number Conversion

Decimal Value Before Considering This Digit Place 689 689 177 177 49 49 17 1 1 1 1
Power of Two 210 29 28 27 26 25 24 23 22 21 20
Value of Digit Place 1024 512 256 128 64 32 16 8 4 2 1
Value of Digit Place Equal To or Less Than Current Decimal Number? No Yes No Yes No Yes Yes No No No Yes
Subtraction Step skip 689- 512 = 177 skip 177- 128 = 49 skip 49-32 = 17 17-16 = 1 skip skip skip 1-1 = 0
Binary Digits 0 1 0 1 0 1 1 0 0 0 1

Conversion From Decimal to Octal or Hexadecimal

The process for octal and hexadecimal is almost the same, except you must divide by powers of two instead of just subtracting:
Start with the highest power of 16 (hexadecimal) or 8 (octal) that is smaller than the number.

Divide the decimal number by that power, keeping only the integer part of the result.

Keep the remainder after the division is done, for the next step.

Repeat steps #1 to #3 until you get to the “ones” place, and then put there whatever is left after the higher digits were done.

Table 6 shows the same example as Table 5 but goes from decimal to hexadecimal instead of decimal to binary: 689 in decimal is 0x2B1 hexadecimal.


Table 6: Decimal to Hexadecimal Number Conversion

Decimal Value Before Considering This Digit Place 689 689 177 1
Power of 16 163 162 161 160
Value of Digit Place 4096 256 16 1
Value of Digit Place Smaller Than Current Decimal Number? No Yes No n/a
Division Step skip 689/256 = 2.691;
use “2” for this digit. 177/16 = 11.0625;
use “B” for this digit. n/a
Remainder After Division skip 177 1 n/a
Hexadecimal Digits 0 2 B 1