Monday, 6 November 2017

Hardware Addressing


Hardware Addressing



A hardware address is used to uniquely identify a host within a local network. Hardware addressing is a function of the Data-Link layer of the OSI model (Layer-2).

Ethernet utilizes the 48-bit MAC address as its hardware address. The MAC address is often hardcoded on physical network interfaces, though some interfaces support changing the MAC address using special utilities. In virtualization environments, dynamically assigning MAC addresses is very common.

A MAC address is most often represented in hexadecimal, using one of two accepted formats:

06:23:AD:F2:32:17

0643.ADF2.3217

The first six hexadecimal digits of a MAC address identify the manufacturer of the physical network interface. This is referred to as the OUI (Organizational Unique Identifier). The last six digits uniquely identify the host itself, and are referred to as the host ID.


The MAC address has one shortcoming – it contains no hierarchy. MAC addresses provide no mechanism to create boundaries between networks.
There is no method to distinguish one network from another.
This lack of hierarchy poses significant difficulties to network scalability. If only Layer-2 hardware addressing existed, all hosts would technically exist on the same network. Internetworks like the Internet could not exist, as it would be impossible to separate my network from your network.

Imagine if the entire Internet existed purely as a single Layer-2 switched network. Switches, as a rule, will forward a broadcast out every port. With billions of hosts on the Internet, the resulting broadcast storms would be devastating. The Internet would simply collapse.

The scalability limitations of Layer-2 hardware addresses are mitigated
using logical addresses, covered in great detail in this guide.


Logical Addressing

Logical addressing is a function of the Network layer of the OSI Model (Layer-3), and provides a hierarchical structure to separate networks. Logical addresses are never hardcoded on physical network interfaces, and can be dynamically assigned and changed freely. A logical address contains two components:
Network ID – identifies which network a host belongs to.
Host ID – uniquely identifies the host on that network.
Examples of logical addressing protocols include Internetwork Packet Exchange (IPX) and Internet Protocol (IP). IPX was predominantly used on Novell networks, but is now almost entirely deprecated. IP is the most widely-used logical address, and is the backbone protocol of the Internet.

Internet Protocol (IP)

In the 1970’s, the Department of Defense developed the Transmission Control Protocol (TCP), to provide both Network and Transport layer functions. When this proved to be an inflexible solution, those functions were separated - with the Internet Protocol (IP) providing Network layer services, and TCP providing Transport layer services. Together, TCP and IP provide the core functionality for the TCP/IP or Internet protocol suite.
IP provides two fundamental Network layer services:
Logical addressing – provides a unique address that identifies both the host, and the network that host exists on.
Routing – determines the best path to a particular destination network, and then routes data accordingly. IP was originally defined in RFC 760, and has been revised several times. IP Version 4 (IPv4) was the first version to experience widespread deployment, and is defined in RFC 791. IPv4 will be the focus of this guide. IPv4 employs a 32-bit address, which limits the number of possible addresses to 4,294,967,296. IPv4 will eventually be replaced by IP Version 6(IPv6), due to a shortage of available IPv4 addresses

IPv4 Addressing:--

A core function of IP is to provide logical addressing for hosts. An IP address provides a hierarchical structure to both uniquely identify a host, and what network that host exists on. An IP address is most often represented in decimal, in the following format:
158.80.164.3 An IP address is comprised of four octets, separated by periods: 

Each octet is an 8-bit number, resulting in a 32-bit IP address. The smallest possible value of an octet is 0, or 00000000 in binary. The largest possible value of an octet is 255, or 11111111 in binary.
The above IP address represented in binary would look as follows:

Decimal to Binary Conversion

The simplest method of converting between decimal and binary is to remember the following table:
128 64 32 16 8 4 2 1
To convert  decimal number of 172 to binary, start with the leftmost column. Since 172 is greater than 128, that binary bit will be set to 1. Next, add the value of the next column (128 + 64 = 192). Since 172 is less than 192, that binary bit will be set to 0.  Again, add the value of the next column (128 + 32 = 160). Since 172 is greater than 160, that binary bit will be set to 1. Continue this process until the columns with binary bits set to 1 add up to 192:--


Now what is  Subnet Mask:--

Part of an IP address identifies the network. The other part of the address identifies the host. A subnet mask is required to provide this distinction:
158.80.164.3 255.255.0.0
The above IP address has a subnet mask of 255.255.0.0. The subnet mask follows two rules:
If a binary bit is set to a 1 (or on) in a subnet mask, the corresponding bit in the address identifies the network.
If a binary bit is set to a 0 (or off) in a subnet mask, the corresponding bit in the address identifies the host.
Looking at the above address and subnet mask in binary:

The first 16 bits of the subnet mask are set to 1. Thus, the first 16 bits of the address (158.80) identify the network. The last 16 bits of the subnet mask are set to 0. Thus, the last 16 bits of the address (164.3) identify the unique host on that network.
The network portion of the subnet mask must be contiguous. For example, a subnet mask of 255.0.0.255 is not valid. Hosts on the same logical network will have identical network addresses, and can communicate freely. For example, the following two hosts are on the same network:
Host A: 158.80.164.100 255.255.0.0
Host B: 158.80.164.101 255.255.0.0
Both share the same network address (158.80), which is determined by the 255.255.0.0 subnet mask. Hosts that are on different networks cannot communicate without an intermediating device. For example:
Host A: 158.80.164.100 255.255.0.0
Host B: 158.85.164.101 255.255.0.0
The subnet mask has remained the same, but the network addresses are now different (158.80 and 158.85 respectively). Thus, the two hosts are not on the same network, and cannot communicate without a router between them.
Routing is the process of forwarding packets from one network to another. Consider the following, trickier example: 
Host A: 158.80.1.1 255.248.0.0
Host B: 158.79.1.1 255.248.0.0
The specified subnet mask is now 255.248.0.0, which doesn’t fall cleanly on an octet boundary. To determine if these hosts are on separate networks, first convert everything to binary: 
Host A Address:  10011110.01010000.00000001.00000001
Host B Address:  10011110.01001111.00000001.00000001
Subnet Mask:       11111111.11111000.00000000.00000000
Remember, the 1 (or on) bits in the subnet mask identify the network portion of the address. In this example, the first 13 bits (the 8 bits of the first octet, and the first 5 bits of the second octet) identify the network. Looking at only the first 13 bits of each address:
Host A Address: 10011110.01010
Host B Address: 10011110.01001
Clearly, the network addresses are not identical. Thus, these two hosts are on separate networks, and require a router to communicate.