At the heart of every networked, connected system, whether hardware or software, there needs to be a solid, stable network foundation, which is backed up by a properly working addressing scheme. Only then can you build reliable core and advanced services on top of it. Windows Server 2016 is no exception and many core roles and features are directly dependable on the fundamental networking services. These roles and capabilities are instrumental in network presence and server functionality, such as DHCP, DNS, Active Directory Domain Services (AD DS), Network Policy Server (NPS), or Internet Information Server (IIS).
Configuring addressing
Configuring IPv4 addresses and options
Microsoft Windows uses a collection of protocols to communicate over the network, called Transmission Control Protocol/Internet Protocol (TCP/IP). TCP/IP is a suite of protocols developed in 1969 by the U.S. Department of Defense in order to connect different branches of the U.S. military and enable them to communicate. At first, in the early 1960s, different U.S. military departments chose different vendors as computer system suppliers. For instance, the navy chose Unisys, the army chose Digital Equipment Corporation (DEC), and the air force chose International Business Machines (IBM). After a while, the departments needed to communicate between themselves and to exchange data, but it was difficult since each department had a different computer system. The Department of Defense started a project to connect all the branches and enable them to communicate. The TCP/IP suite of protocols was developed, and the fourth iteration of the IP protocol, IPv4, became the standard to connect the world's computers and devices.
TCP provides the reliable delivery of messages and defines delivery mechanisms for data transfers. In comparison, IP manages network routing from the sender to the receiver. The TCP/IP suite of protocols works by mapping to a layered protocol architecture stack, or model, and it is aligned with the Open System Interconnect (OSI) architectural model. The OSI uses a seven-layer architecture model, while TCP/IP uses a four-layer architectural model. Additionally, each TCP/IP layer corresponds to one or more OSI layers.
The four layers that the TCP/IP model uses are network interface, internet, transport, and application. The seven OSI layers are physical, data-link, network, transport, session, presentation, and application.
The following diagram shows the TCP/IP protocol architecture layers along with the OSI model layers:
Each layer provides specific functionality within its architectural layer model, such as routing, addressing, packaging, or session communication. There are four TCP/IP Architecture Layers, as shown in the diagram: Network Interface Layer, Internet Layer, Host-to-Host or Transport Layer, and Application Layer.
The network interface layer or network access layer addresses physical transmissions, by putting packets of data onto the medium and retrieving data packets off the medium.
The internet layer deals with routing, addressing, and packaging tasks; the common internet protocols are IP, Address Resolution Protocol (ARP), Internet Group Management Protocol (IGMP), and the Internet Control Message Protocol (ICMP).
The transport layer protocols are TCP and the User Datagram Protocol (UDP). TCP is a reliable, connection-oriented protocol, which is responsible for packet delivery, while UDP is a connectionless and unreliable protocol, which is used to transfer smaller-sized packets.
The application layer is the protocol that directly communicates and exchanges data with applications; the best-known representatives are Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), and Simple Mail Transfer Protocol (SMTP).
TCP also uses ports, which are specific endpoints for data packet delivery. Let's suppose that a user is browsing the internet using a web browser, sending and receiving emails through their favorite email client, and uploading a file using an FTP client. If there were no ports, how would the computer know what data packet belongs to each application? The answer is by using standardized and predefined port numbers. This is so that multiple applications can send and receive information to and from the network at the same time.
The following screenshot lists some well-known ports:
IP address
In order to communicate, TCP/IP ensures that each host on the network has its own logical IP address. There is also a physical, or a Media Access Control (MAC), address that represents physical communication hardware, which is used to send and receive data packets. The host IP address is a 32-bit binary number in a binary notation, known also as dotted decimal notation. Such a number, comprised of 32 "zeros" or "ones", is hard to read and, therefore, is segmented into four parts, called octets. Such a notation is also called the w.x.y.z notation:
Binary numbers use the number two (2) as the base for calculations and use only two characters to form a number—that is, zero (0) and one (1). The low-order bit or the rightmost bit has a decimal value of one (1) and the leftmost or high-order bit has the decimal value of 128. If the value of the bit in an octet is set to zero (0), then the value of the bit is multiplied by zero, and the result is, naturally, zero. If the value of the bit in an octet is set to one (1), then the value of the bit is multiplied by one, and the result of the multiplication is the actual value of the bit. The sum of all multiplied values is the decimal value of the octet.
For example, the 10101000 binary number is calculated as follows:
1×128 + 0×64 + 1×32 + 0×16 + 1×8 + 0×4 + 0×2 + 0×1 =
= 128 + 0 + 32 + 0 + 8 + 0 + 0 + 0 = 168
The following diagram demonstrates the relationship and conversion from a binary to a decimal notation:
The following example shows an IPv4 number in binary format. As you can see, reading, interpreting, and performing calculations with numbers displayed in this format is very hard:
32-bit number: 11000000101010000000000100001100
To enhance readability, a number is separated into octets, however, even so, calculating values is not easy:
11000000 10101000 00000001 00001100
Each binary octet is then converted to a decimal number:
Each octet or decimal is separated by a period or a dot, and is displayed in dotted decimal notation for better readability: 192.168.1.12. In this way, the hardly-readable binary format that machines use is presented in a form that we can understand better.
IPv4 has three types of addresses, as follows:
- Broadcast: This type of address is used in "one-to-everyone" communications and is assigned to all network interfaces on a subnet. Packets sent from an interface to a broadcast address receive all the interfaces on that network.
- Multicast: This type of address is used in "one-to-many" types of communication, where a sender transmits a packet that receives more than one network interface.
- Unicast: This type of address is used in "one-to-one" communications, where one network interface sends the data packet and only one network interface receives the packet.
Unicast addresses are also defined by a network ID and a host ID. The network ID, network address, or a subnet is a fixed portion of an IPv4 address that groups a set of network interfaces located on the same network segment. Routers separate network segments that must be unique on a TCP/IP network. A host ID or a host address represents a variable part of an IPv4 address and is unique to the network subnet.
Internet address classes
Internet address classes are defined to segment the available address space into networks of different sizes. Classes A, B, and C are reserved for unicast communication, D is reserved for multicast addresses, and the E class is reserved for experimental uses. The addressing scheme where classes are used is called classful.
Furthermore, the term subnet mask describes which bits of an address define the network ID, and which bits represent the host ID.
The following table presents the default subnet masks and address classes:
The class A address range
The class A network has the high-order bit set to zero. It includes address ranges from 0.0.0.0 to 128.0.0.0. It has an 8-bit prefix for network IDs (/8) and a subnet mask that is equivalent to 255.0.0.0. The 0.0.0.0 network is reserved for special purposes and 127.0.0.0 is reserved as a loopback address range, which leaves 126 out of 128 possible network IDs for use. The reservation of a whole 127.0.0.0 network ID for a loopback address is an obvious example of extremely bad address assignment planning. This bad planning originated in the early days of the internet; back then, we could not imagine how big and important the internet would become and how the explosion of interconnected devices would lead to the depletion of the IPv4 address space. The class A has 128 network IDs and 16,777,216 possible host addresses.
The following screenshot shows the structure of a class A address:
The class B address range
The class B network has two high-order bits set to 10, includes ranges from 128.0.0.0 to 192.0.0.0, has a 16-bit prefix for network IDs (/16), and has a subnet mask that is equivalent to 255.255.0.0. Class B has a maximum of 16,384 network IDs and 65,536 possible host addresses.
The following screenshot shows the structure of a class B address:
The class C address range
The class C network has 2 high-order bits set to 110, includes ranges from 192.0.0.0 to 224.0.0.0, has a 24-bit prefix for network IDs (/24), and has a subnet mask that is equivalent to 255.255.255.0. Class C has the biggest number of possible network IDs or 2,097,152 network addresses, with each network capable of addressing 256 hosts.
The following screenshot shows the structure of a class C address:
The class D address range
Class D is exclusively reserved for IPv4 multicast addresses. Here, the high-order bits are set to 1,110 and network addresses range from 224.0.0.0 to 240.0.0.0.
The class E address range
Class E is reserved for experimental use, where the high-order bits are set to 1,111 and the class uses the network ID of 240.0.0.0.