计算机网络第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来获取,所以我将所有的新闻放到一个数组中&…...

leetcode每日一题-周复盘
前言 该系列文章用于我对一周中leetcode每日一题or其他不会的题的复盘总结。 一方面用于自己加深印象,另一方面也希望能对读者的算法能力有所帮助。 该复盘对我来说比较容易的题我会复盘的比较粗糙,反之较为细致 解答语言:Golang 周一&a…...

[NLP] LlaMa2模型运行在Mac机器
本文将介绍如何使用llama.cpp在MacBook Pro本地部署运行量化版本的Llama2模型推理,并基于LangChain在本地构建一个简单的文档Q&A应用。本文实验环境为Apple M1 芯片 8GB内存。 Llama2和llama.cpp Llama2是Meta AI开发的Llama大语言模型的迭代版本,…...

基于若依的ruoyi-nbcio流程管理系统增加仿钉钉流程设计(六)
更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 这节主要讲条件节点与并发节点的有效性检查,主要是增加这两个节点的子节点检查,因为…...

听GPT 讲Rust源代码--library/std(15)
题图来自 An In-Depth Comparison of Rust and C[1] File: rust/library/std/src/os/wasi/io/fd.rs 文件路径:rust/library/std/src/os/wasi/io/fd.rs 该文件的作用是实现与文件描述符(File Descriptor)相关的操作,具体包括打开文…...

腾讯云CVM服务器操作系统镜像大全
腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像,公共镜像包含基础操作系统和腾讯云提供的初始化组件,公共镜像分为Windows和Linux两大类操作系统,如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…...

Mxnet框架使用
目录 1.mxnet推理API 2.MXNET模型转ONNX 3.运行示例 1.mxnet推理API # 导入 MXNet 深度学习框架 import mxnet as mx if __name__ __main__:# 指定预训练模型的 JSON 文件json_file resnext50_32x4d # 指定模型的参数文件params_file resnext50_32x4d-0000.params # 使…...

每个程序员都应该自己写一个的:socket包装类
每个程序员都应该有自己的网络类。 下面是我自己用的socket类,支持所有我自己常用的功能,支持windows和unix/linux。 目录 客户端 服务端 非阻塞 获取socket信息 完整代码 客户端 作为socket客户端,只需要如下几个功能: //…...

JMeter:断言之响应断言
一、断言的定义 断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。 对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行。但大部分是对Respons…...

RLHF的替代算法之DPO原理解析:从Zephyr的DPO到Claude的RAILF
前言 本文的成就是一个点顺着一个点而来的,成文过程颇有意思 首先,如上文所说,我司正在做三大LLM项目,其中一个是论文审稿GPT第二版,在模型选型的时候,关注到了Mistral 7B(其背后的公司Mistral AI号称欧洲…...

U盘显示无媒体怎么办?方法很简单
当出现U盘无媒体情况时,您可以在磁盘管理工具中看到一个空白的磁盘框,并且在文件资源管理器中不会显示出来。那么,导致这种问题的原因是什么呢?我们又该怎么解决呢? 导致U盘无媒体的原因是什么? 当您遇到上…...