计算机网络第4章-IPv4
IPv4数据报格式
IPv4数据报格式如下图所示
其中,有如下的关键字段需要特别注意:
版本(号):
版本字段共4比特,规定了数据报的IP协议版本。通过查看版本号吗,路由器能确定如何解释IP数据报的剩余部分。不同的IP版本使用不同的数据报格式。
首部长度:
因为一个IPv4数据报可包含一些可变数量的选项(这些选项包括在IPv4数据报首部中。)
故需要这4比特来确定IP数据报中载荷实际开始的地方(也就是数据开始的地方,从第几个自己开
始是数据)。大多数的IP数据报中不包含选项,故一般的IP数据报具有20字节的首部。
服务类型:
服务类型(TOS)比特包含在IPv4首部中,以便使不同的IP数据报能够相互区别开来(TCP/UDP)。
数据报长度:
这是IP数据报的总长度(首部加上数据),以字节计算。该字段长为16比特,故IP数据报的最大理论长度为65535(2的16次方-1)。
然而,数据报很少有超过1500字节的。
标识、标志、片偏移:
这三个字段与IP分片有,但是IPv6不允许分片。
寿命(TTL):
该字段用来确定一个数据报在网络中存在的时间,每当一个路由器处理一次该数据报,TLL就减
一,当TTL等于0时,数据报就会被丢弃。
协议:
该字段通常仅当一个IP数据报到达目的地的时候才会有用,该字段指示了IP数据报的数据部分应当
交给哪一个运输层协议。
例如,值为96交给TCP,值为17交给UDP。
首部检验和:
首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。
源和目的IP地址:
当某源生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入最终目的地
的地址。
选项:
选项字段允许IP首部被扩展。
数据(有效载荷):
传输的数据。
IPv4数据报分片
数据报分片的由来
在后面,我们将会知道链路层协议承载的网路层分组的长度是不一样的,我们把一个链路层帧能承
载的最大数据量叫作最大传送单元(MTU)。
因此,我们需要对IP数据报进行合理的切片,以便数据报在任何链路层上都能被运输。
数据报切片的具体过程
现在我们假设,一个端系统接收到了很多个小的切片。
端系统该怎么将这些切片合理的分组并且拼接到一起呢?
IP数据报的标识字段,用来确定那些数据报切片是同一个原始数据报的。
发送主机发送的每一个数据报都会有一个标识,标识是依次加1的。
当某路由器需要对一个数据报切片时,形成的每一个小的数据报都具有相同的源地址和目的地址,
并且具有相同的一个标识,因此标识相同的小数据报就是一个源数据报的。
IP数据报的标志字段,用来确定某个小的数据报切片是某个源数据报切片后生成众多小小数据报的
最后一个。
例如某个数据报被分成了N片,则前面的N-1片的标志比特都是1,而最后一个片的标志比特是0,
用来表示该片是最后一片。
IP数据报的片偏移字段,用来确定某个数据报切成的片中,有没有一些片丢失。
IPv4编址
主机与路由器连入网络的方法
一台主机通常只有一条链路连接到网络,当主机中的IP想发送一个数据报时,它就在该链路上发
送。
主机与物理链路之间的边界叫作:“接口”(interface)
一台路由器有多条链路,因此路由器有多个接口,路由器与它的任意一条链路之间的边界也叫作接口。
IP要求每台主机和路由器接口拥有自己的IP地址。
因此,从技术上讲,一个IP地址与一个接口相关联,而不是与包括该接口的主机或路由器相关联。
IPv4的具体编址原理
每个IP地址长度为4字节,因此共有2的三十二次方个可能的ip地址(40亿个)。
这些地址通常按所谓“点分十进制记法”书写。
即地址中的每个字节用它的十进制形式书写,各字节间以句点隔开。
例如:IP地址:193.32.216.9,
其中,193是该地址的第一个8比特的十进制等价数,32是该地址的第二个8比特的十进制等价数。
因此,193.32.216.9的二进制记法是:
“11000001 00100000 11011000 00001001”
在全球因特网的每台主机和路由器上的每个接口,都必须有一个全球唯一的IP地址(NAT后的接口
除外)。
而一个接口的地址的一部分,需要由其连接的子网来确定。
下面是一个IP编址与接口的例子:
在上图中,这七台主机通过一个路由器进行互联,该路由器有三个接口(223.1.1.4、223.1.2.9、
223.1.3.27)。
其中,最左边的三台主机,它们的IP地址是“223.1.1.xxx”开头的地址。
因此包括最左边的三个主机和一个223.1.1.4的路由器接口通过一个并不包含路由器的网络互联起
来。
(在此情况下,该网络可能是由一个以太网LAN互联或者一个无线接入点互联)
用IP的术语来说,互联这三个主机接口和一个路由器接口的网络形成一个子网(subnet)。(在某
些地方,子网也被称为IP网络或直接称为网络。)
IP编址为这个子网分配一个地址223.1.1.0./24。
其中的/24记法,有时称为:“子网掩码”(networkmask),指示32比特中的最左侧24比特定义了
子网地址。
因此子网223.1.1.0/24由三个主机接口和一个路由器接口组成,任何其他要连到223.1.1.0/24网络的
主机都要求其地址具有223.1.1.xxx的形式。
下图是另外两个子网
下面我们更为深入的讨论子网掩码:
对上图而言,我们有几个子网呢?
首先,是三个路由器和主机之间的子网(223.1.1.0/24、223.1.2.0/24、223.1.1.3.0/24)
此外,还有三个路由器和路由器之间的子网:
(223.1.7.0/24、223.1.8.0/24、223.1.9.0/24)
因此,我们有了一个更为精确地系统中的子网定义:
“分开主机和路由器的每个端口,产生几个隔离的网路岛,使用接口端连接这些隔离的网络的端
点。这些隔离的网络中的每一个都叫做一个子网”。
因特网的地址分配策略被称为无类别域间路由选择(CIDR)。
CIDR将子网寻址的概念一般化了。当使用子网寻址时,32比特的IP地址被划分为两部分,并且也
具有点分十进制形式a.b.c.d/x,其中x指示了地址的第一部分中的比特数。
形式为a.b.c.d/x的地址的x最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀
(prefix)(或网络前缀)。
一个组织通常被分配一块连续的地址,即具有相同前缀的一段地址。
此外,还有一种特殊类型的IP地址,即IP广播地址:255.255.255.255。
当一台主机发送一个目的地址为255.255.255.255的数据报时,该报文会交付给同一个网络中的所
有主机。
路由器也会有选择地向邻近的子网转发报文。(虽然通常不这样做。)
路由聚合、地址聚合、路由摘要
这是一个ISP将8个组织连接到因特网的例子,它也很好地说明了仔细分配CIDR 化的地址有利于路
由选择的道理。
如下图,假设该ISP (我们称之为Fly- By-Night-ISP) 向外界通告,它应该发送所有地址的前20比特
是200. 23. 16. 0/20类型的数据报。
外界的其他部分不需要知道在地址块200. 23. 16. 0/20内实际上还存在8个其他组织,其中每个组
织有自己的子网°这种使用单个网络前缀通告多个网络的能力通常称为
地址聚合(address aggregation )
也称为路由聚合(route aggregation )
或者路由摘要(routesummarization)
相关文章:

计算机网络第4章-IPv4
IPv4数据报格式 IPv4数据报格式如下图所示 其中,有如下的关键字段需要特别注意: 版本(号): 版本字段共4比特,规定了数据报的IP协议版本。通过查看版本号吗,路由器能确定如何解释IP数据报的剩…...

Transformer的最简洁pytorch实现
目录 前言 1. 数据预处理 2. 模型参数 3. Positional Encoding 4. Pad Mask 5. Subsequence Mask 6. ScaledDotProductAttention 7. MultiHeadAttention 8. FeedForward Networks 9. Encoder Layer 10. Encoder 11. Decoder Layer 12. Decoder 13. Transformer 1…...
【嵌入式开发学习】__u-boot和bootloader到底有什么区别?
目录 前言 一、Bootloader 二、uboot 1. 硬件管理 2. 能够完成镜像烧录(刷机) 3. uboot的“生命周期” 4. uboot要提供命令式shell界面 三、bootloader 与 uboot的区别 (* ̄︶ ̄)创作不易!期待你们的 点赞、收藏…...

什么是影子IT,涉及哪些风险
影子 IT 是组织内使用的软件、硬件或服务,不为组织的 IT 部门所知,也不受其监控,这相当于员工使用未经授权的资源操作并行 IT 设置。影子 IT 的使用很容易危及组织的 IT 安全,由于这些未经批准的应用程序在 IT 部门的监视下溜走,它…...

数据库脚本执行工具
一、功能介绍 很多系统运行都依托数据库,不少IDE让开发实现快速开发的同时,也提供了方便快捷的打包工具。例如: Visual Studio集成的 Install Shield、Wix Toolkit; Android Studio 集成的 Gradle 等等,这些集成的打包工具&…...

构建数字孪生的四大挑战
如果不能解决由数字孪生带来的开发难题,那么企业就无法享受这种技术便利。 数字孪生已经成为企业当前面对的一大机遇,其核心在于利用虚拟副本中的分析数据对未来业务事件开展预测。这不仅能够大大降低决策难度,同时也有助于提升决策效果。 然…...

二进制代码反汇编逆向工具:IDA Pro(WinMac)v7.7 汉化版
IDA Pro是一款交互式的、可编程的、可扩展的、多处理器的、交叉Windows或Linux WinCE MacOS平台主机来分析程序。它被公认为最好的花钱可以买到的逆向工程利器,已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。 IDA Pro的特点主要包括…...
Android Studio开发(开篇)
前言 感谢哔站博主“白头Teacher”的“Android Studio-APP开发基础教程”教学视频。通过视频学习使我有了很好入门基础知识,后面我又通过搜集相关知识,并做了一些自主项目来巩固。 环境准备 1. 安装java开发工具包(JDK,即java开发环境),并配置…...

HarmonyOS列表组件
List组件的使用 import router from ohos.routerEntry Component struct Index {private arr: number[] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]build() {Row() {Column() {List({ space: 10 }) {ForEach(this.arr, (item: number) > {ListItem() {Text(${item}).width(100%).heig…...
使用vscode + lldb + codelldb调试可执行程序
主要是lauch.json的编写 // filename: lauch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid830387"version": …...
Redis Functions 介绍(二)
首先,让我们先回顾一下上一篇讲的在Redis Functions中关于将key的名字作为参数和非key名字作为参数的区别,先看下面的例子 首先,我们先在一个Lua脚本文件mylib.lua中定义如下的库和函数 //--------------------mylib.lua 文件开始 --------…...

R语言环境下使用curl库做的爬虫代码示例
curl库是一个用于传输数据的工具和库,它支持多种协议,包括HTTP、FTP、SMTP等。在爬虫中,curl库可以用来获取网页内容,从而实现爬取网页的功能。通过设置curl的选项,可以实现对网页的请求、响应、重定向等操作。在使用c…...

【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation
【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation 文章目录 【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation1. 来源2. 介绍3. 前置工作3.1 序列推荐的目标3.2 数据增强策略3.3 序列推荐的不变对比学习 4. 方法介绍4…...

智行破晓,驭未来航程!——经纬恒润智能驾驶数据闭环云平台OrienLink重磅来袭
2023是被AI技术标记的⼀年。年初,OpenAI的GPT崭露头角;6月,Tesla在CVPR2023上对World Model进行深度解读;8月,SIGGRAPH见证GH200、L40S显卡和ChatUSD的登场,FSD V12彰显端到端智能驾驶的实力;9月…...

深入理解WPF中的依赖注入和控制反转
在WPF开发中,依赖注入(Dependency Injection)和控制反转(Inversion of Control)是程序解耦的关键,在当今软件工程中占有举足轻重的地位,两者之间有着密不可分的联系。今天就以一个简单的小例子&…...

【CIO人物展】国家能源集团信息技术主管王爱军:中国企业数智化转型升级的内在驱动力...
王爱军 本文由国家能源集团信息技术主管王爱军投递并参与《2023中国数智化转型升级优秀CIO》榜单/奖项评选。丨推荐企业—锐捷网络 大数据产业创新服务媒体 ——聚焦数据 改变商业 随着全球信息化和网络化的进程日益加速,数字化转型已经成为当下各大企业追求的核心…...

(后续补充)vue+express、gitee pm2部署轻量服务器
首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 首先 防火墙全部关闭算了 关闭防火墙 systemctl stop firewalld 重新载入防火墙使设置生效 firewall-cmd --reload 后端的 pm2.config.cjs …...

第G7周:Semi-Supervised GAN 理论与实战
🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍦 参考文章:365天深度学习训练营-第G7周:Semi-Supervised GAN 理论与实战(训练营内部成员可读) 🍖 原作者:K同学啊|接…...

美国Embarcadero产品经理Marco Cantù谈Delphi/C++ Builder目前开发应用领域
美国Embarcadero产品经理Marco Cant 日前在欧洲的一次信息技术会议上谈到了Delphi/C Builder目前开发应用领域:RAD Studio Delphi/C Builder目前应用于哪些开发领域?使用 Delphi 和 CBuilder 进行开发为当今众多企业提供了动力。 航空航天 大型数据采集 …...

【iOS】——知乎日报第三周总结
文章目录 一、获取新闻额外信息二、工具栏按钮的布局三、评论区文字高度四、评论区长评论和短评论的数目显示五、评论区的cell布局问题和评论消息的判断 一、获取新闻额外信息 新闻额外信息的URL需要通过当前新闻的id来获取,所以我将所有的新闻放到一个数组中&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
验证redis数据结构
一、功能验证 1.验证redis的数据结构(如字符串、列表、哈希、集合、有序集合等)是否按照预期工作。 2、常见的数据结构验证方法: ①字符串(string) 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...
C++ 类基础:封装、继承、多态与多线程模板实现
前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…...