Linux 网络协议栈开发基础篇(六)—— NAT原理介绍

介绍NAT之前,我们需要先理解下公有地址及私有地址的概念:

        IP地址分为两部分,网络号和主机号,这种分法应用在私有和公有IP地址上。一个局域网中,为了该局域网的安全,我们应用了私有IP地址,为了和Internet中的其他主机进行通信,我们用的私有IP地址必须为: A级:10.0.0.0 - 10.255.255.255 B级:172.16.0.0 - 172.31.255.255  C级:192.168.0.0 - 192.168.255.255 中的一种,A类私有地址只有网络号为10的网段,B类私有地址占用了B类网络号中172.16——172.31,C类私有地址占用了C类网络号中192.168.0——192.168.255.

  具体用哪种要根据该局域网的主机有多少来选择(这样便于后期的维护),这些私有IP地址是不用申请的,但是我们必须申请公有IP地址(一个局域网可以有一个公有IP地址,也可以有多个公有IP地址),公有IP地址在全球是唯一的,私有的不是,我们和Internet上的其他主机通信时,用的都是公有IP地址,但是,在局域网中的机子只配置了私有的IP地址,没关系,我们在网关那有一个应用程序,可以把私有地址转换为公有IP地址,该机制成为NAT(网络地址转换Network Address Translation)。

在局域网中通常使用的IP地址如192.168.0.1等是属于私有地址的。那么为什么要在局域网中使用私有地址呢?使用私有地址有什么好处呢?下面我们来看一下为什么在局域网中要使用私有地址。

  我们现在使用的IP地址是IPv4,在现有的协议下,其只能提供大约40亿个IP地址,可是为什么IPv4协议只有40亿个IP地址呢?目前使用的IPv4是用4个字节(byte)来表示IP地址,1字节是8个位(bit),所以IPv4表示的IP地址是4X8=32位。如某人的IP地址是:221.137.148.209,实际上它表示:11011101.10001001.10010100.11010001数字中间的点并仅仅是为了看起来方便而已,可以认为我现在的IP地址是11011101100010011001010011010001。理论上,32位的二进数的个数是: 2^32 = 4294967296也就是:四十二亿九千四百九十六万七千二百九十六,IPv4能表示的地址总数也就这么多了。所以现在有了IPv6,IPv6的地址是128位的,所以个数为:2^128=340282366920938463463374607431768211456,肯定是够地球人用的啦!而本来只有40亿的IP地址都被大on

所以总结下,私有地址就是为解决在IPv4下IP地址不够用而产生的。

  比如在一个网络中的主机为400台,那么分配一个C类地址不够用,分配一个B类地址又显得太浪费,在这种情况下,我们可以使用私有IP地址来解决这个问题。这个网络中的所有计算机共享一个公网地址。可以有效的缓解IP地址资源紧缺的问题。

  私有IP地址,就是内网用的。10.0.0.0-10.255.255.255和192.168.0.0-192.168.255.255要连接互联网必须把私有IP转换成公网IP,使用NAT转换,至于为什么会需要私有IP,这是因为IP地址有限,不能每个用户都分配一个IP,所以只能几个人甚至几十个人共用一个IP,很多内网都是一两个公网IP的。

全部IP地址的范围

IP地址,一共分成了5类,范围分别如下:

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux内核的网络协议是指在操作系统内核中实现的一系列网络协议和功能。它负责处理网络数据包的收发、路由选择、协议解析等一系列操作,以实现网络通信和数据传输。 Linux内核的网络协议包括以下几个层次: 1. 网络接口层(Network Interface Layer):负责处理物理网络接口的驱动程序和硬件设备的通信。它提供了对底层网络设备的抽象,如以太网、Wi-Fi、蓝牙等。 2. 网络层(Network Layer):负责处理IP协议相关的操作,包括IP地址分配、路由选择和IP数据包的转发等。其中主要的协议有IPv4和IPv6。 3. 传输层(Transport Layer):负责处理端到端的数据传输,主要通过TCP(传输控制协议)和UDP(用户数据报协议)来实现。TCP提供可靠的、面向连接的数据传输,而UDP提供无连接的、不可靠的数据传输。 4. 应用层(Application Layer):负责处理特定应用程序的数据传输和协议,如HTTP、FTP、DNS等。应用层协议依赖于传输层和网络层的支持,通过这些协议实现应用程序之间的通信。 此外,Linux内核还提供了一些额外的功能,如网络地址转换(NAT)、防火墙(iptables)、网络隧道(Tunneling)等,以满足网络通信和安全的需求。 总之,Linux内核的网络协议是一个复杂而庞大的系统,通过不同层次的协议和功能实现了网络通信的各个方面。它为应用程序提供了丰富的网络功能,使得Linux成为一个强大的网络操作系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值