[网络层]-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.rhkb.cn/news/429639.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux:终端(terminal)与终端管理器(agetty)

终端的设备文件 打开/dev目录可以发现其中有许多字符设备文件,例如对于我的RedHat操作系统,拥有tty0到tty59,它们是操作系统提供的终端设备。对于tty1-tty12使用ctrlaltF*可以进行快捷切换,下面的命令可以进行通用切换。 sudo ch…

【小bug】使用 RestTemplate 工具从 JSON 数据反序列化为 Java 对象时报类型转换异常

起因:今天编写一个请求时需要通过RestTemplate调用外部接口,获取一些信息,但是在获取了外部接口响应内容后,使用强制转换发现报了类型转换异常。之前也遇到过,但是没记录下来,今天又查了一遍……干脆记录一…

Springboot使用ThreadPoolTaskScheduler轻量级多线程定时任务框架

简介: Spring注解定时任务使用不是很灵活,如果想要灵活的配置定时任务,可以使用xxl-job 或者 quartz等定时任务框架,但是过于繁琐,可能成本较大。所以可以使用ThreadPoolTaskScheduler来灵活处理定时任务 ThreadPoolT…

【C++】二叉搜索树的底层以及实现

个人主页 文章目录 ⭐一、二叉搜索树的概念🚀二、二叉搜索树性能分析🏝️三、二叉搜索树的操作1. 插入2. 查找3. 删除4. 遍历节点 🎄四、二叉搜索树的实现(K模型)🎉五、二叉搜索树的应用1. K模型2. KV模型…

基于ACMEv2协议的免费SSL证书申请-支持Let‘s Encrypt/Google/ZeroSSL

项目:https://github.com/cook-code-jazor/acmex 非开源,使用webui管理证书的申请,所有文件本地化存储,支持windows/linux/osx。 证书申请直连ACMEv2服务商,没有任何中间接口,支持Lets Encrypt/Google/Ze…

图说GPT网络结构(参数量与计算量估计)

现在AI领域的主流模型几乎都是Transformer网络架构衍生而来。大热的LLM中的生成类模型很多都是来自于Transformer的变体,即decoder only架构。而GPT就是该类中的经典模型。尽管现在变体甚多,但大多没有根本性地改变其套路。 为了阐述方便,首…

云平台在大规模设备管理和数据分析中的作用

在当代数字化转型的浪潮中,云平台作为信息技术基础设施的核心组件,扮演着无可替代的角色,尤其在大规模设备管理和数据分析领域,其重要性和影响力日益凸显。本文旨在深入探讨云平台如何通过其独特的优势,促进数据的高效…

微软AI核电计划

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

2024PDF内容修改秘籍:工具推荐与技巧分享

现在我们使用PDF文档的频率越来越高了,很多时候收到的表格之类的资料也都是PDF格式的,如果进行转换之后编辑再转换为PDF格式还是有点麻烦的,那么pdf怎么编辑修改内容呢?这篇文章我将介绍几款可以直接编辑PDF文件的工具来提高我们的…

【Java】线程暂停比拼:wait() 和 sleep()的较量

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在Java多线程编程中,合理地控制线程的执行是至关重要的。wait()和sleep()是两个常用的方法,它们都可以用来暂停线程的执行,但它们之间存在着显著的差异。本文将详…

什么是 HTTP/3?下一代 Web 协议

毫无疑问,发展互联网底层的庞大协议基础设施是一项艰巨的任务。 HTTP 的下一个主要版本基于 QUIC 协议构建,并有望提供更好的性能和更高的安全性。 以下是 Web 应用程序开发人员需要了解的内容。 HTTP/3 的前景与风险 HTTP/3 致力于让互联网对每个人…

【齐家网-注册/登录安全分析报告】

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

1、vectorCast单元测试常用操作

一、自动创建测试工程 1、设置工作目录 进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。 2、创建一个空工程 编译器选择vector自带的编译器,vectorCast MinGW C。 此时项目工程就创建好了 2.1、配置编译器节点 点击编译器节点…

Hadoop的安装和使用

1. Hadoop简介 Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性。 高可靠性。高效性。高可扩展性。高容错性。成本低。运行在Linux平台上。支持多种编程语言。 2. 分布…

【计算机网络 - 基础问题】每日 3 题(十八)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

数据结构:二叉树(一)

ps:偷懒了几天,接着更新 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的…

独立站冷启动SOP之市场和竞品调研1.0丨出海笔记

大家好,我是出海笔记Club的创始人Alan,过去半年我们做了15期的操盘手面对面,主要围绕的是跨境电商独立站的冷启动,基本上大部分方法和路径我们都覆盖到了。 我把目的,调研内容和可以使用的工具都罗列出来,…

Java继承教程!(o|o)

Java 继承 Java面向对象设计 - Java继承 子类可以从超类继承。超类也称为基类或父类。子类也称为派生类或子类。 从另一个类继承一个类非常简单。我们在子类的类声明中使用关键字extends,后跟超类名称。 Java不支持多重继承的实现。 Java中的类不能有多个超类。…

CVE-2024-46101

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