计算机网络 网络层上 | IP数据报,IP地址,ICMP,ARP等

文章目录

  • 1 网络层的两个层面
  • 2 网络协议IP
    • 2.1 虚拟互联网络
    • 2.2 IP地址
      • 2.2.1 固定分类编址方式
      • 2.2.2 无分类编制CIDR
      • 2.2.3 MAC地址和IP地址区别
    • 2.3 地址解析协议ARP
      • 2.3.1 解析过程
    • 2.4 IP数据报格式
  • 3 IP层转发分组流程
  • 4 国际控制报文协议ICMP
    • 4.1 ICMP格式结构
    • 4.2 分类
      • 4.2.1 差错报告报文
      • 4.2.2 询问报文
    • 4.3 应用

以前人们想借鉴电信网(电话网络)成功的经验,尝试采用虚电路服务,让网络层负责可靠交付,通信之前先建立虚电路。但是互联网的先驱者们提出让网络层尽可能简单,即用网络层提供简单灵活的,无连接的,尽最大努力交付的数据报服务,这是因为考虑到互联网的终端都是有智能的计算机而不是简单的电话,所以终端有着很强的数据处理能力,那么也就不需要网络层来进行这部分的可靠交付了。

后来多年的实践证明,先驱者们的选择多么正确

(1)网络层简单使得网络中的路由器可以做得比较简单,价格低廉,因而易于拓展,便于大规模发展

(2)运行方式灵活,能够适应多种应用

1 网络层的两个层面

两个主机通信的时候,需要经过若干个路由器转发信息。

转发的信息实际就两大类:一是传送的数据(数据层面),二是路由信息(控制层面)

  • 数据层面的信息转发:只需要查找本路由器的路由表,把收到的分组从对应的接口发送出去,数据部分直接硬件转发,速度极快,为纳秒数量级
  • 控制层面的信息转发:路由器必须得经常和相邻的路由器交互路由信息更新自己的路由表,所以更为复杂,,软件介入转发,速度会慢了很多,为秒数量级

2 网络协议IP

IP是TCP/IP体系中最重要的两个协议之一

与IP协议配套使用的还有

地址解析协议ARP

网际控制报文协议ICMP

网际组管理协议 IGMP

如下图所示

在这里插入图片描述

我们会发现ICMP,IGMP协议在IP的上方,是因为这两个协议经常需要调用IP协议

而ARP协议在IP的下方,是因为IP协议需要经常调用ARP协议

在讨论网际协议IP前,必须先了解什么是虚拟互联网络

2.1 虚拟互联网络

我们知道网络是要将全世界五花八门的计算机互联在一起,这就需要解决很多问题,最首要的一个就是异构,差异性

比如:不同的寻址方案,不同的组大分组长度,比如不同的差错控制方案等等一大堆。

那么该怎么办呢?

先驱者们提出在网络层,通过IP协议来进行统一,就是不管你其他层的协议是什么,我的网络层大家都用IP协议,这样仿佛在网络层看起来是一个统一的网络,也就叫做我们的虚拟互联网络。

所以大家可以感受到IP协议的重要性了吧!!!之前我们讲的一些协议可能通用性并没有那么强,但IP是互联网每一个用户都得遵守的boss rules

一个在互联网上的设备必须有IP地址才能与其他设备进行通信,接下来我们来了解IP地址

2.2 IP地址

整个因特网看成是一个单一的,抽象的网络

IP地址就是给每一个连接在因特网上的主机分配一个在全世界范围是唯一的32位的标识符

2.2.1 固定分类编址方式

IP地址由网络号和主机号组成,又叫做两级IP——网络号+主机号

​ 网络号表示着主机所连接到的网络,主机号表示该主机(对路由器的话是路由器)

最开始的时候采用固定分类的IP地址,即网络号的位数是固定的(8位A类,16位B类和24位C类)

如何区分不同类别的地址呢?通过网络号的前缀,如下图

在这里插入图片描述

对于A类地址,是网络号为8位的

​ 总地址空间 2 31 2^{31} 231个 接近43亿

​ 网络号个数:由于A类地址网络号有7位,所以A类地址可以分配的网络号个数 2 7 − 2 = 126 个 2^7-2=126个 272=126,这里为什么要减去2呢,因为0000 000的网络号有特殊含义代表“本网络”,0111 1111的网络号代表环回测试

​ 主机号个数: 2 24 − 2 2^{24}-2 2242 为什么这里还要减2呢,因为全0是本网络,全1是所有的广播

对于B类地址,是网络号为16位的

​ 总地址空间 2 30 2^{30} 230

​ 网络号个数: 2 14 2^{14} 214

​ 主机号个数: 2 16 − 2 2^{16}-2 2162

对于C类地址,是网络号为24位的

​ 总地址空间 2 29 2^{29} 229

​ 网络号个数: 2 21 2^{21} 221

​ 主机号个数: 2 8 − 2 2^{8}-2 282

以上A,B,C类都是单播地址,而D类地址是多播地址

这样的好处是简单,看前缀就知道什么类型的地址了

缺点是:使用不灵活的问题

2.2.2 无分类编制CIDR

于是采用更为灵活的CIDR

上一个网络号位数是由类别决定的,每一个类别网络号位数是固定的,而CIDR的网络号位数是由掩码决定的,是可变的

之前的网络号在CIDR里更名为网络前缀

网络前缀可以通过斜线+数字表示,如/20

比如IP 128.14.32.7/20 我们可以知道 网络前缀20位,那么主机号30-20=12位!

人为可以看斜线数字,计算机怎么知道有多少位网络前缀呢?

通过子网掩码

如上述IP 128.14.32.7/20,有20个并列的1,12个并列的0组成掩码

其中1的个数代表网络号个数,0的个数代表主机号个数

我们将IP地址和子网掩码按位与,可以得到网络地址

有三个比较特殊的地址块

1 前缀n=32,用于主机路由

2 前缀n=31,用于点对点路由

3 前缀n=0,且所有主机号为0,用于默认路由

这些用途后面讲到

路由聚合——用较大的CIDR块替代较小的CIDR块,减少查找转发表的时间

2.2.3 MAC地址和IP地址区别

MAC地址是物理地址,硬件实现,在数据链路层,MAC帧首部

IP地址是逻辑地址,软件实现,在网络层,IP数据报首部

假设从A1,到B1,途径R1,R2两个路由器

IP数据报都不变,即IP首地址和源地址都是A1,B1

但MAC帧的首地址尾地址会发生变化,一开始A1,R1,然后R1,R2……

特殊IP地址

在这里插入图片描述

点分十进制记法

IP编址可以解决世界各地网络硬件地址差异大,转换工作复杂的问题

网络地址转换过程

​ 离开专用网的时候,替换源地址,将内部地址替换为全球地址

​ 进入专用网的时候,替换目的地址,将全球地址替换为内部地址

现在有一个问题,就是我们已经知道IP了,那么计算机怎么知道对应的MAC地址呢

这就涉及到地址解析协议ARP

2.3 地址解析协议ARP

已经知道了一个机器(主机或路由器)的IP地址,如何找出其响应的硬件地址

地址解析协议ARP就是用来解决这个问题的

方法:每一个主机都设有一个ARP高速缓存(ARP cache,作用存放最近获得的IP地址绑定的MAC地址,减少ARP广播数量)这里面存有所在局域网上的各个主机和路由器IP地址到硬件地址的映射表

<IP address; MAC address; TTL> TTL:地址映射有效时间

我们可以查看自己的电脑的ARP高速缓存,命令

arp -a|more

2.3.1 解析过程

先在ARP高速缓存中查看有无主机B的IP地址

​ 如果有,就可查出对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该硬件地址写入MAC帧,然后通过局域网发往硬件地址

​ 如果没有,ARP进程在本局域网上广播发送一个ARP请求分组,收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存

​ 不在同一个局域网的话,则交给一个路由器

​ 解析是自动进行的

2.4 IP数据报格式

首部和数据部组成,首部是固定长度,共20字节,是所有IP数据报必须拥有的

首部的固定部分的后面是一些可选字段,其长度是可以变的

固定字段的常见内容如下

版本,首部长度,区分服务,总长度,标识,标志

3 IP层转发分组流程

显示本机路由表 route print -4

IP层后转发分组都只找网络前缀了(这样就可以找到目的网络)因为直接如果找到主机号的地步,会需要大量的内容,主机数目实在太大了,查找过程就会非常缓慢……

所以就找前缀相同,看看是不是本网络如果不是的话则通过端口转发。如果有多个匹配的前缀,那么则选取最长的前缀

核心算法(默认前缀按长到短排序)

1 从数据报首部提取目的主机的IP地址D,得出目的网络的地址N

2 若网络N与此路由器直接相连,则把数据报直接交付目的主机D,否则是间接交付。执行3

3 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中下一跳的路由器,否则执行4

4 若路由表中有目的网络地址N的路由,则把数据报传送给路由表中下一跳的路由器,否则执行4

5 若路由表中有一个默认路由,则把数据报传送给路由表中指明的默认路由器,否则执行6

6 报告转发分组出错

特殊的路由

​ 主机路由和默认路由

而为了加快查找表的查找过程,又可以使用二叉线索查找转发表

为了更有效地转发IP数据报并且提高交付机会,使用ICMP协议

使用ICMP后,就可以运行主机或者路由器报告差错情况和提供有关异常情况的报告

4 国际控制报文协议ICMP

提高IP数据报的交付成功机会,允许主机或路由器报告差错情况和提供有关异常情况的报告,但是不是高层协议,ICMP报文是装到IP数据报的数据部分中的

是IP层协议

4.1 ICMP格式结构

在这里插入图片描述

ICMP报文的前四个字节是统一的格式,共有3个字段,即类型、代码、检验和

ICMP的应用举例

Ping

traceroute

4.2 分类

4.2.1 差错报告报文

在如下情况发送ICMP报文

​ 终点不可达

​ 源点抑制

​ 时间超过

​ 参数问题

​ 改变路由(重定向)

4.2.2 询问报文

ICMP报文的

4.3 应用

用ping命令测两个主机的连通性,其中ping是应用层直接使用网络层ICMP的一个例子

另一个例子是LInux的traceroute ,Windows下是tracert,可以知道到目的主机所经过路由器的IP地址

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

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

相关文章

学习MS Dynamics AX 2012编程开发 2. X++语言

X是用于构建Dynamics AX功能的编程语言。X是一种与C类似的面向对象编程语言。 完成本章后&#xff0c;您将能够理解X语言&#xff1b;您将知道可用的数据类型是什么&#xff0c;如何创建各种循环&#xff0c;如何比较和操作变量&#xff0c;在哪里可以找到预定义的函数&#x…

【Android逆向】记录一次某某虚拟机的逆向

导语 学了一段时间的XPosed&#xff0c;发现XPosed真的好强&#xff0c;只要技术强&#xff0c;什么操作都能实现... 这次主要记录一下我对这款应用的逆向思路 apk检查 使用MT管理器检查apk的加壳情况 发现是某数字的免费版本 直接使用frida-dexdump 脱下来后备用 应用分…

二叉树前,中序推后续_中,后续推前序

文章目录 介绍思路例子 介绍 二叉树是由根、左子树、右子树三部分组成。 二叉树的遍历方式又可以分为前序遍历&#xff0c;中序遍历&#xff0c;后序遍历。 前序遍历&#xff1a;根&#xff0c;左子树&#xff0c;右子树 中序遍历&#xff1a;左子树&#xff0c;根&#xff0…

菜鸟学习日记(python)——匿名函数

Python 使用 lambda 来创建匿名函数。 lambda 函数是一种小型、匿名的内联函数&#xff0c;它可以具有任意数量的参数&#xff0c;但只能有一个表达式。 匿名函数的一般格式如下&#xff1a; lambda 参数列表:表达式 表达式用于计算并返回函数结果 lambda 函数通常用于编写…

FreeRtos里的几个中断屏蔽

1、primask 寄存器 PRIMASK用于禁止除NMI和HardFalut外的所有异常和中断&#xff0c;使用方法&#xff1a; cpsid i &#xff1b; //设置primask &#xff08;禁止中断&#xff09; cpsie i ; //清除primask (使能中断) 也可以 movs r0,#1 msr primask r0; //将 1写入p…

C# WPF上位机开发(网络程序界面开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 之前我们讨论过&#xff0c;设备之间通讯的方式很多。但是&#xff0c;不知道大家有没有注意&#xff0c;前面谈到的这些通讯方式都需要上位机电脑…

华为云创新动能涌现,浒墅关开启先进制造新纪元

编辑&#xff1a;阿冒 设计&#xff1a;沐由 穿境而过的京杭大运河&#xff0c;孕育了苏州浒墅关深厚的历史文化底蕴。千年延续不断的繁华&#xff0c;滋养了一代又一代奋进的浒墅关人。今天&#xff0c;一座国家级经开区挺立在这里&#xff0c;散发出创新创业的蓬勃活力。 苏州…

WordPress如何搭建多站点

这边之前有讲到过wordpress站中站&#xff08;栏目站&#xff09;建站教程&#xff0c;同样的也有讲到过WordPress开启多站点配置&#xff0c;两种方法都是用来搭建子站点的&#xff0c;而开启多站点的方式不同于普通搭建站中站&#xff0c;多站点配置开启&#xff0c;是可以实…

STM32F407-14.3.18-01连接霍尔传感器

连接霍尔传感器 可通过用于生成电机驱动 PWM 信号的高级控制定时器&#xff08;TIM1 或 TIM8&#xff09;以及图 114 中称为 “接口定时器”的另一个定时器 TIMx&#xff08;TIM2、TIM3、TIM4 或 TIM5&#xff09;&#xff0c;实现与霍尔传感器的连接。3 个定时器输入引脚&…

【C语言】实战项目——通讯录

引言 学会创建一个通讯录&#xff0c;对过往知识进行加深和巩固。 文章很长&#xff0c;要耐心学完哦&#xff01; ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 实战 建…

C语言——完数难题(编程题目)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命如同寓言&#xff0c;其价值不在于…

【数据分享】2019-2023年我国区县逐年二手房房价数据(Excel/Shp格式)

房价是一个区域发展程度的重要体现&#xff0c;一个区域的房价越高通常代表这个区域越发达&#xff0c;对于人口的吸引力越大&#xff01;因此&#xff0c;房价数据是我们在各项城市研究中都非常常用的数据&#xff01;之前我们分享了2019—2023年我国区县逐月的二手房房价数据…

破译模式:模式识别在计算机视觉中的作用

一、介绍 在当代数字领域&#xff0c;计算机视觉中的模式识别是关键的基石&#xff0c;推动着众多技术进步和应用。本文探讨了计算机视觉中模式识别的本质、方法、应用、挑战和未来趋势。通过使机器能够识别和解释视觉数据中的模式&#xff0c;模式识别不仅推动了计算机视觉领域…

小程序商城活动页面怎么生成二维码

背景 小程序商城某些页面需要做成活动推广页&#xff0c;或需要某一个页面做成二维码进行推广。比如某些非公开的商品做成一个活动&#xff0c;发送指定部分用户&#xff0c;这个活动页面可以做成二维码。 前提 小程序已经上线 步骤 登录微信小程序官网&#xff0c;选择工具…

【i.MX6ULL】使用buildroot构建根文件系统

文章目录 前言1、下载源码2、构建根文件系统1. 配置buildroot2. 编译buildroot3. buildroot根文件系统测试 3、buildroot第三方软件和库的配置1. 使能 alsa-lib2. 使能 alsa-utils 4、 buildroot下的busybox配置1. busybox配置2. 使能常用命令 前言 本篇文章时参考的正点原子的…

嵌入式开发中的总线与时钟

总线 AHB总线 AHB的全称是"Advanced High-performance Bus",中文翻译就是"高级高性能总线"。这是一种在计算机系统中用于连接不同硬件组件的总线架构,它可以帮助这些组件之间高效地传输数据和信息。这个总线架构通常用于处理速度较快且对性能要求较高的…

设计模式详解---单例模式

1. 设计模式详解 单例模式是一种创建对象的设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点以获取该实例。 在单例模式中&#xff0c;类负责创建自己的唯一实例&#xff0c;并确保任何其他对象只能访问该实例。这对于需要共享状态或资源的情况非常有…

踩坑记录:java连接ssh的问题

目录 概述一、第一个问题解决 二、第二个问题分析解决 三、第三个问题分析解决 第四个问题解决 概述 手里有个CS架构的老系统&#xff0c;服务端要用SSH的方式传文件。没想到写了两天&#xff01;遇到一堆问题&#xff0c;于是记录下。&#xff08;老系统真恶心啊&#xff01;…

浮点数float类型不能用“==” 否知if语句不起作用

浮点数float类型不能用“” 否知if语句不起作用 简介演练 简介 在许多编程语言中&#xff0c;包括Python&#xff0c;浮点数类型&#xff08;float&#xff09;的比较是有问题的。浮点数是近似表示的&#xff0c;因此在比较两个浮点数是否相等时可能会遇到精度问题。 比如&am…

Linux(23):Linux 核心编译与管理

编译前的任务&#xff1a;认识核心与取得核心原始码 Linux 其实指的是核心。这个【核心(kernel)】是整个操作系统的最底层&#xff0c;他负责了整个硬件的驱动&#xff0c;以及提供各种系统所需的核心功能&#xff0c;包括防火墙机制、是否支持 LVM 或 Quota 等文件系统等等&a…