从零开始认识IP协议
我们以一个例子来讲解为什么要进行网段划分:
在我们的学校里,学生的学号都是精心设计过的:16位二进制数表示,前6位表示学院号,后10位表示学生号。假设有这样几个学院:
000001
000101
001001
001011
001111
每个学院都有各自的学生会,学生会知道其他学院的各自编号。对于自己学院的学生,可以通过将前6位去除,只看后10位来找到对应学生。学校又有一个总学生会,今天总学生会将24级新生组成了一个大的聊天群!
这一天,小明捡到了同一个钱包,里面有一个学生证,已经磨损的只能看清学号0010110101010011
了。这时他不知道这个学号到底是那个学院的,所以就把学生证交给了学生会,学生会知道学院掩码是1111110000000000
,所以就知道学院号是001011
,通过他掌握的信息,他知道这个是翻译学院的,所以就通过校学生会将钱包转交给了翻译学院学生会,翻译学院学生会看到了这个学生证的学号,立刻就找到了这名同学!
这个场景中:
网段划分通过这样精心的设计,合理的划分,可以高效支持未来报文路径查找,大大提高了查找目标主机的效率!!!
在一个子网中有这样几个特殊的IP地址:
目前互联网中主要是使用IPv4版本的IP,IP 地址的IPv4版本是一个 4 字节 32 位的正整数。那么一共只有
个 IP地址,大概是 43 亿左右。而 TCP/IP 协议规定, 每个主机都需要有一个 IP 地址。这意味着, 一共只有 43 亿台主机能接入网络么?
实际上, 由于一些特殊的 IP 地址的存在,数量远不足 43 亿,另外 IP 地址并非是按照主机台数来配置的,而是每一个网卡都需要配置一个或多个 IP 地址。
CIDR 在一定程度上缓解了 IP 地址不够用的问题,提高了利用率,减少了浪费,但是 IP地址的绝对上限并没有增加,对于现在人手一台的手机,每个家庭的路由器(路由器需要两张网卡),各种服务器…仍然不是很够用。这时候有三种方式来解决:
在使用Linux进行网络编程时,我们经常会遇见两个名词:私有IP和公网IP。这两个IP到底有什么区别?
首先,如果一个学校组建一个局域网,IP地址只能用于局域网的通信,而不是直接连接到Internet上。所以理论上,在这个局域网中,使用任意的IP地址都可以,只有在内部不重复就可以!但是 RFC 1918 规定了用于组建局域网的私有 IP 地址
包含在这个范围中的,都成为私有 IP,其余的则称为全局 IP(或公网 IP)!在局域网中只能使用上面三种私有IP,这个数量一定是足够使用的!
注意,没有人可以直接连接到公网中,上网的前提是必须接入到一个内网中!能连接到公网的只有运营商!
来看一张图:
家庭中在建设时都会装有光纤,可以通过运营商安装路由器。安装的路由器带有一个 LAN 口 IP(子网IP),这样就构建起了一个子网;同时路由器还带有另外一个WAN口IP,这个IP是在运营商的大路由器构建的子网中的!
192.168.*
,毕竟一个家庭应该不会有超过66536个设备吧!最终进入公网的路由器是出入口路由器!也有WAN 口和LAN 口 IP。这时就连接到了公网中!可以与其他的路由器进行通信了!
这时,我们就要有一个共识:平时上网是在私网中进行的!所以我们上网缴纳的宽带费,流量费才都给了运营商!因为我们想要进行上网,一定是会经过运营商的路由器!
所以这就是网络最终的模型吗?我们模拟一下数据通信的过程验证一下:
那么,这是请求报文到达了,抖音服务器要进行应答返回时就傻眼了!这个目标IP的网络号192.168.*
怎么又重复的啊!为什么呢?
其实这里已经触犯了一个原则:私网IP是不能出现在公网中的!!!
私网IP不具有唯一性!不能作为目的IP和源IP进行通信!!!所以这样的结构还不是网络通信的模型!!!那么到底是怎样进行的呢?
通信过程中,主机操作系统生成的报文,会先交到路由器中,这时路由器会做一件事情:将报文中的srcIP,替换为自己的WAN口IP!进行一次源IP地址替换!每次路由器都会进行这样一个地址替换。然后转发过程中会根据目的IP找到对应的服务器!这样抖音服务器就能通过IP的逐层替换发回来应答了!
这是就不在出现私网IP了!!!公网中的转发暂时不谈。这种源地址替换技术就是NAT技术。这个转换只在内网的时候进行转换!
接下来我们谈一谈如何理解公网!
全世界的组织,国家,学校…会来划分IP地址,这个地址不是严格按照国家进行划分的!下面以国家为单位进行讲解!
我们可以将每个国家看着是一个局域网:
1.xxx / 8
2.xxx / 8
3.xxx / 8
国家中会有一个大路由器进行通信服务 ,每个国家也是一个子网,网络号是IP地址的前8位。也有自己的子网掩码,可以知道子节点的网络号 !同样可以通过报文的目的IP找到对应的服务器!
在往下一层,每个省份都有自己的路由器,是一个子网!在中国路由器下,这些省份的网络号是IP地址的前13位 在往下一层,每个市也可以有自己的路由器,构成一个子网,这些市的网络号是IP地址的前16位!
按照这样划分下去,划分到我们家的时候IP地址早就不够用了!那么怎么办呢? 不要忘了我们还有使用私有IP和公网IP的组合技!
其中的公网就是这个城市到国家的这个部分,上层的公网可以直接访问,下层使用私有IP与公网IP进行处理,就可以完美的应对网络通信IP划分的问题!上面只是举例来讲解网络IP划分的策略,与公网划分的实际情况与上图可能并不符合,但主要的策略是一致的!
OK!现在我们就彻底理解了网络中IP到底是怎么划分的了: