# Internet Protocol Suite

By [就可以](https://paragraph.com/@0x075b719dc2c77b228a2a85d4a0d28d47dc813421) · 2022-09-29

---

`规定网络地址的协议，叫做IP协议。它所定义的地址，就被称为IP地址。`

`广泛采用的是IP协议第四版，简称IPv4。这个版本规定，网络地址由32个二进制位组成。`

`习惯上，我们用分成四段的十进制数表示IP地址，从0.0.0.0一直到255.255.255.255。`

`互联网上的每一台计算机，都会分配到一个IP地址。这个地址分成两个部分，前一部分代表网络，后一部分代表主机。比如，IP地址172.16.254.1，这是一个32位的地址，假定它的网络部分是前24位（172.16.254），那么主机部分就是后8位（最后的那个1）。处于同一个子网络的电脑，它们IP地址的网络部分必定是相同的，也就是说172.16.254.2应该与172.16.254.1处在同一个子网络。`

`但是，问题在于单单从IP地址，我们无法判断网络部分。还是以172.16.254.1为例，它的网络部分，到底是前24位，还是前16位，甚至前28位，从IP地址上是看不出来的。`

`那么，怎样才能从IP地址，判断两台计算机是否属于同一个子网络呢？这就要用到另一个参数“子网掩码”（subnet mask）。`

`所谓“子网掩码”，就是表示子网络特征的一个参数。它在形式上等同于IP地址，也是一个32位二进制数字，它的网络部分全部为1，主机部分全部为0。比如，IP地址172.16.254.1，如果已知网络部分是前24位，主机部分是后8位，那么子网络掩码就是11111111.11111111.11111111.00000000，写成十进制就是255.255.255.0。`

`知道“子网掩码”，我们就能判断，任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算（两个数位都为1，运算结果为1，否则为0），然后比较结果是否相同，如果是的话，就表明它们在同一个子网络中，否则就不是。`

`比如，已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0，请问它们是否在同一个子网络？两者与子网掩码分别进行AND运算，结果都是172.16.254.0，因此它们在同一个子网络。`

`总结一下，IP协议的作用主要有两个，一个是为每一台计算机分配IP地址，另一个是确定哪些地址在同一个子网络`

---

*Originally published on [就可以](https://paragraph.com/@0x075b719dc2c77b228a2a85d4a0d28d47dc813421/internet-protocol-suite)*
