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

news/2024/9/21 18:07:55/

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.ppmy.cn/news/1528489.html

相关文章

Pandas_sqlite

在Pandas中使用SQLite数据库进行数据操作是一个常见的任务,尤其是在数据分析和数据科学领域。以下是一个简单的示例,展示如何在Pandas中使用SQLite数据库进行数据的读取、写入和查询。 步骤 1: 安装必要的库 首先,确保你已经安装了Pandas和…

【觅图网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

RuoYi-Vue3使用minio图片预览不了的问题

参照官网配置好之后,图片预览不了 1、参照官网修改前端src\components\ImageUpload\index.vue 2、如果图片预览不了,发现是Minio后台返回的url地址内部包括逗号 与代码里split(",")冲突了, 解决方法是改成分号 多个图片可以预览了…

集群聊天服务器项目【C++】(六)MySql数据库

前面已经介绍了网络模块和业务模块,本章介绍数据模块,同样保持模块解耦的特性,即业务模块不能出现数据模块内容,如出现SQL语句,接下来看看怎么实现的。 1.环境安装 第一章已经介绍了MySql安装,但注意需要…

CVE-2024-46101

前言 自己挖的第一个CVE~ 喜提critical 这里简单说一下。 漏洞简介 GDidees CMS < 3.9.1 的版本&#xff0c;存在一个任意文件上传漏洞。允许登录后的攻击者上传webshell获得网站的权限。 影响版本&#xff1a; GDidees CMS < 3.9.1 &#xff08;其它的我没测。。&am…

SOAP 实例

SOAP 实例 SOAP(Simple Object Access Protocol)是一种网络通信协议,用于在分布式环境中交换结构化信息。它基于 XML 格式,允许在不同的操作系统和编程语言之间进行数据交换。SOAP 通常与 HTTP 或 SMTP 协议结合使用,使其成为 Web 服务开发中的关键技术。 本文将通过一个…

Pytorch学习---基于经典网络架构ResNet训练花卉图像分类模型

基于经典网络架构训练图像分类模型 导包 import copy import json import time import torch from torch import nn import torch.optim as optim import torchvision import os from torchvision import transforms, models, datasets import numpy as np import matplotlib.…

24/9/16 算法笔记 评估模型

评估机器学习模型的性能是一个关键步骤&#xff0c;它可以帮助我们了解模型在实际应用中的表现。以下是一些常用的评估模型的方法&#xff1a; 准确率&#xff08;Accuracy&#xff09;&#xff1a; 最常见的评估指标&#xff0c;表示正确预测的样本数占总样本数的比例。 精确度…