计算机网络第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)

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

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

相关文章

深度学习之基于Tensorflow卷积神经网络花卉识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法,它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…

libpthread.so.0: cannot open shared object file: No such file or directory

linux 系统下 /lib64/libpthread so 库文件千万不要修改,不然后果很严重,像我好奇把/lib64/libpthread-2.17.so 改成 libpthread-2.17.so.old,因为 libpthread.so 和 libpthread.so.0 都是软链接,最终链接到的是 libpthread-2.17…

Docker安装Minio(稳定版)

1、安装 docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data 2、访问测试 3、MinIO自定义Access和Secret密钥 要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为…

win10下.net framework 3.5 | net framework 4 无法安装解决方案

.net缺失解决方案 win10 .net framework 3.5组策略设置方案一方案二 win10 .net framework 4 参考文章 win10 .net framework 3.5 组策略设置 方案一 搜索组策略,依次展开“计算机配置”、“管理模板”,然后选择“系统”,找到指定可选组件…

SpringBoot整合Kafka (一)

📑前言 本文主要讲了SpringBoot整合Kafka文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…

安全好用的远程协同运维软件重点推荐-行云管家

对于运维小伙伴而言,一个安全好用的远程协同运维软件至关重要,不仅可以提高工作率,降低工作风险,还能快速解决运维难题。目前市面上远程协同运维软件品牌比较多,这里我们小编给推荐行云管家IT远程协同运维平台。 安全…

LeetCode 面试题 16.17. 连续数列

文章目录 一、题目二、C# 题解 一、题目 给定一个整数数组,找出总和最大的连续数列,并返回总和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。…

IDEA中配置Maven

一、Maven下载 首先我们进入maven官方网站,进入网页后,点击Download去下载 下载免安装版,解压即可,解压至磁盘任意目录,尽量不要取中文名如下图: 二、配置Maven环境变量 复制Maven所在的路径 D:\maven\apache-maven-3.6.3,此电脑右键选择属性->高级系统设置->环境…

UE5——源码阅读——100——渲染——高清截图

创建事件,用于代码的调试 获取当前客户端所属的World 标记是否在进行重入绘制 是否开始缓存区可视化转存帧,主要针对请求屏幕截图或电影转存 判断是否需要高清截图 这下面这个函数执行高清截图 是否需要缓存区的可视化转存 判断是否开始渲染 如果…

黑盒测试用例设计方法之等价类划分法

等价类划分法是一种典型的黑盒测试用例设计方法。采用等价类划分法时,完全不用考虑程序内部结构,设计测试用例的唯一依据是软件需求规格说明书。 等价类 所谓等价类,是输入条件的一个子集合,该输入集合中的数据对于揭示程序中的…

MySQL 排序,分组,Limit的优化策略

目录 1. MySQL 中的两种排序方式 2. 排序优化策略 2.1 对排序字段添加索引 2.2 可以和WHERT字段创建联合索引 2.3 优化 FilerSort 排序方式 3. 分组优化策略 3.1 能WHERE不HAVING 3.2 减少ORDER BY,GROUP BY,DISTINCT 3.3 遵照最左前缀法则 4.…

更新版PHP神算网八字算命星座解梦周易占卜程序源码/PC+H5移动端整站适配/PHP源码带手机版

源码简介: 这个是更新版PHP神算网八字算命星座解梦周易占卜程序源码,能够在PCH5移动端整站适配。作为H5付费算命PHP源码,八字算命网站源码,功能很多强大实用。 2023.3 更新记录: 1、更新了23年属相信息;…

pytorch实现 --- 手写数字识别

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在Pytorch&#xff…

海康威视解码器维修DS-6900系列DS-6916UD

海康威视解码器常见维修型号:DS-6916UD/DS-6901/DS-6904/DS-6908/DS-6910/DS-6912UD/6A16 DS-6A16UD 产品类型:视音频解码器纠错 I/O接口:输入 DVI-I纠错;输出 VGA,BNC纠错;音频输入 HDMI纠错 产品特性 …

安科瑞关于新能源电动汽车有序充电的对策-安科瑞黄安南

摘要 随着我国能源战略发展以及低碳行动的实施,电动汽车已逐步广泛应用,而电动汽车的应用非常符合当今社会对环保意识的要求,以及有效节省化石燃料的消耗。由于其没有污染排放的优点以及政府部门的关注,电动汽车将成为以后出行的…

【网络知识必知必会】聊聊数据链路层以太网

文章目录 前言1. 认识以太网2. 以太网帧格式已经有了ip地址, 为什么还要有 mac 地址呢?认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响 总结 前言 本文继续来聊聊网络传输中数据链路层中的一个代表协议, 以太网. 以太这个词其实最早出现在物理学当中, 在早…

基于SpringAOP实现自定义接口权限控制

文章目录 一、接口鉴权方案分析1、接口鉴权方案2、角色分配权限树 二、编码实战1、定义权限树与常用方法2、自定义AOP注解3、AOP切面类(也可以用拦截器实现)4、测试一下 一、接口鉴权方案分析 1、接口鉴权方案 目前大部分接口鉴权方案,一般…

HTML5的语义元素

HTML5语义元素&#xff1a; HTML5提供新的语义元素来明确一个web页面的不同部分&#xff1a;<head>、<nav>、<section>、<article>、<aside>、<figcation>、<figure>、<footer>。 1&#xff09;、<section>元素&#x…

dockerfile避坑笔记(VMWare下使用Ubuntu在Ubuntu20.04基础镜像下docker打包多个go项目)

一、docker简介 docker是一种方便跨平台迁移应用的程序&#xff0c;通过docker可以实现在同一类操作系统中&#xff0c;如Ubuntu和RedHat两个linux操作系统中&#xff0c;实现程序的跨平台部署。比如我在Ubuntu中打包了一个go项目的docker镜像&#xff08;镜像为二进制文件&am…