eolas/neuron/d0ed26d0-cdc8-4643-8c09-445408195f9b/.neuron/output/IP_addresses.html
2024-10-20 19:00:04 +01:00

69 lines
No EOL
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type" /><meta content="width=device-width, initial-scale=1" name="viewport" /><!--replace-start-0--><!--replace-start-5--><!--replace-start-8--><title>IP addresses - My Zettelkasten</title><!--replace-end-8--><!--replace-end-5--><!--replace-end-0--><link href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.8.7/dist/semantic.min.css" rel="stylesheet" /><link href="https://fonts.googleapis.com/css?family=Merriweather|Libre+Franklin|Roboto+Mono&amp;display=swap" rel="stylesheet" /><!--replace-start-1--><!--replace-start-4--><!--replace-start-7--><link href="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" rel="icon" /><meta content="IP addresses come in two formats and bit-lengths depending on which version of the Internet Protocol is being used." name="description" /><meta content="IP addresses" property="og:title" /><meta content="My Zettelkasten" property="og:site_name" /><meta content="article" property="og:type" /><meta content="IP_addresses" property="neuron:zettel-id" /><meta content="IP_addresses" property="neuron:zettel-slug" /><meta content="internet" property="neuron:zettel-tag" /><meta content="networks" property="neuron:zettel-tag" /><script type="application/ld+json">[]</script><style type="text/css">body{background-color:#eeeeee !important;font-family:"Libre Franklin", serif !important}body .ui.container{font-family:"Libre Franklin", serif !important}body h1, h2, h3, h4, h5, h6, .ui.header, .headerFont{font-family:"Merriweather", sans-serif !important}body code, pre, tt, .monoFont{font-family:"Roboto Mono","SFMono-Regular","Menlo","Monaco","Consolas","Liberation Mono","Courier New", monospace !important}body div.z-index p.info{color:#808080}body div.z-index ul{list-style-type:square;padding-left:1.5em}body div.z-index .uplinks{margin-left:0.29999em}body .zettel-content h1#title-h1{background-color:rgba(33,133,208,0.1)}body nav.bottomPane{background-color:rgba(33,133,208,2.0e-2)}body div#footnotes{border-top-color:#2185d0}body p{line-height:150%}body img{max-width:100%}body .deemphasized{font-size:0.94999em}body .deemphasized:hover{opacity:1}body .deemphasized:not(:hover){opacity:0.69999}body .deemphasized:not(:hover) a{color:#808080 !important}body div.container.universe{padding-top:1em}body div.zettel-view ul{padding-left:1.5em;list-style-type:square}body div.zettel-view .pandoc .highlight{background-color:#ffff00}body div.zettel-view .pandoc .ui.disabled.fitted.checkbox{margin-right:0.29999em;vertical-align:middle}body div.zettel-view .zettel-content .metadata{margin-top:1em}body div.zettel-view .zettel-content .metadata div.date{text-align:center;color:#808080}body div.zettel-view .zettel-content h1{padding-top:0.2em;padding-bottom:0.2em;text-align:center}body div.zettel-view .zettel-content h2{border-bottom:solid 1px #4682b4;margin-bottom:0.5em}body div.zettel-view .zettel-content h3{margin:0px 0px 0.4em 0px}body div.zettel-view .zettel-content h4{opacity:0.8}body div.zettel-view .zettel-content div#footnotes{margin-top:4em;border-top-style:groove;border-top-width:2px;font-size:0.9em}body div.zettel-view .zettel-content div#footnotes ol > li > p:only-of-type{display:inline;margin-right:0.5em}body div.zettel-view .zettel-content aside.footnote-inline{width:30%;padding-left:15px;margin-left:15px;float:right;background-color:#d3d3d3}body div.zettel-view .zettel-content .overflows{overflow:auto}body div.zettel-view .zettel-content code{margin:auto auto auto auto;font-size:100%}body div.zettel-view .zettel-content p code, li code, ol code{padding:0.2em 0.2em 0.2em 0.2em;background-color:#f5f2f0}body div.zettel-view .zettel-content pre{overflow:auto}body div.zettel-view .zettel-content dl dt{font-weight:bold}body div.zettel-view .zettel-content blockquote{background-color:#f9f9f9;border-left:solid 10px #cccccc;margin:1.5em 0px 1.5em 0px;padding:0.5em 10px 0.5em 10px}body div.zettel-view .zettel-content.raw{background-color:#dddddd}body .ui.label.zettel-tag{color:#000000}body .ui.label.zettel-tag a{color:#000000}body nav.bottomPane ul.backlinks > li{padding-bottom:0.4em;list-style-type:disc}body nav.bottomPane ul.context-list > li{list-style-type:lower-roman}body .footer-version img{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%)}body .footer-version img:hover{-webkit-filter:grayscale(0%);-moz-filter:grayscale(0%);-ms-filter:grayscale(0%);-o-filter:grayscale(0%);filter:grayscale(0%)}body .footer-version, .footer-version a, .footer-version a:visited{color:#808080}body .footer-version a{font-weight:bold}body .footer-version{margin-top:1em !important;font-size:0.69999em}@media only screen and (max-width: 768px){body div#zettel-container{margin-left:0.4em !important;margin-right:0.4em !important}}body span.zettel-link-container span.zettel-link a{color:#2185d0;font-weight:bold;text-decoration:none}body span.zettel-link-container span.zettel-link a:hover{background-color:rgba(33,133,208,0.1)}body span.zettel-link-container span.extra{color:auto}body span.zettel-link-container.errors{border:solid 1px #ff0000}body span.zettel-link-container.errors span.zettel-link a:hover{text-decoration:none !important;cursor:not-allowed}body [data-tooltip]:after{font-size:0.69999em}body div.tag-tree div.node{font-weight:bold}body div.tag-tree div.node a.inactive{color:#555555}body .tree.flipped{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}body .tree{overflow:auto}body .tree ul.root{padding-top:0px;margin-top:0px}body .tree ul{position:relative;padding:1em 0px 0px 0px;white-space:nowrap;margin:0px auto 0px auto;text-align:center}body .tree ul::after{content:"";display:table;clear:both}body .tree ul:last-child{padding-bottom:0.1em}body .tree li{display:inline-block;vertical-align:top;text-align:center;list-style-type:none;position:relative;padding:1em 0.5em 0em 0.5em}body .tree li::before{content:"";position:absolute;top:0px;right:50%;border-top:solid 2px #cccccc;width:50%;height:1.19999em}body .tree li::after{content:"";position:absolute;top:0px;right:50%;border-top:solid 2px #cccccc;width:50%;height:1.19999em}body .tree li::after{right:auto;left:50%;border-left:solid 2px #cccccc}body .tree li:only-child{padding-top:0em}body .tree li:only-child::after{display:none}body .tree li:only-child::before{display:none}body .tree li:first-child::before{border-style:none;border-width:0px}body .tree li:first-child::after{border-radius:5px 0px 0px 0px}body .tree li:last-child::after{border-style:none;border-width:0px}body .tree li:last-child::before{border-right:solid 2px #cccccc;border-radius:0px 5px 0px 0px}body .tree ul ul::before{content:"";position:absolute;top:0px;left:50%;border-left:solid 2px #cccccc;width:0px;height:1.19999em}body .tree li div.forest-link{border:solid 2px #cccccc;padding:0.2em 0.29999em 0.2em 0.29999em;text-decoration:none;display:inline-block;border-radius:5px 5px 5px 5px;color:#333333;position:relative;top:2px}body .tree.flipped li div.forest-link{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}</style><script
async=""
id="MathJax-script"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"
></script>
<link
href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css"
rel="stylesheet"
/><link rel="preconnect" href="https://fonts.googleapis.com" /><link
rel="preconnect"
href="https://fonts.gstatic.com"
crossorigin
/><link
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Serif:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"
rel="stylesheet"
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/autoloader/prism-autoloader.min.js"></script>
<style>
body .ui.container,
body ul {
font-family: "IBM Plex Sans" !important;
}
body blockquote {
border-left-width: 3px !important;
font-style: italic;
}
.headerFont,
.ui.header,
body h1,
h2,
h3,
h4,
h5,
h6 {
font-family: "IBM Plex Sans Condensed" !important;
}
body p {
line-height: 1.4;
}
.monoFont,
body code,
pre,
tt {
font-family: "IBM Plex Mono" !important;
font-size: 12px !important;
line-height: 1.4 !important;
}
</style>
<!--replace-end-7--><!--replace-end-4--><!--replace-end-1--></head><body><div class="ui fluid container universe"><!--replace-start-2--><!--replace-start-3--><!--replace-start-6--><div class="ui text container" id="zettel-container" style="position: relative"><div class="zettel-view"><article class="ui raised attached segment zettel-content"><div class="pandoc"><h1 id="title-h1">IP addresses</h1><h2 id="ipv4-vs-ipv6">IPv4 vs IPv6</h2><p>IP addresses come in two formats and bit-lengths depending on which version of the <span class="zettel-link-container cf"><span class="zettel-link" title="Zettel: Internet Layer of the Internet Protocol Suite"><a href="Internet_Layer_of_Internet_Protocol.html">Internet Protocol</a></span></span> is being used.</p><ul><li>IPv4 addresses are 32-bits in length</li><li>IPv6 addresses are 128-bits in length</li></ul><p>The larger the bit-length, the more unique addresses that can be generated. Thus IPv6 can create more addresses that IPv4.</p><p>This entry focuses on IPv4 addresses.</p><h2 id="anatomy-of-an-ipv4-address">Anatomy of an IPv4 address</h2><p>Each of the 32 bits are divided into four groups which are each 8 bits in length. Each group therefore comprises an octet and is separated by dots.</p><p>The decimal number system, rather than binary is used to represent the values. This means each binary octet is three decimal digits in length.</p><p>The 32 bits comprise two major groupings</p><ul><li>the <strong>network prefix</strong></li><li>the <strong>host</strong></li></ul><p><img alt="Different sections of IP address" src="/static/ip-address-anatomy.png" /></p><p>Devices connected to the same network share the same network prefix. They are said to be on the same <strong>subnet</strong>. However each device will have a unique value for the host octet.</p><p>(This account is somewhat idealised. The length of the prefix does not always align with the octet boundary. For instance, the prefix could be 25 bits in length, rather than 24. In this case it would “steal” one bit from the host section making it 23 bits in length.)</p><p>Any changes to the length of the network prefix change the number of hosts available on the subnet. If the network prefix is longer, the number of unique hosts is reduced. If the network prefix is shorted, the number of unique hosts is increased.</p><h2 id="identifying-the-network-and-host-groupings">Identifying the network and host groupings</h2><p>Given that the network prefix and host identifier do not always stick to set boundaries, we require a way of distinguishing the two values. There are two dominant methods.</p><h3 id="cidr-notation">CIDR notation</h3><p>This stands for <em>Classless Inter-Domain Routing</em>. An example:</p><blockquote><p>192.168.1.23/24</p></blockquote><p>The value after the forward slash is the number of bits that specify the network address. In the example, it is the standard 24-bits. Thus 192.168.1.23 stands for the network.</p><h3 id="subnet-masking">Subnet masking</h3><p>The subnet mask is another number <em>in addition to</em> the network address. It is a kind of superimposed map on top of the address.</p><p>Here is an example of a subnet mask:</p><blockquote><p>11111111.11111111.11111111.00000000</p></blockquote><p>The denary form would be as follows (as 255 is the maximal decimal number that can be represented with a single 8-bit number and 0 is the smallest):</p><blockquote><p>255.255.255.0</p></blockquote><p>In the binary form, the 1 values represent the bits which designate the network address and the 0 values represent the bits that designate the host.</p><p>In the example above this corresponds to the idealised 32-bit:8-bit ratio of CIDR /24.</p><p>There is a clever consequence of the subnet mask: if you apply a bitwise AND operator against the IP address and mask (both in their binary form) you can determine whether two addresses are on the same network.</p><p>To compare the IP address 192.168.1.23 against 192.168.1.100 to demonstrate:</p><pre><code class="language-none">192.168.1.23:
IP: 11000000.10101000.00000001.00010111
Mask: 11111111.11111111.11111111.00000000
Result: 11000000.10101000.00000001.00000000
___________________________________
192.168.1.100:
IP: 11000000.10101000.00000001.00010111
Mask: 11111111.11111111.11111111.00000000
Result: 11000000.10101000.00000001.00000000</code></pre><p>After applying the bitwise AND logic we see that the result is identical for both IPs indicating they are on the same network (share the same network prefix), whilst the host value is “masked”.</p><p>Here is a scenario where the subnet mask indicates that two IPs are not on the shared network:</p><pre><code class="language-none">192.168.1.23:
IP: 11000000.10101000.00000001.00010111
Mask: 11111111.11111111.11111111.00000000
Result: 11000000.10101000.00000001.00000000
___________________________________
192.168.2.1
IP: 11000000.10101000.00000010.00000001
Mask: 11111111.11111111.11111111.00000000
Result: 11000000.10101000.00000010.00000000
</code></pre><p>255.255.255.0 is not the only possible subnet mask. There are masks corresponding to ratios other than CIDR /24. For example:</p><ul><li>255.0.0.0 (/8)</li><li>255.255.0.0 (/8)</li><li>255.255.255.192 (/26)</li><li>255.255.255.240 (/28)</li></ul><p>As noted previously, the different ratios will obviously affect the number of unique hosts available on the subnet.</p><h2 id="determining-the-range-of-hosts-practical-example">Determining the range of hosts: practical example</h2><p>Lets say we have the following IP address expressed in CIDR: 192.168.0.133/27. In binary this would be:</p><pre><code class="language-none">110000000.10101000.00000000.100--00101</code></pre><p>The <code>--</code> indicates the demarcation point between the network prefix and the bits designated for the host. 32 - 27 leaves us 5 bits for our range of hosts. This gives us 2^5 = 32 unique host values.</p><p>In fact it will actually be 30 values since the first value (<code>00000</code>) will be used to identify the network itself and the last value (<code>11111</code>) will be the broadcast address - the address used when a message needs to be sent to all hosts on the network.</p><p>An actual host address in this range is included in the example: <code>00101</code>.</p></div></article><nav class="ui attached segment deemphasized bottomPane" id="neuron-tags-pane"><div><span class="ui basic label zettel-tag" title="Tag">internet</span><span class="ui basic label zettel-tag" title="Tag">networks</span></div></nav><nav class="ui bottom attached icon compact inverted menu blue" id="neuron-nav-bar"><!--replace-start-9--><!--replace-end-9--><a class="right item" href="impulse.html" title="Open Impulse"><i class="wave square icon"></i></a></nav></div></div><!--replace-end-6--><!--replace-end-3--><!--replace-end-2--><div class="ui center aligned container footer-version"><div class="ui tiny image"><a href="https://neuron.zettel.page"><img alt="logo" src="https://raw.githubusercontent.com/srid/neuron/master/assets/neuron.svg" title="Generated by Neuron 1.9.35.3" /></a></div></div></div></body></html>