计算机网络 网络层上 | 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个 27−2=126个,这里为什么要减去2呢,因为0000 000的网络号有特殊含义代表“本网络”,0111 1111的网络号代表环回测试
主机号个数: 2 24 − 2 2^{24}-2 224−2 为什么这里还要减2呢,因为全0是本网络,全1是所有的广播
对于B类地址,是网络号为16位的
总地址空间 2 30 2^{30} 230个
网络号个数: 2 14 2^{14} 214
主机号个数: 2 16 − 2 2^{16}-2 216−2
对于C类地址,是网络号为24位的
总地址空间 2 29 2^{29} 229个
网络号个数: 2 21 2^{21} 221
主机号个数: 2 8 − 2 2^{8}-2 28−2
以上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地址
相关文章:
计算机网络 网络层上 | IP数据报,IP地址,ICMP,ARP等
文章目录 1 网络层的两个层面2 网络协议IP2.1 虚拟互联网络2.2 IP地址2.2.1 固定分类编址方式2.2.2 无分类编制CIDR2.2.3 MAC地址和IP地址区别 2.3 地址解析协议ARP2.3.1 解析过程 2.4 IP数据报格式 3 IP层转发分组流程4 国际控制报文协议ICMP4.1 ICMP格式结构4.2 分类4.2.1 差…...
金智融门户(统一身份认证)同步数据至钉钉通讯录
前言:因全面使用金智融门户和数据资产平台,二十几个信息系统已实现统一身份认证和数据同步,目前单位使用的钉钉尚未同步组织机构和用户信息,职工入职、离职、调岗时都需要手工在钉钉后台操作,一是操作繁琐,二是钉钉通讯录更新不及时或经常遗漏,带来管理问题。通过金智融…...
服务器RAID配置及功能介绍
服务器RAID配置及功能介绍 一、RAID磁盘阵列详解1.RAID磁盘阵列介绍2.RAID 03.RAID14.RAID35.RAID56.RAID67.RAID 10总结阵列卡介绍 一、RAID磁盘阵列详解 1.RAID磁盘阵列介绍 ①是Redundant Array of lndependent Disks的缩写中文简称为独立冗余磁盘阵列。 ②把多块独立的物…...
vue + element 实现鼠标左右滑动效果
我用了element中的走马灯+overflow-x: auto; html (复制后格式化一下) <div class"scroll" id"entrance"><el-carousel height"150px" :autoplay"false" :loop"false" arrow&q…...
gitlab 安装
1.安装依赖 sudo apt updatesudo apt-get upgradesudo apt-get install curl openssh-server ca-certificates postfix安装gitlab curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash官网下载安装包 要选ubuntu focal 安…...
idea中定时+多数据源配置
因项目要求,需要定时从达梦数据库中取数据,并插入或更新到ORACLE数据库中 1.pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-…...
Python---多任务的介绍
1. 提问 利用现学知识能够让两个函数或者方法同时执行吗? 不能,因为之前所写的程序都是单任务的,也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行,要想实现这种操作就需要使用多任务。 多任务的最大好处是充分利用CPU资源&…...
Kubernetes 的用法和解析 -- 4
一.Deployment 资源详解 如果Pod出现故障,对应的服务也会挂掉,所以Kubernetes提供了一个Deployment的概念 ,目的是让Kubernetes去管理一组Pod的副本,也就是副本集 ,这样就能够保证一定数量的副本一直可用,…...
【fabrc.js】 操作鼠标自由绘制图形:矩形、圆形、直线等图形【画图功能】
前言: 在图形编辑器类型的项目当中,通过键盘触发想要绘制的图形类型,然后通过鼠标在fabric画布上自由绘制你想需要的内容。从画基本的矩形、圆形、直线、文本、三角形、折线等功能中,可以扩展出“钢笔path贝塞尔路径”、“多图形组…...
WPF 显示PDF、PDF转成图片
1.NuGet 安装 O2S.Components.PDFView4NET.WPF 2.添加组件 工具箱中,空白处 右键,选择项 WPF组件 界面,选择NuGet安装库对面路径下的 O2S.Components.PDFView4NET.WPF.dll 3.引入组件命名空间,并使用 <Windowxmlns"htt…...
CODESYS的Robotics_PickAndPlace_without_Depictor例程解释
1.简介 在CODESYS的例程中,有一个例程演示了如何控制delta机械手从一个移动的转盘中拾取一个工件(ring,圆环),然后放到移动的传送带上的托盘(cone,圆锥)中。这个例程在【C:\Program…...
通过全流量分析Web业务性能好坏
随着全球商业环境的不断发展和变化,业务性能的重要性愈发凸显。无论是传统实体企业还是纯线上企业,业务性能都是其核心竞争力和稳定运营的关键要素。良好的业务性能不仅可以提升客户满意度、增加市场份额,还可以降低成本、提高效率。 本文章…...
【C语言】自定义类型——枚举、联合体
引言 对枚举、联合体进行介绍,包括枚举的声明、枚举的优点,联合体的声明、联合体的大小。 ✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》 🎈跟着猪巴戒,一起学习C语言🎈 目录 引言 枚举 枚举…...
大模型自定义算子优化方案学习笔记:CUDA算子定义、算子编译、正反向梯度实现
01算子优化的意义 随着大模型应用的普及以及算力紧缺,下一步对于计算性能的追求一定是技术的核心方向。因为目前大模型的计算逻辑是由一个个独立的算子或者说OP正反向求导实现的,底层往往调用的是GPU提供的CUDA的驱动程序。如果不能对于整个计算过程学习…...
【密码学基础】Diffie-Hellman密钥交换协议
DH介绍 Diffie-Hellman密钥协议算法是一种确保共享密钥安全穿越不安全网络的方法。 这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥,然后可以用这个密钥进行加密和解密。 但是注意,这个密钥交换协议 只能用于密钥的交换,而…...
最新AI绘画Midjourney绘画提示词Prompt教程
一、Midjourney绘画工具 SparkAi【无需魔法使用】: sparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的…...
AI助力DevOps新时代
根据2023年Gitlab全球DevSecOps报告,62%使用AI和ML的开发人员表示他们正在使用AI来检查代码,而2022年这一比例只有51%。 人工智能在 DevOps 中的作用 虽然今年年初,随着GPT的爆火,AI技术逐渐深入人心,但在很早以前&…...
Spring之容器:IOC(2)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…...
Spring 依赖查找知识点总结
前言 源码在我github的guide-spring仓库中,可以克隆下来 直接执行。 我们本文主要来介绍依赖查找的使用示例 依赖查找 什么是依赖查找 依赖查找并不是 Spring 框架特有的概念,它是一种在软件开发中获取依赖对象的方式。它通常用于获取运行时需要的服…...
html5新增特性
对于这行代码,要写在html页面的最前端: <!DOCTYPE html> 为什么要写在前面? 这是声明,是html5的新特性 对于html4来说,它有三种声明格式,而html5只需要统一声明,用来告诉浏览器文档使用…...
4、APScheduler: 详解Scheduler种类用法、常见错误与解决方法【Python3测试任务管理总结】
调度器(Scheduler)是将其他组件绑在一起的关键。通常在应用程序中只运行一个调度器。应用程序开发者通常不直接处理作业存储(job stores)、执行器(executors)或触发器(triggers)。相反,调度器提供了适当的接口来处理所有这些。通过调度器配置作业存储和执行器,以及添…...
微服务实战系列之ZooKeeper(实践篇)
前言 关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验&a…...
C++ 开发中为什么要使用继承
为何继承 实验介绍 继承是 C++ 中的特性之一,使用继承能够有效减轻工作量,使得开发更加高效。 知识点 什么是继承为何继承继承的内容权限关键字什么是继承 生活中继承是指孩子继承父亲的财产等。C++ 使用了这一思想,却又与生活中的继承不一样。 在使用继承时,派生类是…...
2020蓝桥杯c组纸张大小
题目名字 纸张大小 题目链接 题意 给一张纸,通过不断折叠,求最终长宽,给十个数字,输入哪个数字就求哪次折叠的长宽,其实就是,每次折叠后长度的一半变为宽度,原来的宽度变成长度 思路 因为数字…...
【Image】图像处理
计算机视觉 CV Perception 如自动驾驶领域。 只要是从所谓的图像当中去抽取信息的过程,我们都叫做Perception。 视觉检测可以涵盖二维检测,如车辆、人和信号灯的检测。另外,还可以控制三维信息,直接在三维空间中操作数据。 SL…...
JAVA对文档加密
当 Word 文档中包含无法公开的机密信息时,我们可以对其进行加密,使其在没有密码的情况下无法打开。本文将向您介绍如何使用 Spire.Doc for Java 加密 Word 文档和移除 Word 密码保护。 加密 Word 文档删除 Word 密码保护 安装 Spire.Doc for Java 首先…...
EmbedAI:一个可以上传文件训练自己ChatGPT的AI工具,妈妈再也不用担心我的GPT不会回答问题
功能介绍: 个性化定制:提供灵活的训练选项,用户能够通过文件、网站、Notion文档甚至YouTube等多种数据源对ChatGPT进行训练,以满足不同领域和需求的个性化定制。广泛应用场景:ChatGPT支持多种用例,包括智能…...
runCatching异常捕获onSuccess/onFailure返回函数,Kotlin
runCatching异常捕获onSuccess/onFailure返回函数,Kotlin fun test(a: Int, b: Int) {runCatching {a / b}.onSuccess {println("onSuccess: $it")return ok(it)}.onFailure {println("onFailure: $it")return fail(it)} }fun ok(o: Any) {prin…...
IDEA报错处理
问题1 IDEA 新建 Maven 项目没有文件结构 pom 文件为空 将JDK换成1.8后解决。 网络说法:别用 java18,换成 java17 或者 java1.8 都可以,因为 java18 不是 LTS 版本,有着各种各样的问题。。...
使用动画曲线编辑器打造炫酷的3D可视化ACE
前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的。无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作。这涉及到物理引擎的计算和对动画效果的数学建模分析。一般来说,只…...
手机特效视频制作软件免费/百度seo排名软
https://m.toutiao.com/is/YrHdTrE/ 开窍问之答 - 今日头条...
模板网站的网站如何打开里面的其他网站/世界互联网峰会
二、什么是循环依赖 循环依赖直白点就是发生在两个类,你引用我,我引用你的状态,如图: 三、如果不依赖于Spring自己解决循环依赖如何解决 以上图为例,假设,我们能够创建完成AService之后,放置到…...
无代码企业网站开发/seo搜索引擎优化步骤
2019独角兽企业重金招聘Python工程师标准>>> 使用tg.config 访问app:main 区域的配置信息 retcode subprocess.call shellTrue 执行命令得到retcode genshi 需要 引入 外部命令 py: ... 转载于:https://my.oschina.net/u/186074/blog/113864...
西安网站优化效果/网站seo需要用到哪些工具
2019独角兽企业重金招聘Python工程师标准>>> 965. Univalued Binary Tree 题目链接 965. Univalued Binary Tree 题目分析 如果二叉树中所有节点的值都相同,那么该二叉树被称为单值二叉树。 当给定的二叉树是单值二叉树时返回true,否则返回fa…...
维度网络专业做网站/关键词调整排名软件
在数据库级别的权限,如果给一个用户CREATE权限的话,那么这个用户是这个时候就是看到这个数据库了。 grant create on suys.* to sec2192.168.124.13; 比如这个语句给sec2用户 create 权限在suys数据库上面。但是实际查询的时候可以看见 sec2192.168.12…...
知名企业排名/seo知识是什么意思
环路概述 路由环路是指因配置不当或路由协议收敛时出错,导致数据包在两台或多台路由器里被来回转发,最后TTL耗尽,不能到达目的地的一种故障。 实验拓扑 今天我们先通过一个小实验来演示下简单的环路现象,实验拓扑如下(…...