计算机网络第4章-IPv4

news2024/11/24 14:25:43

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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

apache-tomcat-9.0.29 安装配置教程

链接:https://pan.baidu.com/s/100buXYpn8w8xjI2KdvHk2Q?pwd2mwc 提取码:2mwc 1.将压缩包解压到指定文件夹下 2.进入bin文件夹下 3.找到setclasspath.bat文件 4.推荐用notepad打开文件,并做如下配置(可解决tomcat启动闪退问题&…

No Presto metadata available for docker-ce-stable

Linux CentOS中执行Docker一键安装脚本报错: No Presto metadata available for docker-ce-stable 执行以下命令可以解决,整个过程比较耗费时间,请耐心等待。 yum install docker-ce -y

reactor(百万并发服务器) - 2

这是连续剧般的文章,请关注,持续更新中... 系列文章: http://t.csdnimg.cn/Os83Qhttp://t.csdnimg.cn/Os83Q这篇文章将我们的reactro转变成http服务器... HTTP HTTP介绍 HTTP是一个基于TCP通信协议的基础上的应用层协议。接下来我们需要解析HTTP请求消息…

【一、http】go的http基本请求方法

1、http的基本请求 package mainimport ("bytes""fmt""io""net/http""net/url" )func post(){r, err : http.Post("http://httpbin.org/post", "", nil)if err ! nil {fmt.Println("ss")}de…

[动态规划] (八) LeetCode 931.下降路径最小和

[动态规划] (八) LeetCode 931.下降路径最小和 文章目录 [动态规划] (八) LeetCode 931.下降路径最小和题目解析解题思路状态表示状态转移方程初始化和填表顺序返回值 代码实现总结 931. 下降路径最小和 题目解析 (1) n*n的整型数组 (2) 找出下降路径最小和 (3) 下降路径&am…

听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)相关的操作,具体包括打开文…

3款免费又好用的 Docker 可视化管理工具

前言 Docker提供了命令行工具(Docker CLI)来管理Docker容器、镜像、网络和数据卷等Docker组件。我们也可以使用可视化管理工具来更方便地查看和管理Docker容器、镜像、网络和数据卷等Docker组件。今天我们来介绍3款免费且好用的 Docker 可视化管理工具。…

【基础IO⑧】:文件描述符fd(进程与文件的联系)

【基础IO⑧】:进程与文件之间的联系(文件描述符fd) 一.前言探讨[进程与文件关系]二.C语言文件操作三.系统文件调用1.open/write 四.文件描述符fd 一.前言探讨[进程与文件关系] 我们首先了解一些基本的认识: 1.文件包括文件内容和文件属性 2.…

YOLO目标检测——真实道路车辆检测数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用:自动驾驶技术研发、交通安全监控数据集说明:真实道路车辆检测数据集,真实场景的高质量图片数据,数据场景丰富标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(j…

STM32 IAP应用开发--bootloader升级程序

STM32 IAP应用开发--bootloader升级程序 Chapter1 STM32 IAP应用开发——通过串口/RS485实现固件升级(方式2)前言什么是IAP?什么是BootLoader? 方案介绍:1)bootloader部分:2)APP部分…

verilog 每日一练- 移位寄存器

module shift_1x64 (clk, shift,sr_in,sr_out,);input clk, shift;input sr_in;output sr_out;reg [63:0] sr;always(posedge clk)beginif (shift 1b1)beginsr[63:1] < sr[62:0];sr[0] < sr_in;endendassign sr_out sr[63];endmodule 这个Verilog模块 shift_1x64 实现了…

《算法通关村—迭代实现二叉树的前序遍历》

《算法通关村—迭代实现二叉树的前序遍历》 利用递归进行二叉树的前序遍历是非常容易的几行代码就能解决。但是你知道如何用迭代实现吗&#xff1f; 理论上来说能够用递归解决的都能用迭代解决&#xff0c;我们就来试试用迭代解决二叉树的前序遍历问题吧。 什么是前序遍历&a…

Photoshop 2023 v24.7

Photoshop是一款强大的图像编辑软件&#xff0c;被广泛应用于图像处理、图形设计、数字绘画等领域。它提供了丰富的图像编辑功能&#xff0c;可以用于调整图像的色彩、亮度、对比度等&#xff0c;添加特效、滤镜&#xff0c;以及进行复杂的图像合成和修复。 以下是Adobe Photo…

内存学习(2):内存分类与常用概念2(SDRAM与DDR)

SDRAM与DDR的简单概念介绍 SDRAM 定义&#xff1a; 同步动态随机存取内存&#xff08;Synchronous Dynamic Random-Access Memory&#xff0c;简称SDRAM&#xff09;是有一个同步接口的动态随机存取内存DRAM&#xff08;可以参考前文&#xff09;。可以理解为是一种利用同步…

Linux网络编程03

select的缺陷 &#xff08;1&#xff09;fd,set的本质是一个位图&#xff0c;容量是固定的1024&#xff0c;因此最大只能监听1024个连接 &#xff08;可以扩容&#xff09; &#xff08;2&#xff09;监听和就绪用的是同一个数据结构&#xff0c;使用困难 &#xff08;3&#x…

Nacos2.2.3版本运行startup.cmd出现闪退,无错误信息解决方法

Nacos2.2.3版本运行startup.cmd出现闪退&#xff0c;无错误信息解决方法 一、问题描述二、解决方法 一、问题描述 当我下载好nacos2.2.3版解压之后&#xff0c;直接双击startup.cmd出现闪退&#xff0c;而且 没有错误提示信息。后来经过一番搜索尝试&#xff0c;终于解决了自己…

InnoDB中Buffer Pool详解

1. 概念及特点 Buffer Pool 是 MySQL 中 InnoDB 存储引擎用来缓存表数据和索引数据的内存区域。这个内存区域被用来存储磁盘上的数据页的副本&#xff0c;这样常用的数据可以在内存中快速被访问&#xff0c;而不必每次都从磁盘中读取。 以下是 Buffer Pool 的一些重要特点&a…

kali Linux中更换为阿里镜像源

准备&#xff1a; kali Linux 阿里源链接 deb kali安装包下载_开源镜像站-阿里云 kali-rolling main non-free contrib deb-src kali安装包下载_开源镜像站-阿里云 kali-rolling main non-free contrib 配置&#xff1a; 打开kali 终端输入&#xff1a;sudo nano /etc/apt…

2023.11.5 关于 Spring 创建 和 使用

目录 创建 Spring 项目 1.创建 Maven 项目 2.添加 Spring 依赖 将 Bean 对象存储到 Spring 容器中 创建 Bean 存储 Bean ApplicationContext 获取 Bean BeanFactory 获取 Bean ApplicationContext 和 BeanFactory 的区别 获取 Bean 的三种方式 根据 Bean id 获取…

基于8086电压表系统仿真系统设计

**单片机设计介绍&#xff0c;1665基于8051单片机与1601LCD的计算器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 一个基于8086的电压表系统仿真系统可以分为硬件和软件两部分。 硬件部分包括输入设备&#xff08;例如模拟…