计算机网络 —— 网络层(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:
在这里插入图片描述
在这里插入图片描述
这里注意区分一下和其他字段的区别:
在这里插入图片描述

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

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

相关文章

Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端

Android14 WMS-窗口添加流程(一)-Client端-CSDN博客 Android14 WMS-窗口添加流程(二)-Server端-CSDN博客 经过上述两个流程后,窗口的信息都已经传入了WMS端。 1. ViewRootImpl#setView 在窗口添加流程(一)中,有这个方法: http://aospxref…

通过无障碍控制 Compose 界面滚动的实战和原理剖析

前言 针对 Compose UI 工具包,开发者不仅需要掌握如何使用新的 UI 组件达到 design 需求,更需要了解和实现与 UI 的交互逻辑。 比如 touch 事件、Accessibility 事件等等。 Compose 中对 touch 事件的处理和原理,笔者已经在《通过调用栈快…

C# 集成 C++ 的方法和实践 - P/Invoke(平台调用)- 1

环境: 1 P/Invoke(平台调用): C#可以通过P/Invoke调用C编写的DLL中的函数。 1.1 适用范围: P/Invoke 是一种在 C# 程序中调用非托管代码(如 C 动态链接库)的方式。这种方法适用于函数调用相对…

[职场] 美术指导的重要作用 #学习方法#笔记

美术指导的重要作用 美术指导是广告、电影、电视剧等创意作品中的一个重要角色,负责整体视觉风格和美术设计的指导和管理。 美术指导的目标是通过视觉表达来传达故事的情感、氛围和主题,以及塑造角色和场景的形象。 美术指导在创作过程中扮演着重要的角…

基于Java Mq的数据交换平台实现_设计消息的格式和内容

基于Java Mq的数据交换平台实现 目录概述需求: 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challen…

前端UI框架Element Plus 和 Ant Design Vue哪个好

Element Plus 和 Ant Design Vue 都是基于 Vue.js 的 UI 组件库,它们具备一系列可复用的组件和丰富的功能,并且是当前国内主流的两个 UI 组件库。 (1)Element Plus 是饿了么前端团队推出的开源项目,是对 Element UI 的…

一文搞懂Python的异常

人生之事,不如意者十之有九。 在编程中亦是如此。异常(Exception),遍布于程序各个角落,开发工作的大部分coding,都是为了应对和解决它。 概念 异常,简而言之,是程序在执行期间发生的非预期的、非正常的事件或情况。 举个实际生活的例子: 你周末出门买大龙虾,但当你…

Docker 管理 | 代理配置、内网共享和 Harbor 部署

唠唠闲话 在现代软件开发和运维中,容器技术已经成为构建、部署和管理应用程序的标准工具。然而,在实际操作中,我们常常需要面对一些常见的挑战,如容器访问外部资源的代理配置、内网环境下的镜像共享以及企业级镜像管理。 本教程…

[linux] makefilegdb理解

目录 Linux项目自动化构建工具-make/Makefile 背景 理解 依赖关系 依赖方法 原理 Linux调试器-gdb使用 背景 开始使用 Linux项目自动化构建工具-make/Makefile 背景 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工…

问题:脾梗塞时,下列情况最符合的是 #职场发展#知识分享#媒体

问题:脾梗塞时,下列情况最符合的是 A、脾肿大 B、脾区摩擦感 C、两者均有 D、两者均无 参考答案如图所示

[线程与网络] 网络编程与通信原理(六):深入理解应用层http与https协议(网络编程与通信原理完结)

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

Java Web学习笔记20——Ajax-Axios

Axios: 介绍:Axios对原生的Ajax进行封装,简化书写,快速开发。 官网:https://www.axios-http.cn Axios 入门: {}是Js的对象。 get的请求参数是在URL后面?和相关参数值。 post的请求参数是在请…

【设计模式】JAVA Design Patterns——State(状态模式)

🔍目的 允许对象在内部状态改变时改变它的行为。对象看起来好像修改了它的类。 🔍解释 真实世界例子 当在长毛象的自然栖息地观察长毛象时,似乎它会根据情况来改变自己的行为。它开始可能很平静但是随着时间推移当它检测到威胁时它会对周围的…

树莓派 5 AI 套件(Hailo)示例

系列文章目录 前言 欢迎访问 Hailo Raspberry Pi 5 示例库。本项目展示了在 Raspberry Pi 5 上演示 Hailo AI 处理器功能的各种示例。这些示例将帮助您开始在嵌入式设备上使用人工智能。更多信息,请访问 Hailo 官方网站和 Hailo 社区论坛。 一、如何设置 Raspberry…

问题:功夫菜产品的成本由哪几方面构成() #经验分享#其他

问题:功夫菜产品的成本由哪几方面构成() A.材料成本(标准投料2%损耗)包材成本直接人工费固定加工费 B.(材料成本包材成本)*(1加价率) C&#x…

【kubernetes】探索k8s集群的配置资源(secret和configma)

目录 一、Secret 1.1Secret 有四种类型 1.2Pod 有 3 种方式来使用 secret 1.3应用场景:凭据 1.4创建 Secret 1.4.1用kubectl create secret命令创建Secret 1.4.2内容用 base64 编码,创建Secret 1.4.2.1Base64编码 1.4.2.2创建YAML文件 1.4.2.3…

2021年vue面试题整理(万字解析)

一、对MVVM的理解 MVVM分为Model、View、ViewModel。 Model 代表数据模型,数据和业务逻辑都在Model层中定义;泛指后端进行的各种业务逻辑处理和数据操控,对于前端来说就是后端提供的 api 接口。 View 代表UI视图,负责数据的展示…

Windows系统中好用的闪迪U盘修复工具

本文向你介绍了一款简单好用的闪迪U盘修复工具,它可以帮助你轻松修复闪迪U盘的各种问题。该工具操作简单,能帮用户节省大量的时间和精力。 闪迪U盘损坏可以修复吗? “我有一只32GB的闪迪U盘出现了问题,可能是因为我在关机前将它强…

基于51单片机水塔水位控制系统

基于51单片机水塔水位控制 (仿真+程序) 功能介绍 具体功能: 1.用滑动变阻器模拟水位,ADC0809将模拟信号转换为数字信号; 2.LCD1602显示当前水位和水位阈值; 3.当水位超过设定阈值&#xff…

Linux系统之部署Blog-Index导航页

Linux系统之部署Blog-Index导航页 一、Blog-Index介绍1.1 Blog-Index简介1.2 Blog-Index特点1.3 Blog-Index使用场景 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍2.3 Yarn介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统是否安装yarn 四…