计算机网络——网络层-IPV4相关技术

一、网络地址转换NAT

• 网络地址转换 NAT 方法于1994年提出。
• 需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球地址 IPG。
• 所有使用本地地址的主机在和外界通信时都要在 NAT 路由器上将其本地地址转换成 IPG 才能和因特网连接。

二、专用地址

• 10.0.0.0 到 10.255.255.255
• 172.16.0.0 到 172.31.255.255
• 192.168.0.0 到 192.168.255.255
• 这些地址只能用于一个机构的内部通信,而不能用于和因特网上的主机通信。
• 专用地址只能用作本地地址而不能用作全球地址。在因特网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
• 普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报时,一定要更换其IP地址(转换源IP地址或目的IP地址)。
• 为了更有效的利用NAT路由器上的全球IP地址,现在常用的NAT转换表把传输层的端口号也利用上。使用端口号的NAT也叫做网络地址与端口号转换NATP(Network Address and PortTranslation)
• 普通路由器仅工作在网络层,NAT路由器因为“看到了”端口号,所以工作在传输层

三、子网划分

• 由于两级IP地址的设计不够合理,带来了如下一些问题
1)IP地址空间的利用率有时很低
2)给每个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏
3)两级的IP地址不够灵活

1. 从两级 IP 地址到三级 IP 地址
2. 从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
IP地址 ::= {<网络号>, <子网号>, <主机号>}
3. 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。最后就将 IP 数据报直接交付目的主机。
• 当没有划分子网时,IP地址是两级结构。划分子网后IP地址变成了三级结构。划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。
• 需要注意的是,原子网号不能全为0或全为1,现在随着无分类编址CIDR的广泛使用,子网号也可以全0或全1了,但要求路由器有软件支持。无论IPv4还是CIDR,主机号全0或全1都不能分配。主机号全0是子网网络号,主机号全1是子网广播地址。

一个未划分子网的 B 类网络145.13.0.0

划分为三个子网后对外仍是一个网络

 

子网掩码

• 从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
• 使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。

 

(IP 地址) AND (子网掩码) =网络地址

 

默认子网掩码

 

使用子网掩码的分组转发过程

• 路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
• 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
• 若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
• 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
• 因此分组转发的算法也必须做相应的改动。

在划分子网的情况下路由器转发分组的算法

(1) 从收到的分组的首部提取目的 IP 地址D。
(2) 先用各网络的子网掩码和D 逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(3)。
(3) 若路由表中有目的地址为D 的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。
(4) 对路由表中的每一行的子网掩码和D 逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。
(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。
(6) 报告转发分组出错。

四、CIDR

• 无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
• CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
• CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
• IP 地址从三级编址(使用子网掩码)又回到了两级编址。
• 无分类的两级编址的记法是:IP地址 ::= {<网络前缀>, <主机号>}
• CIDR 还使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址面加上一个斜线“/”,
然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。
• CIDR 把网络前缀都相同的连续的 IP 地址组成“CIDR 地址块”。

CIDR 地址块

• 128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这
个地址的主机号是 12 位)。
• 这个地址块的起始地址是 128.14.32.0。
• 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
• 128.14.32.0/20 地址块的最小地址:128.14.32.0
• 128.14.32.0/20 地址块的最大地址:128.14.47.255
• 全 0 和全 1 的主机号地址一般不使用。

路由聚合(route aggregation)

 • 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个
项目可以表示很多个(例如上千个)原来传统分类地址的路由。
• 路由聚合也称为构成超网(supernetting)。

最长前缀匹配

• 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能
会得到不止一个匹配结果。
• 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(longest-prefix matching)。
• 网络前缀越长,其地址块就越小,因而路由就越具体(more specific) 。
• 最长前缀匹配又称为最长匹配或最佳匹配。

使用CIDR转发分组的过程

(1) 从收到的分组的首部提取目的IP地址D.
(2)先用其网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分
组直接交付。否则就是间接交付,执行(3)。
(3)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执
行(4)。
(4)对路由表中的每一行(网络前缀、下一跳地址),将其中的掩码和D逐比特相与,若仅有一行
匹配,则将数据报传输给指明的下一跳路由器;若有多行匹配,则从匹配结果中选择具有最长网
络前缀的路由,将数据报传输给指明的下一跳路由器;否则,没有一行匹配,执行(5)
(5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行
(6)报告转发分组出错。

五、IPv6

IPv4取得了极大的成功,但IPv4地址资源的紧张限制了Inernet的进一步发展,网络地址转换NAT、
无类别编制由CIDR、可变长子网掩码VLSM等技术的使用仅仅暂时缓解了IPv4地址紧张, 但不是根
本解决办法。解决地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6.

• 和IPv4相比,IPv6的主要特点如下:
1)更大的地址空间。IPv6把地址从IPv4的32位增大到128位,使地址空间增大了296倍。
2)扩展的地址层次结构。IPv6由于地址空间很大,因此可以划分为更多的层次。
3)灵活的首部格式。IPv6定义了许多可选的扩展首部,不仅可提供比IPv4更多的功能,而且还可提高
路由器的处理效率,这是因为路由器对扩展首部不进行处理(除逐跳扩展首部外)。
4)改进的选项。IPv6允许数据报包含有选项的控制信息,因而可以包含--些新的选项。但IPv6的首
部长度是固定的,其选项放在有效载荷中。
5)允许协议继续扩充。因为技术总是在不断地发展(如网络硬件的更新)而新的应用也还会出现。
6)支持即插即用(即自动配置)。因此IPv6不需要使用DHCP。
7)支持资源的预分配。IPv6支持实时视像等要求保证一定的带宽和时延的应用。
8)IPv6首部长度必须是8B的整数倍。

• 一般来讲,一个IPv6数据报的目的地址可以是以下三种基本类型地址之一。
(1)单播(unicast)单播就是传统的点对点通信,单播地址标识单个网络接口。
(2)多播(multicast)多播是一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采
用广播的术语,而是将广播看作多播的--个特例。多播地址标识--组网络接口,典型的是在不同的位
置,可以把一个分组发送给在该组中所有的网络接口。
(3)任播(anycast)这是IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一
个,通常是距离最近的一个。任播地址也标识一组网络接口,但是分组仅仅被发送到在该组中的一
个网络接口,通常是离发送方最近的一个接口。
IPv6把实现IPv6的主机和路由器均称为结点。IPv6给结点的每一个接口指派一个IP地址。一个结点
可以有多个单播地址,而其中任何一个地址都可以当作到达该结点的目的地址。

• IPv6地址128位长,用冒号十六进制记法表示,即用冒号将128位分割成8个16位的部分,每个部
分包括4位的16进制数字。在冒号十六进制记法中,允许把数字前面的0省略:
如6000:0000:0000:0000:00D0:0234:ABCD:89A0 可表示为6000:0:0:0:D0:234:ABCD:89A0
也允许零压缩(zero compression),即一连串连续的零可以为一对冒号(::) 所取代,并规定在任
一地址中只能使用一次零压缩:
如6000:0000:0000:0000:00D0:234:ABCD:89A0可表示为 6::D0:234:ABCD:89A0。
• 冒号十六进制记法可结合使用点分十进制记法的后缀。CIDR的斜线表示法仍然可用。
• IPv4向IPv6过渡可以采用两种策略,即使用双协议栈和隧道技术。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/953144.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

postgresql|数据库|利用sqlparse和psycopg2库批量按顺序执行SQL语句(psyconpg2新优化版本)

一、 旧版批量执行SQL脚本的python文件缺点&#xff0c;优点&#xff0c;以及更新内容 书接上回&#xff0c;postgresql|数据库开发|python的psycopg2库按指定顺序批量执行SQL文件(可离线化部署)_python sql psycopg2-CSDN博客 这个python脚本写了很久了&#xff0c;最近开始…

Node.js——http 模块(二)

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

基于element UI el-dropdown打造表格操作列的“更多⌵”上下文关联菜单

<template><div :class"$options.name"><el-table :data"tableData"><el-table-column type"index" label"序号" width"60" /><!-- 主要列 BEGIN---------------------------------------- --&g…

javascrip基础语法

为什么学习 JavaScript? JavaScript 是 web 开发人员必须学习的 3 门语言中的一门&#xff1a; HTML 定义了网页的内容CSS 描述了网页的布局JavaScript 控制了网页的行为 1. JavaScript 输出 1.1 console.log()&#xff1a;用于将信息输出到浏览器控制台&#xff0c;例如con…

大语言模型预训练、微调、RLHF

转发&#xff0c;如有侵权&#xff0c;请联系删除&#xff1a; 1.【LLM】3&#xff1a;从零开始训练大语言模型&#xff08;预训练、微调、RLHF&#xff09; 2.老婆饼里没有老婆&#xff0c;RLHF里也没有真正的RL 3.【大模型微调】一文掌握7种大模型微调的方法 4.基于 Qwen2.…

django基于Python的校园个人闲置物品换购平台

Django 基于 Python 的校园个人闲置物品换购平台 一、平台概述 Django 基于 Python 的校园个人闲置物品换购平台是专为校园师生打造的一个便捷、环保且充满活力的线上交易场所。它借助 Django 这一强大的 Python Web 开发框架&#xff0c;整合了校园内丰富的闲置物品资源&…

abap安装cl_json类

文章来自 SAP根据源码导入/ui2/cl_json类 - pikeduo - 博客园 新建一个se38程序&#xff0c;把源码放到里&#xff0c;源码如下 *----------------------------------------------------------------------* * CLASS zcl_json DEFINITION *----------------------------…

[OPEN SQL] ORDER BY排序数据

本次操作使用的数据库表为SFLIGHT&#xff0c;其字段内容如下所示 航班(SFLIGHT) 该数据库表中的部分值如下所示 OPEN SQL中的ORDER BY语句用于对数据库表中的数据进行排序 在查询数据的时候使用ORDER BY语句&#xff0c;则查询出来的结果会按照ORDER BY指定的字段进行排序 排序…

STM32F103ZET6战舰版单片机开发板PCB文件 电路原理图

资料下载地址&#xff1a;STM32战舰版单片机开发板PCB文件 电路原理图 1、原理图 2、PCB 3、板子介绍 一、核心芯片与性能 核心芯片&#xff1a;STM32F103ZET6&#xff0c;这是一款基于ARM Cortex-M3内核的高性能单片机。处理器频率&#xff1a;高达72MHz&#xff0c;确保了…

An FPGA-based SoC System——RISC-V On PYNQ项目复现

本文参考&#xff1a; &#x1f449; 1️⃣ 原始工程 &#x1f449; 2️⃣ 原始工程复现教程 &#x1f449; 3️⃣ RISCV工具链安装教程 1.准备工作 &#x1f447;下面以LOCATION代表本地源存储库的安装目录&#xff0c;以home/xilinx代表在PYNQ-Z2开发板上的目录 ❗ 下载Vivad…

GAN的应用

5、GAN的应用 ​ GANs是一个强大的生成模型&#xff0c;它可以使用随机向量生成逼真的样本。我们既不需要知道明确的真实数据分布&#xff0c;也不需要任何数学假设。这些优点使得GANs被广泛应用于图像处理、计算机视觉、序列数据等领域。上图是基于GANs的实际应用场景对不同G…

centos9设置静态ip

CentOS 9 默认使用 NetworkManager 管理网络&#xff0c;而nmcli是 NetworkManager 命令行接口的缩写&#xff0c;是一个用来进行网络配置、管理网络连接的命令工具&#xff0c;可以简化网络设置&#xff0c;尤其是在无头&#xff08;没有图形界面&#xff09;环境下。 1、 cd…

Idea日志乱码

问题描述 前提&#xff1a;本人使用windows Idea运行sh文件&#xff0c;指定了utf-8编码&#xff0c;但是运行过程中还是存在中文乱码 Idea的相关配置都已经调整 字体调整为雅黑 文件编码均调整为UTF-8 调整Idea配置文件 但是还是存在乱码&#xff0c;既然Idea相关配置已经…

R4-LSTM学习笔记

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 LSTM-火灾温度预测 导入数据数据可视化设置X、y构建模型调用模型个人总结LSTM 的基本结构细胞状态&#xff08;Cell State&#xff09;LSTM 的优点 导入数据 i…

uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验

在 UniApp 中&#xff0c;由于需要兼容多端应用&#xff0c;我们通常使用 rpx 作为尺寸单位。然而&#xff0c;在某些情况下&#xff0c;如需要实现内容居中且两边留白时&#xff0c;直接使用 rpx 可能会带来一些限制。这时&#xff0c;我们可以考虑使用 px 或 rem 等单位&…

网工_网络体系结构

2024.01.09&#xff1a;网络工程学习笔记&#xff08;网工老姜&#xff09; 第1节 网络体系结构 1.1 计算机一切皆011.2 网络协议1.3 协议的分层模型1.4 主机1向主机2发送数据过程1.5 本章小结 1.1 计算机一切皆01 在计算机内部&#xff0c;所有的数据最终都是以01的方式存在的…

CI/CD 流水线

CI/CD 流水线 CI 与 CD 的边界CI 持续集成CD&#xff08;持续交付/持续部署&#xff09;自动化流程示例&#xff1a; Jenkins 引入到 CI/CD 流程在本地或服务器上安装 Jenkins。配置 Jenkins 环境流程设计CI 阶段&#xff1a;Jenkins 流水线实现CD 阶段&#xff1a;Jenkins 流水…

编程题-二分查找

题目&#xff1a; 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1 解法一&#xff08;循环遍历查找&#xff09;&#xff…

OOM排查思路

K8S 容器的云原生生态&#xff0c;改变了服务的交付方式&#xff0c;自愈能力和自动扩缩等功能简直不要太好用。 有好的地方咱要夸&#xff0c;不好的地方咱也要说&#xff0c;真正的业务是部署于容器内部&#xff0c;而容器之外&#xff0c;又有一逻辑层 Pod 。 对于容器和…

Github Copilot学习笔记

&#xff08;一&#xff09;Prompt Engineering 利用AI工具生成prompt设计好的prompt结构使用MarkDown语法&#xff0c;按Role, Skills, Constrains, Background, Requirements和Demo这几个维度描述需求。然后收输入提示词&#xff1a;作为 [Role], 拥有 [Skills], 严格遵守 […