网际协议IP

news2024/11/27 22:29:40

网际协议IP

文章目录

  • 网际协议IP
    • @[toc]
    • 虚拟互联网
    • IP地址及其表示方法
      • 分类IP地址(两级)
      • 无分类编址 CIDR
        • 网路前缀
        • 地址块
        • 地址掩码
      • 子网划分(三级IP地址)
    • IP地址和MAC地址
    • 地址解析协议ARP
    • IP数据报的格式
      • IP数据报首部的固定部分中的各字段
      • IP数据报首部的可变部分
    • 分组转发算法
    • 网际层控制报文协议ICMP
      • ICMP的典型应用
        • Ping
        • Tracert
        • NQA
    • 参考

网际协议IP是TCP/IP体系中两个最主要的协议之一,也是最重要的互联网标准协议之一。

与IP协议配套使用的还有三个协议:

  • 地址解析协议 ARP (Address Resolution Protocol)
  • 网际控制报文协议 ICMP(Internet Control Message Protocol)
  • 网际组管理协议 IGMP(Internet Group Management Protocol)

IMG_20230214_142657_edit_15183420558619

在这一层中,IP经常要使用ARP这个协议。ICMPIDMP要使用IP协议。由于网际协议TCP/IP体系中的网络层常常被称为网际层IP层

虚拟互联网

一般来讲,将网络互联起来要使用一些中间设备。根据中间设备所在的层次,可用由以下四种不同的中间设备:

  1. 物理层:转发器(repeater)
  2. 数据链路层:网桥或称为桥接器(bridge)
  3. 网络层:路由器(router)
  4. 网络层以上:网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议的转换。

当中间设备时转发器或网桥时,这仅仅将一个网络扩大了,而从网络层的角度来看,这任然是一个网络,一般不称之为网络互联。

当许多计算机通过一些路由器进行互联。由于参加连接的计算机网络都使用相同的网际层协议(Internet Protocol),因此可以把参与互连以后的计算机网络看作是一个虚拟互连网络。所谓的虚拟网络就是逻辑互联网络,它的意思是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络

IP地址及其表示方法

IP地址现在由互联网名字和数字分配机构ICANN进行分配。

IP地址的编址方式经历了三个阶段:

  1. 分类的IP地址
  2. 子网的划分
  3. 构成超网 CIDR

按照灵活度排: 构成超网> 子网划分 > 分类IP地址。

因为,CIDR其实是进一步对子网划分的扩展,所有后面讲的话先讲CIDR,子网划分的部分自然也就清楚了。

IP地址的特点

  1. 每一个IP地址都由网络号和主机号两部分组成。这样做的好处时:① IP地址的管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络的单位自行分配。② 路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样子就可以使路由表中的项目数大幅度减少,从而减小了路由表所占用的存储空间以及查找路由表的时间
  2. 实际上IP地址是标志一台主机(或路由器)和一条链路的接口。当一台主机同时连接到两个网络时,这种主机称为多归属主机
  3. 按照互联网的观点,一个网络号是指具有相同网络号net-id的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络
  4. 在IP地址中,所有分配到网络号的网络(不管是范围很小的局域网,还是可能覆盖很大的地理范围的广域网)都是平等的。

分类IP地址(两级)

所谓的分类IP地址就是将IP地址划分为若干个固定类。每一类都由两个固定长度的字段组成,分别是网络号主机号。一台主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个IP地址在整个互联网范围内是唯一的。这种两级的IP地址可以记为:
I P 地址 : : = { < 网络号 > , < 主机号 > } IP地址 ::= \{ <网络号>, <主机号> \} IP地址::={<网络号>,<主机号>}
IMG_20230214_152202_edit_16516560859979

从上图中我们就可以比较清晰的看出,各类IP地址网络号和主机号的划分。

A类地址的网络号只有7位可以用,其中网络号全为0的IP地址表示“本网络”,网络号全为1即127(0111 1111)保留作为本地环回测试。因此A类地址可指派的网络号是126个( 2 7 − 2 2^7 - 2 272)。(计算其他类的网络数时不需要减2)

A类地址的主机号占3个字节。但全0和全1的主机号一般不指派。全0 的主机号表示该IP地址是“本主机”所连接到的单个网络地址。全1表示该网络上的所 2 24 − 2 2^{24} - 2 2242,即16777214.

IMG_20230214_161627_edit_19020814398138

无分类编址 CIDR

这种编址的方法的全名是 无分类域间路由选择 CIDR(Classless Inter-Domain Routing),其要点有以下三个。

网路前缀

CIDR中将网络号改称为“网络前缀”。CIDR的记法是:
I P 地址 : : = { < 网络前缀 > , < 主机号 > } IP地址 ::= \{ <网络前缀>,<主机号> \} IP地址::={<网络前缀>,<主机号>}
这里的网络前缀是可以在0-32之前取任意值,这是跟分类IP地址的最大区别。CIDR采用“斜线记法”,即在IP地址的后面加上斜线“/”,斜线的后面是网络前缀所占的位数。

地址块

CIDR把网络前缀都相同的所有连续的IP地址组成一个“CIDR地址块”。例如128.14.35.7/20,包含的网络前缀是20位,剩下的12位是主机号。那么对应的可指派的地址数就是 2 12 − 2 2^{12} - 2 2122

地址掩码

CIDR使用斜线记法可以让我们知道网络前缀的数值。为了让计算机能够识别网络地址是否相同,就要用到地址掩码掩码)。地址掩码又称为子网掩码。掩码其实就是IP对应的网络号的二进制位全为1,主机号对应的二进制位全为0.例如/20地址块的地址掩码就是:11111111 11111111 11111111 11110000 00000000。又如A类网络的地址掩码为 255.0.0.0或255.0.0.0/8。所以只要将子网掩码和IP地址相与,就可以得到网络号。

子网划分(三级IP地址)

子网的划分是在分类IP地址上做的一种扩展。换一种说法是将分类IP地址中的部分主机号,也看作是网络号的一部分(子网号)。子网的划分在应用的时候也需要使用到掩码,其用法跟CIDR中的一样。

image-20230214170854968

IP地址和MAC地址

IMG_20230214_172834_edit_20048984252148

MAC地址已固化在网卡上的ROM中,因此常常将MAC地址称为硬件地址物理地址。从层次上来看MAC地址是数据链路层的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用软件实现的)。当IP数据报插入到MAC帧以后,整个数据的IP数据就成为MAC帧的数据,因而在数据链路层看不到数据报的IP地址。

IMG_20230214_172843_edit_20070833465165

地址解析协议ARP

在实际应用中,我们经常会遇到这样一个问题:已经知道了一个机器的IP地址,需要找出其IP地址。地址解析协议ARP就是用来解决这个问题的。要注意的是ARP是解决同一个局域网上的主机或路由器的IP地址和MAC地址的映射问题。

地址解析协议ARP是在主机的ARP高速缓存中存放一个IP地址到MAC地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。

当主机A要向本局域网上的某台主机发送IP数据报,就先在其ARP告诉缓存中查看有无主机B 的IP地址。如果有就把查到的这个MAC地址写入到MAC帧,然后通过局域网把该MAC帧发送往此MAC地址。

如果无法在自己的ARP缓存中找到,则按照下图的方式找出主机B 的MAC地址。

IMG_20230214_190601_edit_22574295400200

IP数据报的格式

IP数据报格式示意图

一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。

IP数据报首部的固定部分中的各字段

  1. 版本 占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。IPv4的版本号即4.

  2. 首部长度 占4位,可表示的最大十进制数是15,首部长度字节所表示的数据单位是32字(即4字节)。因为IP首部的固定长度是20字节,因此此首部字段的最小值是5(即0101).当首部的值为15即(1111),表明IP首部的长度最大为60字节。

  3. 区分服务 占8位。只有当使用区分服务时,这个字段才起作用,在一般情况下都不使用这个字段。

  4. 总长度 总长度指的是首部和数据部分长度之和,单位是字节。因此数据报的最大长度为 2 16 − 1 = 65535 2^{16} - 1 = 65535 2161=65535字节。但这样长的数据报在现实中是极少遇到的。

    在IP层的下面每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元 MTU(Maximum Transfer Unit)。例如,最常用的以太网就规定其MTU值是1500字节。若传送的数据报长度超过数据链路层的MTU值,就会将过长的数据报进行分片处理。

  5. 标识(identification) 占16位。IP软件在存储器中位置一个计数器,每产生一个数据报,计数器就加1,并赋值给标识字段。相同标识字段的值使分片后的数据报片能正确地重装为原来的数据报

  6. 标志(flag) 占3位,但目前只有两位有意义。

    • 最低位 MF(More Fragment) MF = 1表示后面还有分片。反之则表示无分片。
    • 中间位 DF(Don’t Fragment) DF = 1表示不能进行分片。反之则表示可以分片。
  7. 片偏移 占13位。片偏移指出:较长的分组在分片或,某片在原分组中的相对位置(相对于用户数据字段的七点)。片偏移以8字节位偏移单位。也就是说,每个分片的长度一定是8字节的整数倍。为了更好地理解,可以看以下例子。要将数据部分长度位3800字节长的IP数据报进行分片,要求分片长度不超过1420字节的数据报片。IMG_20230214_194754_edit_23635147102122

    IMG_20230214_194858_edit_23681731421906

  8. 生存时间 占8位,生存时间字段常用的英文缩写是TTL(Time to Live),表明这是数据报在网络中的寿命。现在TTL的功能改为了“跳数限制”。路由器在每次转发数据报前就把TTL减1.若TTL值减小到零,就丢弃这个数据报,不再转发。因此现在TTL的单位是跳数。数据报在互联网中经过的路由器的最大数值是255,如果TTL初始设置为1说明这个数据报只能在本局域网中传送。

  9. 协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,让目标主机IP层知道应将数据部分上交给哪个协议进行处理。常用的协议如下:

    协议名ICMPIGMPIPTCPEGPIGPUDPIPv6ESPOSPF
    协议字段值12468917415089
  10. 首部检验和 占16位。这个字段只检验数据报的首部,但不包括数据部分。检验原理如下图:

在这里插入图片描述

  1. 源地址 占32位

  2. 目的地址 占32位

IP数据报首部的可变部分

IP数据报的可变部分从1个字节到40个字节不等。其中的内容其实就是选项字段,用来支持排错、测量以及安全等措施,内容很丰富。

分组转发算法

分组转发算法如下:

  1. 从数据包的首部提取目的主机的IP地址D,得出目的的网络地址为N。
  2. 若N就是与此路由器直接相连的某个网络地址,则直接交付,不需要再经过其他路由器,直接把数据交付给目的主机(这里包括把目的主机地址D转化为具体硬件地址,把数据报封装为MAC帧,再发送此帧,过程中不修改IP数据报中的IP地址);否则就是简介交付,执行3.
  3. 若路由表中由目的地址为D的特定主机路由,则把数据传送给路由表中所指明的下一跳路由器(这个也是通过ARP分装为MAC帧然后发送的);否则执行4.
  4. 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器;否则执行
  5. 若路由表中有一个默认路由,则把数据传送给路由表中的默认路由器;否则执行6
  6. 报告转发分组出错

网际层控制报文协议ICMP

在网际层中使用**网际控制报文协议ICMP(Internet Control Message Protocol)**有效地提高了转发IP数据报的成功交付机会。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文的格式如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C6uGaTbV-1676383164016)(https://download.huawei.com/mdl/image/download?uuid=1eb415d0e4c042c6a0743284dd2f6cf1)]

IMG_20230214_210706_edit_24499136421261

ICMP报文的包头中包含三个固定字段就是源端设备确定发生错误类型的主要依据:

  • 类型 表示ICMP消息的类型
  • 代码 表示ICMP消息类型细分的子类型
  • Checksum 表示ICMP报文的校验和

ICMP报文的类型有两种,分别是ICMP 差错报告报文ICMP询问报文。下面列出一些常见的ICMP报文类型值:

差错报告报文

类型的值ICMP报文的类型
3终点不可达
11时间超过
12参数问题
5改变路由

询问报文

类型的值ICMP报文的类型
0或8会送(Echo)请求或回答
13或14时间戳请求或回答

其中每类对应的type都有很多,如下图。这里就不列举出来了:

image-20230214212526511

ICMP的典型应用

IP数据报及其他应用程序通过ICMP报文可以实现多种应用,其中Ping程序和Tracert(Traceroute)程序最为常见。此外,在网络管理和监测中,网络质量分析NQA(Network Quality Analysis)技术更加充分应用了ICMP。

Ping

Ping程序是最常见的用于检测IPv4和IPv6网络设备是否可达的调试手段,它使用ICMP的echo信息来确定:

  • 远程设备是否可达;
  • 与远程主机通信的来回旅程(round-trip)的延迟;
  • 报文包的丢失情况。

Tracert

Tracert程序主要用于查看数据包从源端到目的端的路径信息,从而检查网络连接是否可用。当网络出现故障时,用户可以使用该命令定位故障点。

Tracert利用ICMP超时信息和目的不可达信息来确定从一个主机到网络上其他主机的路由,并显示IP网络中每一跳的延迟(这里的延迟是指:分组从信息源发送到目的地所需的时间,延迟也分为许多的种类——传播延迟、传输延迟、处理延迟、排队延迟等)。下图中利用tracert命令进行测试。

image-20230214213430136

NQA

网络质量分析NQA(Network Quality Analysis)是一种实时的网络性能探测和统计技术,可以对响应时间、网络抖动、丢包率等网络信息进行统计。NQA能够实时监视网络服务质量,在网络发生故障时进行有效的故障诊断和定位。

利用不同类型的ICMP报文,NQA实现了Ping和Tracert功能的扩展和增强,可以实现对网络运行状况的准确测试,输出统计信息。比如NQA的ICMP测试、ICMP Jitter测试和Trace测试等。

  • ICMP测试

    ICMP测试是通过发送ICMP Echo请求报文和Echo响应报文来判断目的地的可达性、计算网络响应时间及丢包率,从而清晰地反映出网络性能及畅通情况。ICMP测试提供类似于命令行下的Ping命令功能,但输出信息更为丰富。

  • ICMP Jitter测试

    ICMP Jitter测试是以ICMP报文为承载,通过记录在报文中的时间戳信息来统计时延、抖动、丢包的一种测试方法。Jitter(抖动时间)是指相邻两个报文的接收时间间隔减去这两个报文的发送时间间隔。

  • Trace测试

    NQA的Trace测试用于检测源端到目的端的转发路径,并沿该路径记录源设备到中间各个设备的时延等信息。Trace测试类似于Tracert命令功能,但输出信息更为丰富。每一跳信息中能够显示平均时延、丢包、最后一个包接收时间等信息。

参考

  • tracert原理
  • 《计算机网络 第7、8版》

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

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

相关文章

REDIS-雪崩、击穿、穿透

直接发车&#x1f697; 一.雪崩 1.触发原因 A.大量缓存数据在同一时间过期(失效) B.redis故障宕机 上述均导致全部请求去访问数据库&#xff0c;导致DB压力骤增&#xff0c;严重则导致数据库宕机/系统宕机 2.应对策略 不同触发原因&#xff0c;应对策略也不一致 应对A&a…

C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题

这是一个网友咨询的问题&#xff0c;说他想控制默认打开文件之后solidworks上方工具栏的当前激活标签页。 之前我们提到过,制作Solidworks的插件也会在上面增加一个标签页&#xff0c;用来放自己开发的命令&#xff0c;经常开发的人肯定会遇到有时候更新版本&#xff0c;或者标…

奥威软件宏昊化工启动BI项目,打造智能制造标杆

近日&#xff0c;中国纺织行业领先企业宏昊化工有限公司成功启动了与奥威签订的BI项目&#xff0c;期望通过BI的建立进一步提升企业数字化经营能力和核心竞争力。 奥威bi数据分析软件 在全球经济形势不明朗&#xff0c;国内外市场竞争加剧叠加疫情反复的情况下&#xff0c;化工…

初学vector

目录 string的收尾 拷贝构造的现代写法&#xff1a; 浅拷贝&#xff1a; 拷贝构造的现代写法&#xff1a; swap函数&#xff1a; 内置类型有拷贝构造和赋值重载吗&#xff1f; 完善拷贝构造的现代写法&#xff1a; 赋值重载的现代写法&#xff1a; 更精简的现代写法&…

1.5配置NBMA和P2MP网络类型

1.3.3实验5:配置NBMA和P2MP网络类型 1. 实验需求 控制OSPF DR的选举修改OSPF的网络类型2. 实验拓扑 配置NBMA和P2MP网络类型实验拓扑如图1-13所示。 图1-13 配置NBMA和P2MP网络类型 3. 实验步骤 帧中继的配置如图1-14和图1-15所示

软件测试——测试用例之场景法

一、场景法的应用场合 场景法主要用于测试软件的业务流程和业务逻辑。场景法是基于软件业务的测试方法。在场景法中测试人员把自己当成最终用户&#xff0c;尽可能真实的模拟用户在使用此软件的操作情景&#xff1a; 重点模拟两类操作&#xff1a; 1&#xff09;模拟用户正确…

仓库拣货标签应用案例

使用场景&#xff1a;富士康成都仓库 解决问题&#xff1a;仓库亮灯拣选&#xff0c; 提高作业效率和物料明晰展示仓库亮灯拣选使用场景&#xff1a;京东仓库 解决问题&#xff1a;播种墙分拣&#xff0c;合单拣货完成后按订单播种播种墙分拣使用场景&#xff1a;和尔泰智能料…

Ubuntu 20中安装SNAP

Ubuntu 20中安装SNAP0 前言1 下载SNAP安装包2 安装SNAP详细步骤0 前言 姊妹篇《Ubuntu 20中安装snaphu》 SNAP是欧空局领导开发的开源的遥感数据处理软件&#xff0c;主要支持欧空局的数据&#xff0c;如sentinel-系列等。SNAP下载官网&#xff1a;https://step.esa.int/main…

算法训练营 day46 动态规划 最后一块石头的重量 II 目标和 一和零

算法训练营 day46 动态规划 最后一块石头的重量 II 目标和 一和零 最后一块石头的重量 II 1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xf…

百度百科创建词条教程合集分享,赶紧收藏起来

每一个企业、品牌、人物、产品想要提升自己的知名度&#xff0c;都要创建一个属于自己的百度百科词条&#xff0c;互联网时代&#xff0c;百度搜索引擎的地位是不可撼动的&#xff0c;每天都有上亿的用户在百度上搜索相关内容&#xff0c;百度百科词条在网络营销中占据着举足轻…

Oracle对象——视图之简单视图与视图约束

文章目录什么是视图为什么会使用视图视图语法案例简单视图的创建更改数据基表&#xff0c;视图数据会变化么&#xff1f;更改视图数据&#xff0c;基表数据会变更么&#xff1f;带检查约束的视图结论创建只读视图&#xff08;MySQL不支持&#xff09;总结什么是视图 视图是一种…

【项目精选】高校固定资产管理系统(论文+视频+源码)

点击下载源码 随着计算机信息技术的发展以及对资产、设备的管理科学化、合理化的高要求&#xff0c;利用计算机实现设备及资产的信息化管理已经显得非常重要。 固定资产管理系统是一个单位不可缺少的部分。但一直以来人们使用传统的人工方式管理固定资产的信息&#xff0c;这种…

C++STL剖析(六)—— set和multiset的概念和使用

文章目录&#x1f31f; 前言&#x1f351; 树型结构和哈希结构&#x1f351; 键值对1. set的介绍和使用&#x1f351; set的模板参数列表&#x1f351; set的构造&#x1f351; set的使用&#x1f345; insert&#x1f345; find&#x1f345; erase&#x1f345; swap&#x1…

Java基础之异常

目录1 异常1.1 异常的概述1.2 常见异常类型1.3 JVM的默认处理方案1.4 编译时异常的处理方式1.4.1 异常处理之 try ... catch ... [ktʃ]&#xff08;捕获异常&#xff09;1.4.2 异常处理之 throws&#xff08;抛出异常&#xff09;1.5 Throwable 的成员方法1.6 编译时异常和运行…

H5 抽奖页面

好久之前就想去写一个这样的示例了&#xff0c;然后就忘了…&#x1f635; &#x1f600;效果 &#x1f587;在线链接 https://linyisonger.github.io/H5.Examples/?name./34.%E6%8A%BD%E5%A5%96%E9%A1%B5%E9%9D%A2.html &#x1f6a7; 图片可能会丢失&#xff0c;都是在网…

大尺度衰落与小尺度衰落

一. 大尺度衰落 无线电磁波信号在收发天线长距离&#xff08;远大于传输波长&#xff09;或长时间范围发生的功率变化&#xff0c;称为大尺度衰落&#xff0c;一般可以用路径损耗模型来描述&#xff0c;路径损耗是由发射功率在空间中的辐射扩散造成的&#xff0c;根据功率传输…

Hadoop开启Yarn的日志监控功能

1.开启JobManager日志 &#xff08;1&#xff09;编辑NameNode配置文件${hadoop_home}/etc/hadoop/yarn-site.xml和mapred-site.xml 编辑yarn-site.xml <!-- Site specific YARN configuration properties --> <configuration><property><name>yarn.…

如何排查网页在哪里发生了内存泄漏?

今天我们来学习用 devtool 的 Performance 和 Memory 工具来找出网页哪里发生了内存泄漏。 Performace 面板 首先我们打开浏览器的 devtool&#xff0c;选择 Performance&#xff08;性能&#xff09;面板&#xff0c;然后将 Memory 选项勾选上。不勾选的话&#xff0c;就不会…

火爆全网的ChatGPT,可以自己上手搭建了。

没有人不知道ChatGPT了吧&#xff1f; ChatGPT&#xff0c;发布于2022年11月30日&#xff0c;来自人工智能研究实验室OpenAI&#xff0c;是一款全新聊天机器人模型&#xff0c;一款人工智能技术驱动的自然语言处理工具。 5天用户破百万&#xff0c;2个月活跃用户破亿。ChatGP…

大学生常用python变量和简单的数据类型、可迭代对象、for循环的3用法

文章目录变量和简单的数据类型下划线开头的对象删除内存中的对象列表与元组debug三酷猫钓鱼记录实际POS机小条打印使用循环找乌龟可迭代对象&#x1f4d7;理解一&#x1f4d8;理解二2️⃣什么是迭代器✔️注意3️⃣迭代器对象4️⃣有关迭代的函数for循环的3用法&#x1f338;I …