谈谈IP
# 网络协议的分层
在聊IP之前,需要先对计算机网络协议的层级进行简单介绍。
TCP/IP模型分为五层:
物理层(Physical Layer):负责数据的物理传输,包括通过传输介质传输比特流、电压等信号。
数据链路层(Data Link Layer):提供可靠的点对点数据传输,包括将比特流划分为帧,进行错误检测和纠正,以及进行访问控制。
网络层(Network Layer):负责不同网络之间的数据包转发和路由选择,包括通过设备间的路径选择将数据包从源主机传输到目标主机。
传输层(Transport Layer):提供端到端的可靠数据传输,包括分段、流量控制、拥塞控制等功能。
应用层(Application Layer):提供特定应用程序的服务,包括用户与应用程序之间的交互,如电子邮件、文件传输、远程登录等。
IP位于网络层,负责将数据包从源主机传输到目标主机。
# 什么是IP地址
IP地址(Internet Protocol Address)是计算机网络中用于唯一标识和定位网络设备(如计算机、服务器、路由器等)的一组数字。它是由32位(IPv4)或128位(IPv6)二进制数字组成。
IPv4地址由四个8位字段组成,每个字段用点分十进制表示。例如,10.100.122.2是一个IPv4地址。
IP地址的作用是在网络中唯一标识一个设备,并通过路由器进行数据包的转发和路由选择,以实现网络通信。每个设备在网络中都需要一个唯一的IP地址,以便其他设备可以向其发送数据包。
# 查看IP
查看ip地址,windows上使用ipconfig
命令;linxu上有ifconfig
或ip addr
命令,需要通过安装net-tools和iproute2获得。
如10.100.122.2是一个ip地址,地址被分为四个部分,每个部分8个bit(0-255),所以ip地址是32位的。所以现在的ip地址大概有40多亿个,随着互联网的发展,ip地址不够用了,所以出现了ipv6,ipv6是128位的,理论上有3.4*10^38个ip地址。
# IP地址是怎么来的
首先需要从根源上来看,全球的IP地址都是由IANA(互联网数字分配机构)来分配的。
互联网地址分配机构(IANA)将网络资源委任区域互联网注册管理机构管理,然后相对的,为了未来能进一步地再委任ISP和最终用户的资源,区域互联网注册管理机构遵循着他们的区域政策。
区域互联网注册机构(Regional Internet Registry,RIR),是管理世界上某特定地区Internet资源的组织。
现在世界上有五个正在运作的区域互联网注册管理机构:
- 美洲互联网号码注册管理机构(American Registry for Internet Numbers,ARIN)管理北美、南极洲和部分加勒比地区事务
- 欧洲IP网络资源协调中心(RIPE Network Coordination Centre,RIPE NCC)管理欧洲、中东和中亚地区事务
- 亚太网络信息中心(Asia-Pacific Network Information Centre,APNIC)管理亚洲和太平洋地区事务
- 拉丁美洲及加勒比地区互联网地址注册管理机构(Latin American and Caribbean Internet Address Registry,LACNIC)管理拉丁美洲和部分加勒比地区事务
- 非洲网络信息中心(African Network Information Centre,AfriNIC)管理非洲事务
以中国大陆为例,中国大陆的IP地址是由APNIC管理的,APNIC将IP地址分配给中国大陆的ISP(Internet Service Provider的缩写,意为互联网服务提供商。比如中国移动、中国联通),然后ISP再将IP地址分配给最终用户。
# CIRD
IANA将IP分为了五类,大概是这样的:
不过这种分类方式显示出了诸多弊端,比如地址资源浪费、分配不灵活、路由表规模膨胀等问题。
于是出现了CIDR。
CIDR(Classless Inter-Domain Routing)是一种用于对IPv4地址进行编址和路由的方法。CIDR取代了传统的分类IP地址(Classful IP Addressing)。
在传统的分类IP地址中,IP地址被分为A类、B类和C类等不同的类别,每个类别有固定的网络前缀长度。这种分类方式限制了IP地址的灵活使用,导致地址资源的浪费。
而CIDR引入了可变长度子网掩码(Variable-Length Subnet Mask,VLSM),通过在IP地址中使用不同的子网掩码来划分网络。CIDR表示法将IP地址和子网掩码写在一起,使用“IP地址/前缀长度”的格式表示。例如,192.168.0.0/24表示前24位是网络标识,剩下的8位是主机标识。
CIDR的优点包括:
提高了IP地址的利用率:CIDR允许将一个网络划分为更小的子网,根据实际需求分配IP地址,避免了资源浪费。
灵活的网络划分:CIDR允许对网络进行更精细的划分,使网络更加灵活和可扩展。
更有效的路由表:CIDR的引入减少了路由表的规模,提高了路由器的路由效率。
CIDR的广泛应用使得IP地址管理更加灵活和高效,为互联网的发展提供了更好的支持。
# 网络号与主机号
在CIDR(Classless Inter-Domain Routing)中,一个IP地址由两部分组成:网络号和主机号。网络号指示了一个IP地址所属的网络,网络号是用于在局域网中区分不同子网的唯一标识符,而主机号则表示该网络中的具体主机或设备。
CIDR中使用前缀长度(或子网掩码)来确定网络号和主机号的划分。前缀长度表示网络号的位数,剩余的位数则用于表示主机号。
例如,考虑一个CIDR表示为 192.168.0.0/24 的IP地址。这表示前24位是网络号,剩下的8位是主机号。在这个例子中,192.168.0.0 是网络号,而主机号从 0 到 255 都可以用于表示具体的主机。
CIDR的前缀长度可以是任意值,可以根据需要进行灵活的调整,以满足不同网络规模和需求。较小的前缀长度表示更大的网络,而较大的前缀长度表示更小的网络。
# 子网掩码(前缀长度)
在CIDR(Classless Inter-Domain Routing)中,子网掩码用于确定一个IP地址中哪些位是网络号,哪些位是主机号。子网掩码是一个与IP地址位数相同的二进制数,用于按位与操作以提取网络号。
子网掩码通常使用点分十进制表示法,与IP地址一起表示为CIDR表示法的一部分。例如,对于CIDR表示为 192.168.0.0/24 的IP地址,子网掩码为255.255.255.0。
子网掩码中的连续的1表示网络号的位,连续的0表示主机号的位。在上面的例子中,子网掩码的前24位(从左到右)是1,表示网络号,而最后的8位是0,表示主机号。
子网掩码的作用是将IP地址与子网掩码进行按位与操作,以提取出网络号。例如,对于IP地址 192.168.0.10 和子网掩码 255.255.255.0,进行按位与操作后,得到的网络号是 192.168.0.0。
通过使用不同的子网掩码,可以将一个网络划分为多个子网,实现更细粒度的地址分配和路由控制。子网掩码的长度决定了网络号和主机号的划分方式,较小的子网掩码表示更大的网络,而较大的子网掩码表示更小的网络。
需要注意的是,CIDR中的子网掩码不一定要是连续的1和0。例如,对于CIDR表示为 192.168.0.0/26 的IP地址,子网掩码为255.255.255.192,其中前26位是1,后面的6位是0。这种非连续的子网掩码允许更灵活地划分网络。
# 一个特殊的CIDR
上面说到:CIDR的前缀长度可以是任意值。常用的前缀长度是8、16和24,你也可以指定一些特殊的CIDR。
来看16.158.165.91/22这个CIDR,求一下这个网络的第一个地址(网关)、子网掩码和广播地址。
/22不是整数,不好办。16.158不会动,中间的165,变成二进制是10100101,变成16.158.<101001><01>.91,
那么第一个地址是16.158.<101001><00>.1(全变0,最后一位是1),即16.158.164.1。
子网掩码255.255.<111111><00>.0(全变0,最后一位是0),即255.255.252.0。
广播地址为16.158.<101001><11>.255(全变1,最后为255),即16.158.167.255。
# 默认网关
默认网关(Default Gateway)是指当主机要访问的目标主机不在本地网络中时,将数据包转发到的下一跳路由器。默认网关通常是本地网络中的路由器,也可以是其他设备。
当两台主机在同一个网络号的时候,他们可以直接通信。比如192.168.0.1和192.168.0.2,他们的网络号都是192.168.0,那么他们可以直接通信。
如果两台主机不在同一个网络号,比如192.168.0.1和192.168.1.2,那么他们就不能直接通信。A要访问B,会使用默认网关作为下一跳,网关会转发请求到对应的目的IP。
这个默认网关一般指的是路由器。
# 局域网中IP地址的分配
# 静态IP地址分配
在Linux中配置静态IP地址的示例可以参考以下步骤:
打开终端并以超级用户身份登录(或使用sudo命令)。
找到要配置的网络接口名称。可以使用
ifconfig
命令或ip addr
命令来查看当前的网络接口列表。例如,假设要配置的网络接口名称为eth0。编辑网络接口的配置文件。使用文本编辑器(如vi或nano)打开接口配置文件。在大多数Linux发行版中,接口配置文件位于
/etc/network/interfaces
或/etc/sysconfig/network-scripts/
目录下。例如,使用vi
编辑器打开配置文件:sudo vi /etc/network/interfaces
在配置文件中找到要配置的接口,并添加以下行(根据您的网络环境进行相应调整):
auto eth0 iface eth0 inet static address 192.168.0.100 # 静态IP地址 netmask 255.255.255.0 # 子网掩码 gateway 192.168.0.1 # 默认网关 dns-nameservers 8.8.8.8 # DNS服务器
注意:根据您的网络环境,可能还需要设置其他参数,如网络设备的MAC地址(hwaddress)或其他高级网络配置。
保存并关闭配置文件。
重新启动网络服务或重启计算机以使更改生效。可以使用以下命令重启网络服务:
sudo systemctl restart networking
以上步骤中的IP地址、子网掩码、默认网关和DNS服务器地址需要根据您的网络环境进行相应的配置。请确保配置的IP地址与您的网络中的其他设备不发生冲突,并确保正确设置子网掩码和默认网关,以便正确路由网络流量。
# 动态IP地址分配(DHCP)
如果一个笔记本用了就走,那么手动配置IP就太麻烦了。
我们需要一个自动配置的协议,称为动态主机配置协议,也就是DHCP。
第一步:DHCP Discover,本机只知道自己的MAC地址,只能先吼一句。新来的机器使用0.0.0.0发送一个广播包,目标ip为255.255.255.255,封装在UDP里面,UDP封装在BOOTP里面。DHCP是BOOTP的增强版。
广播包里的内容为:我是新来的(Boot request),我的MAC是这个,谁能给我一个IP呢?
如果网络里配置里DHCP Server的话,它就知道来了一个新人。从而租用给他一个IP,被称为DHCP Offer。
DHCP Server使用广播地址作为目的地址,除了IP,还会发送子网掩码、网关、DNS和IP地址租用期等信息。
如果网络中有多个DHCP Server,新机器一般会选择最先到达的那个。它还会发送一个DHCP Request给所有DHCP Server。DHCP Server收到DHCP Request之后会返回个客户机一个DHCP ACK消息包,最终租约达成,需要广播一个,让大家都知道。
# IPv6
IPv6(Internet Protocol version 6)是互联网协议的第六个版本,是IPv4的继任者。IPv6采用128位地址长度,相比IPv4的32位地址长度,提供了更多的IP地址空间。IPv6的主要目标是解决IPv4所面临的地址耗尽问题,并提供更好的安全性、可靠性和性能。
以下是一些IPv6的特点和优势:
更大的地址空间:IPv6采用128位地址长度,提供了约340万亿亿亿亿(3.4 x 10^38)个唯一的IP地址,远超过IPv4的可用地址数量。这样可以满足未来互联网中大量设备的需求。
简化的地址分配:IPv6引入了自动地址配置(Autoconfiguration)功能,使得设备可以自动获取全局唯一的IPv6地址。这样可以简化地址分配的管理和配置,减少了对网络管理员的依赖。
改进的安全性:IPv6内置了对IP数据报的加密和认证支持,称为IPSec(Internet Protocol Security)。这提供了更强的数据传输安全性,包括数据的机密性、完整性和身份验证。
增强的移动性支持:IPv6提供了更好的移动性支持,如移动设备接入互联网时的快速地址配置、移动设备的无缝漫游以及更好的网络连接保持。
改进的性能和路由效率:IPv6使用更简化的报头格式,减少了路由器处理的复杂性,提高了路由效率和网络性能。此外,IPv6还引入了多播(Multicast)和任播(Anycast)功能,提供了更高效的数据传输方式。
支持新的应用和服务:IPv6为新的应用和服务提供了更好的支持,如物联网(IoT)、云计算、大规模传感器网络等。这些应用和服务通常需要更大的地址空间和更高的性能。
尽管IPv6在全球范围内的采用进展较慢,但随着IPv4地址耗尽的加速和对新技术的需求增加,IPv6的重要性逐渐凸显。大多数现代操作系统和网络设备都支持IPv6,并且逐渐推动IPv6的部署和采用。
# 总结
本文主要介绍了计算机网络协议的分层,以及在网络层中的IP地址的概念和作用。IP地址是由32位(IPv4)或128位(IPv6)二进制数字组成,用于在网络中唯一标识和定位设备。全球的IP地址由互联网数字分配机构(IANA)分配,并用CIDR方式对IP地址进行编址和路由,以提高IP地址的利用率和网络划分的灵活性。
IP地址分为静态IP地址和动态IP地址(DHCP)。静态IP地址需要手动配置,而动态IP地址可以通过自动的DHCP协议获取。
最后,文章介绍了IPv6的特点和优点,如更大的地址空间、改进的安全性、增强的移动性支持等,IPv6逐渐成为网络发展的趋势。
希望本文对你有所帮助!
祝你变得更强!