上届世界杯_世界杯韩国 - cngkpt.com

IP协议(IP地址的数量限制 | NAT机制)

IP地址的数量限制

我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右.

而TCP/IP协议规定, 每个主机都需要有一个IP地址.

实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是

每一个网卡都需要配置一个或多个IP地址。

初衷:是让每个网络上的设备都有一个唯一的IP~

但是现状就是IPv4地址是非常紧缺的,不够用

虽然CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用。

解决办法:

动态分配IP地址

如果某个设备不上网,就不分配,只给上网的分配~~,只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;

举个例子

假如说我在写博客,此时就给我分配一个IP地址,但是我写完博客关机后,咔,我这个IP就被空闲出来了,就可以分配给其他的设备了。

但是治标不治本,所以我们有引入了NAT机制

NAT机制

把IP地址分成“外网IP”’和“内网IP”,用一个外网IP代替N个内网IP

举个例子:

就好比你买了一个快递,地址写的XXX省XXX县XXX区XXX大学,不用写几号楼,几零几。但是一个大学里有好多人,那怎么确定是谁的包裹,所以我们就可以通过收件人和联系电话再来做进一步的区分。

这些内网IP如何区分,就可以通过端口号来区分:

假设现在有设备A和设备B要同时访问服务器的8080端口:

1):设备A =》路由器 =》 服务器

设备A发给路由器的IP数据报:

源IP 192.168.0.2 源端口:1000

目的IP:1.2.3.4 目的端口:8080

路由器正常是要把这个数据报原封不动的转发,但是此时触发了NAT机制,于是就产生了“移花接木”

路由器把IP数据报中的源IP进行了替换,替换成路由器的外网IP

路由器发给服务器的消息:

源IP:1.2.3.5 源端口:1000

目的IP:1.2.3.4 目的端口:8080

2):设备B =》 路由器 =》 服务器

设备B先给路由器发IP数据报:

源IP:192.168.0.3 源端口:1000

目的IP:1.2.3.4 目的端口:8080

此时路由器发给服务器是同样触发NAT机制,再次“进行替换”

路由器发给服务器的消息:

源IP:1.2.3.5 端口:1001(此时刚才的源IP:1.2.3.5 源端口:1000 已经被用过了,如果使用同样的,那么路由器无法区分出这个请求到底是哪个主机的)需要使用不同的端口

目的IP:1.2.3.4 目的端口:8080

服务器看见两个请求,但是源端口不一样,所以服务器在返回数据时就可以根据源端口,来分别返回不同的数据。

NAT路由器将源地址从10.0.0.10替换成全局的IP 202.244.174.37;NAT路由器收到外部的数据时, 又会把目标IP从202.244.174.37替换回10.0.0.10;在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的

IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?

这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系

这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断

开连接后, 就会删除这个表项。

总结:

所以NAT机制(IP不够,端口来凑),这样就可以保证一个外网IP就可以代表一组局域网里的设备,于是就让IP地址的数量大大降低了,不用一个IP来代表一个主机,而是一个IP代表一批主机。

NAT技术的缺陷:

由于NAT依赖这个转换表, 所以有诸多限制:

无法从NAT外部向内部服务器建立连接;装换表的生成和销毁都需要额外开销;通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开

IPv6

IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;

拓展:

私有IP地址和公网IP地址:

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意

的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址

10.*,前8位是网络号,共16,777,216个地址172.16.到172.31.,前12位是网络号,共1,048,576个地址192.168.*,前16位是网络号,共65,536个地址

包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);