As early as 1985, engineers knew there would be a shortage of IPv4 addresses before the end of the century. Over the next decade, engineers found a very clever solution to the problem, however it created a complex address. This course will go into extreme detail to describe the structure of an IPv4 address and its subnet mask counterpart. To do this, understanding binary numbers becomes very important. We will describe how binary numbers work, how to convert from decimal to binary and back again, as well as see how hexadecimal easily integrates into binary. This may sound daunting, however, we keep the content simple and easy to follow, so it is not overwhelming. After understanding binary and the structure of an IPv4 address, we will examine how to break a single IPv4 network into multiple IPv4 networks, understand the definition of a network address, broadcast address, and a host address. We will the examine how to calculate networks more efficiently using Variable Length Subnet Masking(VLSM), and to wrap up IPv4 addressing, we will take a simple IPv4 network, break it into 2 networks, and then observe its behavior across a router. Once we wrap up IPv4, we move into IPv6, and explain the nuances of this new and obscure looking address. We keep it as simple as possible, so you understand the structure and operation of the IP address, without getting bogged down in nuanced details, infrequently used in IPv6. We will wrap up IPv6 by learning how IPv6 networks are distributed to ISPs, customers, and finally customer sites.