计算机网络 —— 网络层(IP数据报)

计算机网络 —— 网络层(IP数据报)

  • 网络层要满足的功能
  • IP数据报
    • IP数据报格式
      • IP数据报首部格式
      • 数据部分
  • IP数据报分片

我们今天进入网络层的学习。

网络层要满足的功能

网络层作为OSI模型中的第三层,是计算机网络体系结构的关键组成部分,其主要功能包括但不限于以下几点:

  1. 路由与转发:网络层负责决定数据包从源主机到目的主机的最佳路径。这一过程包括路由选择(Routing),即根据网络拓扑、链路状态、路由协议等信息计算路径;以及分组转发(Packet Forwarding),即路由器根据路由表将数据包从一个网络接口转发到另一个网络接口,直至到达目的地。
  1. 异构网络互联:网络层使得不同类型的网络(如以太网、Wi-Fi、卫星网络等)能够相互通信。通过使用网关和路由器等中间设备,网络层能够实现不同网络技术之间的桥接,保证数据可以在多样化的网络环境中无缝传输。
  1. 地址分配与寻址:网络层为每台主机分配逻辑地址(如IPv4或IPv6地址),这些地址用于在网络中唯一标识每一台设备。同时,它还负责将高层的逻辑地址转换为数据链路层的物理地址(MAC地址),以实现数据的实际传输(如通过ARP协议)。
  1. 拥塞控制:网络层需要监控网络的拥塞状况,当网络资源接近饱和时,采取措施如调整数据发送速率、丢弃某些数据包或采用其他策略,以防止网络性能严重下降,确保网络的稳定性和效率。
  1. 分片与重组:对于需要跨越多个网络传输且超过下一跳最大传输单元(MTU)的数据包,网络层负责将其分片并在目的地重新组装,确保数据完整性。
  1. 服务质量(QoS)管理:根据应用需求,网络层可以提供不同级别的服务,如优先级调度、带宽预留等,以保证关键业务的数据传输质量。
  1. 安全性:虽然安全性主要是传输层和应用层关注的焦点,但网络层也参与安全机制,如IPSec可以提供数据加密和身份验证,保护数据在传输过程中的安全。

在这里插入图片描述

综上,网络层是确保数据能够在复杂的网络环境中正确、高效、安全传输的基础,其功能直接影响到整个网络的性能和可靠性。

IP数据报

在这之前,我们来复习一下之前学的东西:
在这里插入图片描述
我们看到IP(网络层),占了很大一部分,其中IP向上为ICMP,TCP等提供服务,也为下面的ARP,数据链路层,和物理层服务。

我们来回忆一个数据如何被处理的:
在计算机网络中,数据从一个应用程序传输到另一个应用程序的过程中,需要经过OSI模型的多个层次,每个层次都有其特定的功能。以下是一个简化的描述,说明数据从应用层到物理层再到接收端反向过程中的每一层所做的主要事情:

  1. 应用层
  • 数据最初由用户在应用程序中生成,比如在浏览器中输入网址或在邮件客户端撰写邮件。
  • 应用层协议(如HTTP、SMTP、FTP)负责将用户数据封装成应用层数据单元,并附加必要的控制信息,如头部信息,以供下一层处理。
  1. 传输层
  • 传输层(TCP或UDP)接收应用层的数据,并添加源端口号和目的端口号,用于标识发送方和接收方的进程。
  • TCP提供可靠传输,包括错误检测、流量控制、拥塞控制和重传机制;UDP则提供无连接服务,不保证数据的可靠传输,但速度快。
  1. 网络层(IP层):
  • 网络层接收传输层的数据单元,并封装成IP数据报。它添加源IP地址和目的IP地址,以及其它必要的控制信息。
  • 网络层负责路由决策,决定数据报在网络中的传输路径,并进行分片和重组处理(如果需要通过不同MTU的链路)。
  1. 数据链路层
  • 数据链路层将网络层的IP数据报封装成帧。这包括添加帧头(包含源MAC地址和目的MAC地址)和帧尾。
  • 它还执行差错检测(如CRC校验),流量控制,以及介质访问控制(如CSMA/CD、CSMA/CA)。
  1. 物理层
  • 物理层处理实际的比特流传输,将数据链路层的帧转换成电信号、光信号或无线信号等物理信号。
  • 它定义了网络连接的物理特性,如电压、线缆类型、信号频率等,确保数据能在物理媒介上传输。

接收端的反向过程

  • 数据从物理层开始,逐层向上解封装,每一层去除对应的头部信息,并根据头部信息进行必要的处理(如错误检测、流量控制)。
  • 最终,数据到达应用层,恢复成原始的应用程序数据,供接收方应用程序使用。

我们看到,网络层接收到上层的数据之后,把这些数据封装,形成IP数据报,然后向下传输。

IP数据报格式

IP数据报是Internet Protocol (IP)协议中数据传输的基本单元,它包括两个主要部分:首部(Header)和数据部分(Data)。

IP数据报首部格式

  1. 固定部分(20字节)(80位)
  • 版本(Version):占4位,表示IP协议的版本,常见的有IPv4(值为4)和IPv6(值为6)。
  • 首部长度(Internet Header Length, IHL):占4位,表示首部的长度,单位为32位字(4字节),因此最小值为5(即20字节的首部)。
  • 服务类型(Type of Service, ToS):占8位,用于指定数据报的优先级和服务类型。
  • 总长度(Total Length):占16位,表示整个IP数据报的长度,包括首部和数据部分,单位为字节。
  • 标识符(Identification):占16位,用于标识每一个IP数据报,当数据报需要分片时,所有分片具有相同的标识符。
  • 标志(Flags):占3位,与分片有关,用于控制和标识数据报是否可以分片及是否为最后一个分片。
  • 片偏移(Fragment Offset):占13位,用于指示分片在原始数据报中的相对位置。
  • 生存时间(Time to Live, TTL):占8位,定义数据报在网络中的最大存活时间,每经过一个路由器TTL减1,为0时数据报被丢弃。
  • 协议(Protocol):占8位,指出数据部分使用的上层协议,例如TCP(6)、UDP(17)。
  • 头部校验和(Header Checksum):占16位,用于校验首部是否有错误。
  • 源IP地址(Source Address):占32位(IPv4)或128位(IPv6),标识发送方的IP地址。
  • 目的IP地址(Destination Address):占32位(IPv4)或128位(IPv6),标识接收方的IP地址。
  1. 可变部分
  • 选项(Options):可选字段,允许IP数据报携带额外信息,如记录路由、时间戳等。这部分的长度可变,因此首部总长度会超过20字节。
  • 填充(Padding):为了保持首部为32位字节对齐,可能需要填充一些额外的0比特。

数据部分

  • 这是实际传输的数据,可以承载如TCP段或UDP数据报等上层协议的数据。其长度是可变的,取决于实际传输的需求,但总长度(首部加数据)不能超过最大传输单元(Maximum Transmission Unit, MTU)限制,否则需要进行分片处理。

在这里插入图片描述在这里插入图片描述

综上所述,IP数据报的格式设计旨在提供一种灵活且通用的封装机制,以支持不同类型的上层协议数据通过互联网进行传输。

IP数据报分片

IP数据报分片是网络层的一个重要机制,当一个IP数据报的大小超过了其即将穿越的网络路径中某段链路的最大传输单元(MTU)时,就需要进行分片。这个过程主要涉及以下几个方面:

  1. 目的: 分片的目的是确保大型的数据报能够适应各种网络链路的MTU限制,从而能够通过网络中的不同设备和链路进行传输。
  2. 过程: 分片通常发生在数据报的源节点或途经的任何需要分片的路由器上。源节点可以通过路径MTU发现(Path MTU Discovery)机制预先获知路径上的最小MTU以避免分片,但如果没有这样做或者路径MTU在传输过程中发生变化,路由器可能需要进行分片。
  3. 分片信息: 分片后的每个数据报片段都包含一个IP首部,其中的标识符(Identification)、标志(Flags)和片偏移(Fragment Offset)字段对于分片和重组至关重要。
  • 标识符:确保同一原始数据报的所有分片可以被识别并重新组合。
  • 标志:包括一个是否还可以继续分片的标志位(DF,Don’t Fragment)和一个更多分片(MF,More Fragments)的标志位,后者用来表明是否还有其他分片跟随当前分片。
  • 片偏移:指示该分片在原始数据报中的相对位置,单位为8字节。
  1. 重组: 分片的重组通常在数据报的目的地,即接收方的IP层完成。接收方根据标识符将属于同一数据报的分片收集起来,并根据片偏移重新排序,最终合并成原始的数据报。如果任何一片丢失,整个数据报将无法重组,这可能导致高层协议(如TCP)超时重传或ICMP错误消息通知发送方。
  2. 透明性: 对于传输层协议(如TCP和UDP)来说,分片和重组过程是透明的,它们看到的是完整的数据报。
  3. 潜在问题: 分片和重组增加了网络复杂性和延迟,且可能导致一些安全问题,如IP分片攻击。现代网络设计倾向于避免分片,例如通过使用路径MTU发现和设置DF标志来请求中间路由器不要分片,而是让源节点处理分片或使用更小的MTU值来传输数据。

在这里插入图片描述
在这里插入图片描述
举个例子:
在这里插入图片描述很明显,数据部分的长度超过了最大限制,如果准许分片的话,我们就要对它进行分片,除开头部的20字节,我们分隔,以1400为单位进行划分,然后加上原来的20字节的头部:
在这里插入图片描述
然后我们就要计算,这些分片的相对位置,用起始位置/8:
在这里插入图片描述
在这里插入图片描述
这里注意区分一下和其他字段的区别:
在这里插入图片描述

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

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

相关文章

实验六、IPv4 地址的子网划分,第 2 部分《计算机网络》

你有没有发现,困的时候真的清醒不了。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后,您应该能够确定给定 IP 地址和子网掩码的子网信息。 知道 IP 地址、网络掩码和子网掩码后,您应该能够确定有关该 IP 地…

SpringBoot实现参数校验拦截(采用AOP方式)

一、AOP是什么? 目的:分离横切关注点(如日志记录、事务管理)与核心业务逻辑。 优势:提高代码的可读性和可维护性。 关键概念 切面(Aspect):包含横切关注点代码的模块。通知&#xff…

【面试干货】索引的优缺点

【面试干货】索引的优缺点 1、创建索引可以大大提高系统的性能(**优点**)2、增加索引也有许多不利的方面(**缺点**) 💖The Begin💖点点关注,收藏不迷路💖 1、创建索引可以大大提高系…

LiDAR360MLS 7.2.0 雷达点云数据处理软件功能介绍

新增模块和功能: 支持手持、背包数据的解算 SLAM解算成功率提升 SLAM解算效率提升 采集端与后处理端保持一致 赋色优化 新增平面图模块 新增平面图全自动矢量化功能 新增平面图矢量一键导出DXF功能 新增平面图正射影像一键导出功能 支持交叉、垂直绘制 支…

添加west扩展命令

使用west工具的帮助命令,west -h,不仅可以列出west工具的内置命令,也可以列举当前工程中实现的扩展命令,如build,flash等。 本文将介绍如何添加扩展命令。 west扩展命令的位置通过以下方式查找: 1. 首先找…

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战

Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 目录 Python 机器学习 基础 之 【实战案例】轮船人员获救预测实战 一、简单介绍 二、轮船人员获救预测实战 三、数据处理 1、导入数据 2、对缺失数据的列进行填充 3、属性转换,把某些列的字符串值…

数组中寻找符合条件元素的位置(np.argwhere,nonzero)

今天遇到一个问题,就是寻找符合条件的元素所在的位置,主要使用np.argwhere和nonzero函数 比如给我一个二维数组,我想知道其中元素大于15的位置 方法1 import numpy as np exnp.arange(30) enp.reshape(ex,[3,10]) print(e) print(e>15…

南山代理记账,为您提供专业、高效的服务和全方位的支持

随着商业活动的不断深化和扩展,企业的会计工作越来越重要,而作为一家专业的代理记账公司,“南山代理记账”始终致力于为客户提供专业、高效的服务,帮助他们在经营过程中更好地管理和运用资金。 南山代理记账公司的服务范围广泛&am…

【日记】遇到了一个 “不愿睁眼看世界也没受过社会毒打” 的逆天群友(464 字)

正文 今天坐在柜台玩了一天手机…… 手机都玩没电了快。下午在劝一个群友睁眼看世界,实在劝不动。他真的太逆天了,我不清楚这么高学历的人,怎么能说出这么天真的话。逆天又离谱。 晚上的时间几乎全在做家务。平时晚上都是跳舞来着&#xff0c…

mac安装brew遇到的一些问题

mac终端执行命令/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”,无法建立连接或连接超时错误,错误信息如下: curl: (28) Failed to connect to raw.githubusercontent.com port 443 af…

标准价与移动平均价简介

一、移动平均价 移动平均价优点: a.移动平均价格可反应”实时的”加权平均价格,特别是物料价格涨跌幅度大时物料的价格不会被差异扭曲。 b.因为是基于交易的实时加权平均计算价格,一般情况下,移动平均价不产生差异,价格相对真实。 c.如果所有的物料都使用…

mqtt-emqx:keepAlive机制测试

mqtt keepAlive原理详见【https://www.emqx.com/zh/blog/mqtt-keep-alive】 # 下面开始写测试代码 【pom.xml】 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2…

Ubuntu项目部署

解压jdk tar -zxvf jdk-8u151-linux-x64.tar.gz 配置Java环境变量&#xff1a; vim ~/.bashrc export JAVA_HOME/root/soft/jdk1.8.0_151 export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH${JAVA_HOME}/bin:$PATH 设置环境变…

武汉理工大学 云计算与服务计算 期末复习

云计算与的定义 长定义是&#xff1a;“云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上&#xff0c;使各种应用系统能够根据需要获取计算力、存储空间和信息服务。” 短定义是&#xff1a;“云计算是通过网络按需提供可动态伸缩的廉价计算服务。 云计…

Lecture1——对最优化的介绍

一&#xff0c;简介——什么是最优化&#xff1f; 1&#xff0c;三种问题&#xff1a; 用80米的围栏尽可能的围成一个面积最大的矩形如何规划产品的生产&#xff0c;使得公司获得的利润最大给你一个图&#xff08;Graph&#xff09;&#xff0c;如何获得最短的距离 2&#xf…

MATLAB基础应用精讲-【数模应用】主成分(pca)分析(补充篇)(附MATLAB、R语言和python代码实现)

目录 前言 几个高频面试题目 主成分分析(PCA)与独立成分分析(ICA) 1. 技术背景 2. 主成分分析 3. 独立成分分析 算法原理 数据降维 PCA 涉及的主要问题 PCA 的优化目标 主成分分析(PCA)的基本思想 数学模型 协方差和散度矩阵 PCA的推导:基于最小投影距离 ​…

matlab BP神经网络

clear clc % 准备数据 inputs rand(10, 100); % 100组输入&#xff0c;每组10个特征 outputs rand(1, 100); % 100组输出&#xff0c;每组1个输出值 % 将数据分成训练集和测试集 trainRatio 0.8; valRatio 0.1; testRatio 0.1; [trainInd, valInd, testInd] divid…

数据结构笔记2 栈和队列

为什么在循环队列中&#xff0c;判断队满的条件是&#xff08;Q.rear1&#xff09;模maxqsize? 取模运算&#xff08;%&#xff09;在循环队列中起到关键作用&#xff0c;主要是因为它能确保索引值在数组的有效范围内循环。具体来说&#xff0c;取模运算有以下几个重要作用&am…

【Go语言精进之路】构建高效Go程序:了解切片实现原理并高效使用

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、切片究竟是什么&#xff1f;1.1 基础的创建数组示例1.2 基础的创建切片示例1.3 切片与数组的关系 二、切片的高级特性&#xff1a;动态扩容2.1 使用 append 函数扩容2.2 容量管理与性能考量2.3 切片的截取与缩容 三…

底板外设倒灌到处理器分析

在嵌入式系统中&#xff0c;底板外设通常与处理器通过各种接口&#xff08;如UART、SPI、I2C、GPIO等&#xff09;进行连接。这些外设可能包括传感器、执行器、存储器、通信模块等。倒灌是指当外设向处理器提供的信号电平超出了处理器能够接受的范围&#xff0c;导致处理器无法…