轩辕李的博客 轩辕李的博客
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

轩辕李

勇猛精进,星辰大海
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 分布式

  • 代码质量管理

  • 基础

  • 操作系统

  • 计算机网络

    • 谈谈IP
      • 一、网络协议的分层
      • 二、什么是IP地址
        • 1、查看IP
      • 三、IP地址是怎么来的
      • 四、CIRD
        • 1、网络号与主机号
        • 2、子网掩码(前缀长度)
        • 3、一个特殊的CIDR
        • 4、默认网关
      • 五、局域网中IP地址的分配
        • 1、静态IP地址分配
        • 2、动态IP地址分配(DHCP)
      • 六、IPv6
      • 七、总结
    • DNS与HTTP协议
  • 编程范式

  • 安全

  • 中间件

  • 心得

  • 架构
  • 计算机网络
轩辕李
2023-08-26
目录

谈谈IP

# 一、网络协议的分层

在聊IP之前,需要先对计算机网络协议的层级进行简单介绍。

TCP/IP模型分为五层:

  1. 物理层(Physical Layer):负责数据的物理传输,包括通过传输介质传输比特流、电压等信号。

  2. 数据链路层(Data Link Layer):提供可靠的点对点数据传输,包括将比特流划分为帧,进行错误检测和纠正,以及进行访问控制。

  3. 网络层(Network Layer):负责不同网络之间的数据包转发和路由选择,包括通过设备间的路径选择将数据包从源主机传输到目标主机。

  4. 传输层(Transport Layer):提供端到端的可靠数据传输,包括分段、流量控制、拥塞控制等功能。

  5. 应用层(Application Layer):提供特定应用程序的服务,包括用户与应用程序之间的交互,如电子邮件、文件传输、远程登录等。

IP位于网络层,负责将数据包从源主机传输到目标主机。

# 二、什么是IP地址

IP地址(Internet Protocol Address)是计算机网络中用于唯一标识和定位网络设备(如计算机、服务器、路由器等)的一组数字。它是由32位(IPv4)或128位(IPv6)二进制数字组成。

IPv4地址由四个8位字段组成,每个字段用点分十进制表示。例如,10.100.122.2是一个IPv4地址。

IP地址的作用是在网络中唯一标识一个设备,并通过路由器进行数据包的转发和路由选择,以实现网络通信。每个设备在网络中都需要一个唯一的IP地址,以便其他设备可以向其发送数据包。

# 1、查看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分为了五类,大概是这样的:

image

不过这种分类方式显示出了诸多弊端,比如地址资源浪费、分配不灵活、路由表规模膨胀等问题。

于是出现了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的优点包括:

  1. 提高了IP地址的利用率:CIDR允许将一个网络划分为更小的子网,根据实际需求分配IP地址,避免了资源浪费。

  2. 灵活的网络划分:CIDR允许对网络进行更精细的划分,使网络更加灵活和可扩展。

  3. 更有效的路由表:CIDR的引入减少了路由表的规模,提高了路由器的路由效率。

CIDR的广泛应用使得IP地址管理更加灵活和高效,为互联网的发展提供了更好的支持。

# 1、网络号与主机号

在CIDR(Classless Inter-Domain Routing)中,一个IP地址由两部分组成:网络号和主机号。网络号指示了一个IP地址所属的网络,网络号是用于在局域网中区分不同子网的唯一标识符,而主机号则表示该网络中的具体主机或设备。

CIDR中使用前缀长度(或子网掩码)来确定网络号和主机号的划分。前缀长度表示网络号的位数,剩余的位数则用于表示主机号。

例如,考虑一个CIDR表示为 192.168.0.0/24 的IP地址。这表示前24位是网络号,剩下的8位是主机号。在这个例子中,192.168.0.0 是网络号,而主机号从 0 到 255 都可以用于表示具体的主机。

CIDR的前缀长度可以是任意值,可以根据需要进行灵活的调整,以满足不同网络规模和需求。较小的前缀长度表示更大的网络,而较大的前缀长度表示更小的网络。

# 2、子网掩码(前缀长度)

在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。这种非连续的子网掩码允许更灵活地划分网络。

# 3、一个特殊的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。

# 4、默认网关

默认网关(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地址的分配

# 1、静态IP地址分配

在Linux中配置静态IP地址的示例可以参考以下步骤:

  1. 打开终端并以超级用户身份登录(或使用sudo命令)。

  2. 找到要配置的网络接口名称。可以使用ifconfig命令或ip addr命令来查看当前的网络接口列表。例如,假设要配置的网络接口名称为eth0。

  3. 编辑网络接口的配置文件。使用文本编辑器(如vi或nano)打开接口配置文件。在大多数Linux发行版中,接口配置文件位于/etc/network/interfaces或/etc/sysconfig/network-scripts/目录下。例如,使用vi编辑器打开配置文件:

    sudo vi /etc/network/interfaces
    
  4. 在配置文件中找到要配置的接口,并添加以下行(根据您的网络环境进行相应调整):

    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)或其他高级网络配置。

  5. 保存并关闭配置文件。

  6. 重新启动网络服务或重启计算机以使更改生效。可以使用以下命令重启网络服务:

    sudo systemctl restart networking
    

以上步骤中的IP地址、子网掩码、默认网关和DNS服务器地址需要根据您的网络环境进行相应的配置。请确保配置的IP地址与您的网络中的其他设备不发生冲突,并确保正确设置子网掩码和默认网关,以便正确路由网络流量。

# 2、动态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的特点和优势:

  1. 更大的地址空间:IPv6采用128位地址长度,提供了约340万亿亿亿亿(3.4 x 10^38)个唯一的IP地址,远超过IPv4的可用地址数量。这样可以满足未来互联网中大量设备的需求。

  2. 简化的地址分配:IPv6引入了自动地址配置(Autoconfiguration)功能,使得设备可以自动获取全局唯一的IPv6地址。这样可以简化地址分配的管理和配置,减少了对网络管理员的依赖。

  3. 改进的安全性:IPv6内置了对IP数据报的加密和认证支持,称为IPSec(Internet Protocol Security)。这提供了更强的数据传输安全性,包括数据的机密性、完整性和身份验证。

  4. 增强的移动性支持:IPv6提供了更好的移动性支持,如移动设备接入互联网时的快速地址配置、移动设备的无缝漫游以及更好的网络连接保持。

  5. 改进的性能和路由效率:IPv6使用更简化的报头格式,减少了路由器处理的复杂性,提高了路由效率和网络性能。此外,IPv6还引入了多播(Multicast)和任播(Anycast)功能,提供了更高效的数据传输方式。

  6. 支持新的应用和服务: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逐渐成为网络发展的趋势。

希望本文对你有所帮助!

祝你变得更强!

编辑 (opens new window)
#IP
上次更新: 2025/04/01
Bash脚本教程
DNS与HTTP协议

← Bash脚本教程 DNS与HTTP协议→

最近更新
01
Spring Boot版本新特性
09-15
02
Spring框架版本新特性
09-01
03
Spring Boot开发初体验
08-15
更多文章>
Theme by Vdoing | Copyright © 2018-2025 京ICP备2021021832号-2 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式