IP协议-NAT机制(理解网络结构的关键要点)

前言

我们现在使用得最多的IP协议版本是IPv4,IPv4是4个字节,32位,也就是说我们的IP地址最多就只有2^32(42亿)个,在日常生活中,我们需要联网的设备都需要有IP地址才能进行通讯,很明显现在42亿个IP地址已经完全不足以满足我们现在的需求了(就目前世界上需要IP地址的设备肯定超百亿)

此时聪明的程序员就想到了NAT机制来解决这个问题

NAT机制(网络地址转换)

对于IP地址不够用这个问题想到了一个办法:

我们把IP地址分为两大类

1.内网IP

不同局域网中的设备,.内网IP可以重复,相同局域网中的设备,.内网IP不可以重复

一般10.*,172.16.*至172.31.*,192.168.*都是内网IP

2.外网IP

外网IP不能重复

3.通讯存在的问题

a.如果是局域网内部的设备进行通信,肯定是顺利的(同一个局域网下的内网IP不同)

b.不同局域网中的设备进行通讯,是会存在一些问题的,由于是不同的局域网,所以内网IP有可能相同,因此不能直接进行通信,要想进行通信的话就需要一个带有外网IP的设备进行中转

c.局域网内部的设备访问外网IP的设备,我们平时使用的电脑,手机都是在局域网内部使用,它们会有内网IP,但服务器就有外网IP,两者进行通信就涉及到了NAT的工作过程

4.例子

假设我的电脑现在需要向csdn发送一个请求,就相当于是内网IP的设备要和外网IP的设备进行通信

以下的过程是简写

首先,假设我的电脑的上一层局域网就是电信路由器,电信路由器拥有外网IP,我的电脑发送一条IP协议的数据报给电信路由器,IP协议的数据报中就包括了源IP地址和目的IP地址,电信路由器接收到我的电脑发送的数据报后,就会触发NAT机制,电信路由器会使用自己的外网IP地址替换掉当前数据报中的源IP地址(相当于电信路由器用自己的外网IP地址替你发送数据报给csdn的服务器),此时数据报中的源IP地址和目的IP地址都是外网IP地址,就可以建立通信。

csdn的服务器接受到这个数据报后并不知道这个数据源自于我的电脑(不知道我的电脑的内网IP),它只知道csdn的外网IP,电信路由器肯定不止帮助我这一台设备,而是会帮助很多的设备转发数据报,所以NAT机制下,一个外网IP所代表的就不只是一个设备了,而是很多的设备

csdn服务器处理好请求以后会返回一个IP数据报给我的电脑,这个数据报就会先到达电信路由器,电信路由器要帮助很多的设备转发数据报,那么它如何知道当前这个数据报要发送给我的电脑呢?

当电信路由器替换数据报中的源IP地址为自己的外网IP时,会维护一个映射表,形如:替换前:我的内网IP 替换后:电信路由器的外网IP ,当电信路由器需要转发数据报给下层的设备时,就会对照映射表,将目的IP替换为我的内网IP,这样就确保了数据报发送到我的电脑上

NAT机制的重要性

当前的互联网世界就是NAT构建起来的

NAT的缺点很明显:

1.效率不高

2.非常繁琐

3.不方便直接访问局域网中的设备

.......

NAT机制虽然提高了IP地址的利用率(多个设备使用同一个外网IP),但并没有从根本上解决IP地址不够用这个问题

但NAT机制有一个最大的优点:NAT是一个纯软件实现的方案。

为什么纯软件实现的方案这个优点这么大呢,可以看下面多IPv6的介绍就知道了

IPv6

IPv6从根本上解决了IP地址不够用这个问题,IPv6是16个字节,128位,也就是说能表示2^128(42亿*42亿*42亿*42亿)个IP地址,这个IP地址是怎么用也用不完的

但是为什么现在的互联网世界是NAT构建起来的而不是IPv6呢?

因为IPv6和IPv4不兼容了,而市面上大多数的设备都采用的是IPv4,如果要使用IPv6的话就代表要更新设备,但大多数的人是不会去花钱更新设备的,所以IPv6就普及不起来,而NAT机制是纯软件实现的方案就不需要多余的成本。

相关推荐
PcVue China2 小时前
PcVue + SQL Grid : 释放数据的无限潜力
大数据·服务器·数据库·sql·科技·安全·oracle
长安11082 小时前
前后端、网关、协议方面补充
网络
舞动CPU4 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
钰@5 小时前
小程序开发者工具的network选项卡中有某域名的接口请求,但是在charles中抓不到该接口
运维·服务器·小程序
wanhengwangluo5 小时前
云服务器和物理服务器的区别有哪些?
运维·服务器
hzyyyyyyyu5 小时前
隧道技术-tcp封装icmp出网
网络·网络协议·tcp/ip
南猿北者6 小时前
docker Network(网络)
网络·docker·容器
Hacker_Nightrain7 小时前
网络安全CTF比赛规则
网络·安全·web安全
扣得君7 小时前
C++20 Coroutine Echo Server
运维·服务器·c++20
网络安全指导员8 小时前
恶意PDF文档分析记录
网络·安全·web安全·pdf