计算机网络 —— 网络层(IP数据报)
计算机网络 —— 网络层(IP数据报)
- 网络层要满足的功能
- IP数据报
- IP数据报格式
- IP数据报首部格式
- 数据部分
- IP数据报分片
我们今天进入网络层的学习。
网络层要满足的功能
网络层作为OSI模型中的第三层,是计算机网络体系结构的关键组成部分,其主要功能包括但不限于以下几点:
- 路由与转发:网络层负责决定数据包从源主机到目的主机的最佳路径。这一过程包括路由选择(Routing),即根据网络拓扑、链路状态、路由协议等信息计算路径;以及分组转发(Packet Forwarding),即路由器根据路由表将数据包从一个网络接口转发到另一个网络接口,直至到达目的地。
- 异构网络互联:网络层使得不同类型的网络(如以太网、Wi-Fi、卫星网络等)能够相互通信。通过使用网关和路由器等中间设备,网络层能够实现不同网络技术之间的桥接,保证数据可以在多样化的网络环境中无缝传输。
- 地址分配与寻址:网络层为每台主机分配逻辑地址(如IPv4或IPv6地址),这些地址用于在网络中唯一标识每一台设备。同时,它还负责将高层的逻辑地址转换为数据链路层的物理地址(MAC地址),以实现数据的实际传输(如通过ARP协议)。
- 拥塞控制:网络层需要监控网络的拥塞状况,当网络资源接近饱和时,采取措施如调整数据发送速率、丢弃某些数据包或采用其他策略,以防止网络性能严重下降,确保网络的稳定性和效率。
- 分片与重组:对于需要跨越多个网络传输且超过下一跳最大传输单元(MTU)的数据包,网络层负责将其分片并在目的地重新组装,确保数据完整性。
- 服务质量(QoS)管理:根据应用需求,网络层可以提供不同级别的服务,如优先级调度、带宽预留等,以保证关键业务的数据传输质量。
- 安全性:虽然安全性主要是传输层和应用层关注的焦点,但网络层也参与安全机制,如IPSec可以提供数据加密和身份验证,保护数据在传输过程中的安全。
综上,网络层是确保数据能够在复杂的网络环境中正确、高效、安全传输的基础,其功能直接影响到整个网络的性能和可靠性。
IP数据报
在这之前,我们来复习一下之前学的东西:
我们看到IP(网络层),占了很大一部分,其中IP向上为ICMP,TCP等提供服务,也为下面的ARP,数据链路层,和物理层服务。
我们来回忆一个数据如何被处理的:
在计算机网络中,数据从一个应用程序传输到另一个应用程序的过程中,需要经过OSI模型的多个层次,每个层次都有其特定的功能。以下是一个简化的描述,说明数据从应用层到物理层再到接收端反向过程中的每一层所做的主要事情:
- 应用层:
- 数据最初由用户在应用程序中生成,比如在浏览器中输入网址或在邮件客户端撰写邮件。
- 应用层协议(如HTTP、SMTP、FTP)负责将用户数据封装成应用层数据单元,并附加必要的控制信息,如头部信息,以供下一层处理。
- 传输层:
- 传输层(TCP或UDP)接收应用层的数据,并添加源端口号和目的端口号,用于标识发送方和接收方的进程。
- TCP提供可靠传输,包括错误检测、流量控制、拥塞控制和重传机制;UDP则提供无连接服务,不保证数据的可靠传输,但速度快。
- 网络层(IP层):
网络层接收传输层的数据单元,并封装成IP数据报
。它添加源IP地址和目的IP地址,以及其它必要的控制信息。- 网络层负责路由决策,决定数据报在网络中的传输路径,并进行分片和重组处理(如果需要通过不同MTU的链路)。
- 数据链路层:
- 数据链路层将网络层的IP数据报封装成帧。这包括添加帧头(包含源MAC地址和目的MAC地址)和帧尾。
- 它还执行差错检测(如CRC校验),流量控制,以及介质访问控制(如CSMA/CD、CSMA/CA)。
- 物理层:
- 物理层处理实际的比特流传输,将数据链路层的帧转换成电信号、光信号或无线信号等物理信号。
- 它定义了网络连接的物理特性,如电压、线缆类型、信号频率等,确保数据能在物理媒介上传输。
接收端的反向过程:
- 数据从物理层开始,逐层向上解封装,每一层去除对应的头部信息,并根据头部信息进行必要的处理(如错误检测、流量控制)。
- 最终,数据到达应用层,恢复成原始的应用程序数据,供接收方应用程序使用。
我们看到,网络层接收到上层的数据之后,把这些数据封装,形成IP数据报,然后向下传输。
IP数据报格式
IP数据报是Internet Protocol (IP)协议中数据传输的基本单元,它包括两个主要部分:首部(Header)和数据部分(Data)。
IP数据报首部格式
- 固定部分(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地址。
- 可变部分:
- 选项(Options):可选字段,允许IP数据报携带额外信息,如记录路由、时间戳等。这部分的长度可变,因此首部总长度会超过20字节。
- 填充(Padding):为了保持首部为32位字节对齐,可能需要填充一些额外的0比特。
数据部分
- 这是实际传输的数据,可以承载如TCP段或UDP数据报等上层协议的数据。其长度是可变的,取决于实际传输的需求,但总长度(首部加数据)不能超过最大传输单元(Maximum Transmission Unit, MTU)限制,否则需要进行分片处理。
综上所述,IP数据报的格式设计旨在提供一种灵活且通用的封装机制,以支持不同类型的上层协议数据通过互联网进行传输。
IP数据报分片
IP数据报分片是网络层的一个重要机制,当一个IP数据报的大小超过了其即将穿越的网络路径中某段链路的最大传输单元(MTU)时,就需要进行分片。这个过程主要涉及以下几个方面:
- 目的: 分片的目的是确保大型的数据报能够适应各种网络链路的MTU限制,从而能够通过网络中的不同设备和链路进行传输。
- 过程: 分片通常发生在数据报的源节点或途经的任何需要分片的路由器上。源节点可以通过路径MTU发现(Path MTU Discovery)机制预先获知路径上的最小MTU以避免分片,但如果没有这样做或者路径MTU在传输过程中发生变化,路由器可能需要进行分片。
- 分片信息: 分片后的每个数据报片段都包含一个IP首部,其中的标识符(Identification)、标志(Flags)和片偏移(Fragment Offset)字段对于分片和重组至关重要。
- 标识符:确保同一原始数据报的所有分片可以被识别并重新组合。
- 标志:包括一个是否还可以继续分片的标志位(DF,Don’t Fragment)和一个更多分片(MF,More Fragments)的标志位,后者用来表明是否还有其他分片跟随当前分片。
- 片偏移:指示该分片在原始数据报中的相对位置,单位为8字节。
- 重组: 分片的重组通常在数据报的目的地,即接收方的IP层完成。接收方根据标识符将属于同一数据报的分片收集起来,并根据片偏移重新排序,最终合并成原始的数据报。如果任何一片丢失,整个数据报将无法重组,这可能导致高层协议(如TCP)超时重传或ICMP错误消息通知发送方。
- 透明性: 对于传输层协议(如TCP和UDP)来说,分片和重组过程是透明的,它们看到的是完整的数据报。
- 潜在问题: 分片和重组增加了网络复杂性和延迟,且可能导致一些安全问题,如IP分片攻击。现代网络设计倾向于避免分片,例如通过使用路径MTU发现和设置DF标志来请求中间路由器不要分片,而是让源节点处理分片或使用更小的MTU值来传输数据。
举个例子:
很明显,数据部分的长度超过了最大限制,如果准许分片的话,我们就要对它进行分片,除开头部的20字节,我们分隔,以1400为单位进行划分,然后加上原来的20字节的头部:
然后我们就要计算,这些分片的相对位置,用起始位置/8:
这里注意区分一下和其他字段的区别:
相关文章:
计算机网络 —— 网络层(IP数据报)
计算机网络 —— 网络层(IP数据报) 网络层要满足的功能IP数据报IP数据报格式IP数据报首部格式数据部分 IP数据报分片 我们今天进入网络层的学习。 网络层要满足的功能 网络层作为OSI模型中的第三层,是计算机网络体系结构的关键组成部分&…...
Clo3D导出服装动画,使用Unity3D展示
1.前言 Clo3D是一款应用于时装行业的3D服装设计软件,其强大的布料模拟算法可在3D空间中实现设计、制版、试衣和走秀,大幅提升数字作品逼真度和制作效率。为了让服装动画效果展示在Unity3D上模拟效果,需要Clo3D模拟出逼着的衣服动画。总体流程为Clo3D - Mixamo -Blen…...
LSTM 词语模型上的动态量化
原文链接 (beta) Dynamic Quantization on an LSTM Word Language Model — PyTorch Tutorials 2.3.0cu121 documentation 引言 量化涉及将模型的权重和激活值从浮点数转换为整数,这样可以缩小模型大小,加快推理速度,但对准确性的影响很小…...
STM32 proteus + STM32Cubemx仿真教程(第一课LED教程)
文章目录 前言一、STM32点亮LED灯的原理1.1GPIO是什么1.2点亮LED灯的原理 二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写1.LED灯操作函数介绍HAL_GPIO_WritePin函数原型参数说明示例代码 HAL_GPIO_TogglePin函数原型参数说明示例代码 2.代码编写3.烧写程序 总…...
享元模式
前言 享元模式:运用共享技术有效地支持大量细粒度的对象。 在享元对象内部并且不会随环境改变而改变的共享部分,可以称为是享元对象的内部状态,而随环境改变而改变的、不可以共享的状态就是外部状态了。事实上,享元模式可以避免大…...
R语言数据分析16-针对芬兰污染指数的分析与考察
1. 研究背景及意义 近年来,随着我国科技和经济高速发展,人们生活质量也随之显著提高。但是, 环境污染问题也日趋严重,给人们的生活质量和社会生产的各个方面都造成了许多不 利的影响。空气污染作为环境污染主要方面,更…...
Search用法Python:深入探索搜索功能的应用与技巧
Search用法Python:深入探索搜索功能的应用与技巧 在Python编程中,搜索功能是一项至关重要的技能,它能够帮助我们快速定位并处理数据。然而,对于初学者来说,如何高效地使用搜索功能可能会带来一些困惑。本文将从四个方…...
STM32的FreeRtos的学习
首先就是去官网下载一个源文件:FreeRtos官网 下载下来的是一个zip文件,解压缩了。 然后再工程文件夹中创建个文件夹: 在这个文件夹中创建3个文件夹: 然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中࿱…...
从零入手人工智能(2)——搭建开发环境
1.前言 作为一名单片机工程师,想要转型到人工智能开发领域的道路确实充满了挑战与未知。记得当我刚开始这段旅程时,心中充满了迷茫和困惑。面对全新的领域,我既不清楚如何入手,也不知道能用人工智能干什么。正是这些迷茫和困惑&a…...
Web前端指南
前言 前端开发员主要负责网站的设计、外观和感觉。他们设计引人入胜的在线用户体验,激发用户兴趣,鼓励用户重复访问。他们与设计师密切合作,使网站美观、实用、快捷。 如果您喜欢创造性思维、打造更好的体验并对视觉设计感兴趣,这将是您的理想职业道路。 探讨前端、后端以…...
AI菜鸟向前飞 — LangChain系列之十七 - 剖析AgentExecutor
AgentExecutor 顾名思义,Agent执行器,本篇先简单看看LangChain是如何实现的。 先回顾 AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇) AI菜鸟向前飞 — LangChain系列之十五 - Agent系列&#…...
nodejs 第三方库 exiftool-vendored
exiftool-vendored 是一款可以帮助你快捷修改图片信息的第三方库。如果你想要批量修改图片信息的话,那么它是一个不错的选择。 1.导入第三方库 在控制台中执行下面代码即可。 npm install exiftool-vendored --save2.获取信息 这里给出例子。 const { exiftool …...
docker部署redis实践
1.拉取redis镜像 # 拉取镜像 sudo docker pull redis2.创建映射持久化目录 # 创建目录 sudo mkdir -p $PWD/redis/{conf,data}3. 运行redis 容器,查看当前redis 版本号 # 运行 sudo docker run --name redis -d -p 6379:6379 redis # 查看版本号 sudo docker ex…...
Web前端学习之路:深入探索学习时长与技能进阶的奥秘
Web前端学习之路:深入探索学习时长与技能进阶的奥秘 在数字化时代,Web前端技术成为了连接用户与互联网世界的桥梁。对于初学者来说,学习Web前端究竟需要多久,以及如何高效掌握相关技能,一直是困扰他们的难题。本文将从…...
如何不用命令创建用户
都有哪些操作: 1、在/etc/passwd添加一行 2、在/etc/shadow添加一行 3、在/etc/group添加一行 4、创建用户家目录 5、创建用户邮件文件 例如: 创建用户jerry 要求: uid:777 主组:hadoop(800)…...
基于Python实现可视化分析中国500强排行榜数据的设计与实现
基于Python实现可视化分析中国500强排行榜数据的设计与实现 “Design and Implementation of Visual Analysis for China’s Top 500 Companies Ranking Data using Python” 完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现 文章目录 基于Python实现…...
VUE3 学习笔记(13):VUE3 下的Element-Plus基本使用
UI是页面的门面,一个好的UI自然令人赏心悦目;国人团队开发的ElementUI在众多UI中较为常见,因此通过介绍它的使用让大家更好的了解第三方UI的使用。 安装 Npm install element-plus --save 或 Cnpm install element-plus --save 配置 全局配置…...
MySql数据库安全加固
设置密码复杂度策略 查看密码策略 SHOW VARIABLES LIKE validate_password%; 设置密码策略 INSTALL PLUGIN validate_password SONAME validate_password.so; 设置登陆失败策略 安装插件(谨慎操作,可能会导致数据库卡死) install plug…...
Nginx(title小图标)修改方法
本章主要讲述Nginx如何上传网站图标。 操作系统: CentOS Stream 9 首先我们bing搜索ico网站图标在线设计,找到喜欢的设计分格并下载。 是一个压缩包 然后我们上传到nginx解压 [rootlocalhost html]# rz[rootlocalhost html]# unzip favicon_logosc.z…...
iOS 17.5中的一个漏洞
i0S 17.5中的一个漏洞 iOS 17.5中的一个漏洞会使已刚除的照片重新出现,并目此问题似乎会影响甚至已擦除并出售给他人的 iPhone 和 iPad. 在2023年9月,一位Reddit用户根据Apple的指南擦除了他的iPad,并将其卖给了一位朋友。然而,这…...
如何在 iPhone 上恢复已删除的短信
本文介绍如何检索已删除的短信和 iMessage 以及恢复丢失的消息。说明适用于 iOS 17 及更高版本。 如何在 iOS 17及更高版本中恢复文本 恢复已删除短信的最简单方法是使用 iOS 17。从删除短信到恢复它有 30 到 40 天的时间。 在“信息”的对话屏幕中,选择“过滤器”…...
矩阵练习1
73.矩阵置零 这道题相对简单。 首先我们需要标记需要置零的行和列,可以在遍历矩阵中的元素遇到0,则将其行首和列首元素置为0。在此过程中首行、首列会受影响,因此先用两个变量记录首行、首列是否需要被置0,接着遍历非首行、非首…...
【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-09 1…...
Linux网络安全
文章目录 一、网络安全概述二、常用服务端口三、 ping命令的使用3.1、ping命令的简单概述3.2、ping命令的使用 四、资源限制4.1、查看系统资源限制4.2、临时修改资源限制4.3、永久修改资源限制 五、网络安全服务工具介绍5.1、ClamAV5.2、Nmap5.3、Wireshark5.4、Netcat5.5、Sno…...
Django 视图类
在Django框架中,视图类(Class-based views,简称CBVs)提供了一个面向对象的方式来定义视图。这种方式可以让你通过创建类来组织视图逻辑,而不是使用基于函数的视图(Function-based views,简称FBV…...
【Java面试】十七、并发篇(上)
文章目录 1、synchronized关键字的底层原理:Monitor2、synchronized相关2.1 为什么说synchronized是重量级锁2.2 synchronized锁升级之偏向锁2.3 synchronized锁升级之轻量级锁 3、Java内存模型JMM4、CAS4.1 CAS流程4.2 CAS底层实现 5、volatile关键字的理解5.1 可见…...
七天进阶elasticsearch[one]
elasticSearch 概述 Elasticsearch是一个近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个很小的延迟(通常是一秒) 集群 一个集群就是由一个或多个节点组织在一起, 它们共同持有你全部的数据&#x…...
全新抖音快手小红书视频解析去水印系统网站源码
这个系统支持几十种平台,包括抖音、快手小红书以及其他热门社交媒体平台。它可以帮助轻松地下载这些平台上的任何视频,并去除其中的水印,让你可以自由地保存和分享这些视频。 使用方法: 上传压缩包解压,网站信息在inc…...
图解 Python 编程(12) | 文件和编码方式
🌞欢迎来到Python 的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年6月9日&am…...
CSDN个人主页动态地图(前端/后端)
前段时间有人问我,关于CSDN个人主页动态地图的实现,我来解答一下。 这里要注意一下:使用CSDN的API需要遵循其开发者协议和使用规范,确保你的使用方式符合相关规定 前端部分: 创建一个HTML页面作为个人主页。在页面上放…...
北碚区网站建设/厦门人才网最新招聘信息网
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用…...
wordpress当前文章tags/自动的网站设计制作
危言 对金融危机最普遍的官方解释是次贷问题,然而次贷总共不过几千亿,而美国政府救市资金早已到了万亿以上,为什么危机还是看不到头?有文章指出危机的根源是 金融机构采用“杠杆”交易;另一些专家指出金融危机的背后是…...
懂的建设网站/企业网站排名优化方案
实验报告课程Java语言程序设计实验名称第八章 Swing图形用户界面程序设计实验任务(三)第页专业班级学号__ __ 姓名实验日期:2010 年11 月9 日报告退发(订正、重做)一、实验目的?布局管理器的使用二、实验环境1、微型计算机一台2、DOS或WINDOWS操作系统,…...
沧州市做网站价格/2023年的新闻十条
声明:本文引用吴恩达教授的DeepLearning课程内容。 滑动窗口法的卷积实现虽然效率更高,但仍然存在问题,不能输出最精准的边界框。因为滑动窗口法中,取这些离散的位置集合并不能完全匹配目标大小、位置。 其中一个能得到更精准边界…...
广州网站建设培训/游戏优化软件
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码zxing 条码二维码azetec 条码二维码maxicode 自动完成 翻页page 公告管理 小元宵活动刮刮卡 小元宵活动闸金蛋 小元宵活动…...
做网站所需要的代码6/流量平台有哪些
前面在“数字调制系列:IQ 基本理论”一文中介绍了 IQ 的概念、常用数字调制方式及映射星座图等内容,当完成数字比特流到 IQ 坐标系的映射后,便可以得到数字 I 和 Q 信号,然后分别经过 DAC 变换为模拟 I 和 Q 信号,最后…...