当前位置: 首页 > article >正文

[网络层]-IP协议相关特性

IP协议

基本概念

  • 主机 : 配有IP地址,但是不进行路由控制的设备
  • 路由器 : 既配有IP地址,又能进行路由控制
  • 节点: 主机和路由器的统称

协议头格式

  1. 4位版本(version):占四位,用于指定IP协议的版本,例如,使用IPv4,该字段就为4
  2. 4位首部长度: 表示IP协议首部的长度,以32位bit (4字节) 为单位,最大长度为 60 字节
  3. 8位服务类型: 用于指示对数据包的服务质量要求,包括优先级、延迟、吞吐量、可靠性等信息。前 3 位表示优先级(Precedence),用于指示数据包的重要性级别,取值范围从 0(普通优先级)到 7(网络控制优先级)。接下来的 4 位分别对应延迟(D)、吞吐量(T)、可靠性(R)和成本(C),四者互相冲突,只能选择一个。最后 1 位未使用。
  4. 16位总长度: IP数据报整体占多少字节
  5. 16位标识: 用于标识属于同一个数据报的各个分片,同一个数据报的所有分片具有相同的标识值。
  6. 3位标志: 第一位保留,DF(Don't Fragment)位表示是否允许分片,MF(More Fragments)位表示是否还有后续分片
  7. 13位片偏移: 指出该分片在原始数据报中的相对位置,单位为 8 字节
  8. 8位生存时间: 数据包在网络中可以经过的最大跳数,每经过一个路由器 TTL 值减 1,当 TTL 值为 0 时数据包被丢弃。
  9. 8位协议: 指出此数据包携带的数据使用的是哪种上层协议,如 TCP 对应的值为 6,UDP 对应的值为 17 等。
  10. 16位首部校验和: 用于校验 IP 首部的完整性,在每个路由器上都会重新计算
  11. 32位源 IP 地址: 表示发送方的 IP 地址
  12. 32位目的 IP 地址: 表示接收方的 IP 地址
  13. 选项: 长度可变。用于提供一些额外的功能,如源路由选择、时间戳等,但不是所有数据包都包含选项。

地址管理

网段划分

IP地址分为两个部分: 网络号和主机号

网络号: 网络号用于标识一个特定的网络。在网络通信中,当数据包在不同网络之间传输时,路由器根据 IP 地址中的网络号来决定数据包的转发路径。

主机号: 主机号用于标识网络中的特定主机。在同一个网络中,每台主机都有一个唯一的主机号

不同的子网就是把网络号相同的主机放在一起, 如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致,但是主机号不能和其他主机的主机号重复,通过合理的设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都不相同

手动配置子网IP是非常复杂的一件事情.

DHCP:

DHCP 是一个应用层协议,用于在 IP 网络中自动为网络设备分配 IP 地址、子网掩码、默认网关、DNS 服务器等网络配置参数. 一般的路由器都带有DHCP功能, 因此路由器也可以看做一个DHCP服务器.

IPv4 地址主要分为以下几种类别:

A 类地址

  • 地址范围:0.0.0.0 - 127.255.255.255。
  • 网络号和主机号分配:第一个字节是网络号,后三个字节是主机号。

B 类地址

  • 地址范围:128.0.0.0 - 191.255.255.255。
  • 网络号和主机号分配:前两个字节是网络号,后两个字节是主机号。

C 类地址

  • 地址范围:192.0.0.0 - 223.255.255.255。
  • 网络号和主机号分配:前三个字节是网络号,最后一个字节是主机号。

D 类地址

  • 地址范围:224.0.0.0 - 239.255.255.255。

E 类地址

  • 地址范围:240.0.0.0 - 255.255.255.255。

这种按类别划分网络地址的方式具有局限性,导致许多IP地址被浪费掉

针对这种情况,提出了新的划分方案,称为CIDR(Classless Inter-Domain Routing)

  • CIDR 是一种用于给 IP 地址进行分类和分配的方法,它摒弃了传统的 A、B、C 类 IP 地址的分类方式,采用可变长子网掩码(VLSM)来灵活地划分网络,提高IP地址利用率。
  • 子网掩码是一个32位的正整数,使用 IP 地址和网络前缀长度来表示一个网络,格式为 “IP 地址 / 网络前缀长度”。例如,192.168.1.0/24,表示网络前缀长度为 24 位,即前 24 位是网络号,后 8 位是主机号。
  • 将IP地址与子网掩码进行 "按位与" 操作,得到的结果就是网络号
  • CIDR 允许将多个连续的网络聚合为一个路由条目,大大简化了路由表,提高了路由器的处理效率。

特殊的IP地址

  • 网络地址: 在一个网段中,主机号全为 0 的 IP 地址表示网络本身,称为网络地址。
  • 广播地址: 主机号全为 1 的 IP 地址用于在特定网络中向所有主机发送广播消息,称为广播地址
  • 回环地址: IPv4 的回环地址是 127.0.0.1,它用于本地设备上的软件测试和进程间通信。当数据发送到回环地址时,不会离开设备,而是直接由网络协议栈内部进行处理,返回给自己
  • 0.0.0.0 地址
    • 在不同的场景下有不同的含义。在服务器配置中,0.0.0.0 可以表示服务器监听所有的网络接口,即接受来自任何 IP 地址的连接请求。
    • 在路由表中,0.0.0.0/0 表示默认路由,当一个数据包的目的地址在路由表中没有找到匹配的具体路由条目时,就会按照默认路由进行转发。

IP地址数量限制

IPv4是一个四字节32位的正整数,一共只有2的三十二次方,大概四十三亿,由于互联网快速发展,并且TCP/IP协议规定,每个主机都有一个IP地址,四十三亿这个数字在当今来说已经是不够的了,那么如何解决这个问题呢?

1. 高效利用现有地址资源的技术

  • CIDR(无类域间路由)
    • 原理:打破传统 A、B、C 类 IP 地址的固定划分方式,采用可变长子网掩码(VLSM),根据实际需求灵活分配网络前缀长度,将多个连续的网络合并或划分子网,提高 IP 地址利用率,减少地址浪费。
    • 举例:原本多个 C 类网络地址范围较小,通过 CIDR 可以将它们聚合为一个较大的网络,使路由表中的条目减少,降低了路由器的处理负担,同时也更合理地利用了 IP 地址空间。
  • 动态分配 IP 地址(DHCP)
    • 原理:当设备接入网络时,从可用的 IP 地址池中动态分配一个 IP 地址给该设备,设备使用完毕下线后,该 IP 地址被释放回地址池,可供其他设备使用。这样可以避免为那些不常在线或暂时不需要 IP 地址的设备长期占用 IP 地址资源。
    • 举例:在企业网络中,员工的办公电脑在上班时间开机接入网络时,DHCP 服务器为其分配 IP 地址,下班后关机,IP 地址被回收,第二天上班重新分配,提高了 IP 地址的复用率。

2. 网络地址转换(NAT)

  • 原理:在局域网内部使用私有 IP 地址,当内部设备需要访问外部网络时,通过 NAT 设备将私有 IP 地址转换为公有 IP 地址,多个内部设备可以共用一个或少数几个公有 IP 地址与外部通信,从而减少对公网 IP 地址的需求。
  • 类型
    • 静态 NAT:将内部本地地址和外部全局地址进行一对一的固定映射,常用于需要对外提供固定服务的服务器。例如,企业内部的 Web 服务器,使用静态 NAT 将其私有 IP 地址转换为公有 IP 地址,供外部用户访问。
    • 动态 NAT:建立一个公有 IP 地址池,当内部设备需要访问外部网络时,从地址池中动态选择一个公有 IP 地址进行转换。当设备通信结束后,释放该公有 IP 地址,供其他设备使用。
    • 端口地址转换(PAT):是最常用的一种 NAT 方式,它不仅可以转换 IP 地址,还可以转换传输层的端口号。通过将多个内部设备的 IP 地址和端口号映射到一个公有 IP 地址的不同端口上,实现多个内部设备同时使用一个公有 IP 地址与外部通信。

3. 升级到 IPv6

  • 优势
    • 地址空间巨大:IPv6 采用 128 位地址,理论上可提供的地址数量为 2的128次方 个,能够满足未来很长一段时间内全球互联网设备连接的需求,彻底解决 IPv4 地址不足的问题。
    • 简化网络配置:IPv6 支持自动配置功能,设备可以自动获取 IP 地址和网络参数,减少了网络管理员的配置工作量,提高了网络部署的效率。
    • 增强的安全性和性能:IPv6 在协议设计上提供了更好的安全性,如内置的 IPsec 支持,为网络通信提供了加密和认证功能;同时,其包头结构更加优化,提高了网络传输效率。

私有IP地址和公网IP地址

私有IP地址:私有 IP 地址是在特定的私有网络内部使用的 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。

公网IP地址: 公网 IP 地址是由互联网服务提供商(ISP)分配给用户或组织的全球唯一的 IP 地址,这些地址可以在互联网上被直接路由和访问。

路由选择

  1. 静态路由
    • 配置方式:由网络管理员手动配置路由表信息。例如,管理员在路由器上输入命令 “ip route 192.168.2.0 255.255.255.0 192.168.1.1”,表示到达 192.168.2.0/24 网络的数据包下一跳地址是 192.168.1.1。
    • 优缺点:静态路由配置简单、稳定,适用于小型网络或网络拓扑结构相对固定的环境。但在大型网络中,手动配置工作量大,且缺乏灵活性,当网络拓扑发生变化时,需要管理员手动修改路由表。
  2. 动态路由
    • 工作原理:动态路由协议允许路由器之间相互交换路由信息,自动构建和更新路由表。常见的动态路由协议有 RIP(Routing Information Protocol)、OSPF(Open Shortest Path First)和 BGP(Border Gateway Protocol)等。
    • 举例:在一个使用 RIP 协议的网络中,路由器会定期向相邻路由器广播自己的路由表信息,相邻路由器收到信息后,根据一定的算法(如距离向量算法)更新自己的路由表。如果网络中的某条链路出现故障,相关路由器会自动调整路由表,将数据包重新路由到其他可用路径。

路由选择算法

  1. 距离向量算法
    • 工作机制:每个路由器维护一个到其他网络的距离向量表,表中记录了到达每个目的网络的距离(通常以跳数为度量)和下一跳路由器。路由器根据相邻路由器发送过来的距离向量信息来更新自己的距离向量表。
    • 示例:在一个简单的网络中,路由器 A 收到路由器 B 发送的信息,得知通过路由器 B 可以到达网络 X,距离为 3 跳。如果路由器 A 到路由器 B 的距离为 1 跳,那么路由器 A 就会更新自己的距离向量表,记录到达网络 X 的距离为 4 跳,下一跳为路由器 B。
  2. 链路状态算法
    • 工作机制:每个路由器通过与其他路由器交换链路状态信息,构建整个网络的拓扑图。然后,根据这个拓扑图使用最短路径算法(如 Dijkstra 算法)计算出到其他节点的最短路径,生成路由表。
    • 示例:在一个网络中,路由器通过发送链路状态通告(LSA)来告知其他路由器自己与相邻路由器之间的链路状态(如链路是否可用、链路的开销等)。每个路由器收集到所有的 LSA 后,构建出网络的拓扑结构,再计算出到各个目的节点的最短路径,从而确定路由表。

http://www.kler.cn/news/313488.html

相关文章:

  • 记忆化搜索专题——算法简介力扣实战应用
  • JavaScript 与 Java 的继承有何区别?-----原型继承,单继承有何联系?
  • 微信小程序/uniapp 程序分包处理,小程序性能优化
  • 错题集锦之C语言
  • NumPy库学习之argmax函数
  • C++【类和对象】(一)
  • 数据结构--图
  • k8s的基础
  • YOLOv8改进,YOLOv8替换主干网络为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点
  • Remix在SPA模式下,出现ErrorBoundary错误页加载Ant Design组件报错,不能加载样式的问题
  • 使用注意力机制可以让你的模型更加灵活,但是需要额外的计算资源。rnn lstm bilstm attension
  • 【论文阅读】PERCEIVER-ACTOR: A Multi-Task Transformer for Robotic Manipulation
  • 开关磁阻电机(SRM)系统的matlab性能仿真与分析
  • python知识点100篇系列(17)-替换requests的python库httpx
  • Python学习
  • yolo自动化项目实例解析(四)ui页面整理1 (1.85)
  • git merge如何忽略部分路径
  • sqli-lab靶场学习(四)——Less11-14(post方法)
  • 微信小程序中的实时通讯:TCP/UDP 协议实现详解
  • Closure 是个数据结构
  • 如何在 Ubuntu 上安装 OpenSSH Server ?
  • DataFrame生成excel后为什么多了一行数字
  • 计算机的编程
  • 华为OD机试 - 信号强度(Python/JS/C/C++ 2024 E卷 100分)
  • 【设计模式】创建型模式(四):建造者模式
  • 前端设计之 主页面、书架页面、数据分析页面
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引
  • 【RabbitMQ】死信队列、延迟队列
  • windows下用cmake编译腾讯云的对象存储COS的XML C++SDK
  • java通过org.eclipse.milo实现OPCUA客户端进行连接和订阅