【计算机网络】IP协议

2023-09-22 15:24:33

TCP与 IP之间的关系

如:假设 你上高中时,班里有个同学叫张三,他的老爹是学校的校长
你感觉每次考试都有考100分的能力
有能力并不意味着百分百一定能做到
有能力指的是有较大概率


若想让张三每次考试 都是 百分百 满分
考了几次,其中有一次考了99,不是满分,张三就去找他老爹,他老爹不满意张三没有考满分
所以跟张三说,单独给你考,直到考到满分
因为他老爹认为张三有很大概率考到满分,所以每次就要保证百分百考到满分

张三与校长父亲组合起来,就能保证每次考试都能考满分
真正参与考试的是张三
校长父亲进行了考试控制,为张三考试提供了策略


IP协议提供一种能力,将数据从主机A 跨网络 送到主机B的能力
IP协议提供的是有较大概率
但是 用户要的百分百能够做到
所以就需要 TCP 和 IP 组合
TCP可以看作是 校长父亲 ,提供传输策略
IP可以看作是 张三,提供真正进行转发报文时的执行

TCP将报文将给IP,IP若出现丢包的情况,则TCP就会重新向上交付

TCP 和 IP 组合 表示 将数据 从主机A 可靠的跨网络 送到主机B

IP地址的认识

如:你要去北京玩,但实际上是去北京的天安门广场 去玩
当你在长春,你可以说去北京玩,但当你到达北京后,就要确认去天安门广场

所以一般要说去哪里玩时,应该先到景点所在的城市,然后再到达景点

IP地址 等于 目标网络 加 目标主机

协议报头格式

1. 报头和有效载荷如何分离?

IP中存在 20位的标准长度
存在 4位首部长度, 表示 整个报头的长度
4位首部长度 的基本单位是4字节

提取报文的前20个字节(前20个字节一定是标准报头)
在提取首部长度字段
根据首部长度字段* 4 减去20字节
若为0,说明没有选项,报文就是标准报头,直接读取有效载荷即可
若不为0,剩下几个字节,就说明有几个字节的选项,整个报文长度 减去 标准报头以及 选项长度
即可获得 有效载荷

2. 8位协议

8位协议 表示 有效载荷是什么报文 即有效载荷向哪一个协议交付

3. 4位版本

IP协议报头中存在4位版本,一般表示为IPV4(以4字节 32个比特位 表示 IP地址用来标识全球唯一的互联网主机)

4. 8位服务类型

如:张三要去考试, 校长父亲要求考满分,同时张三向他父亲询问 这次考试是想卷面最整齐,还是第一个交卷

IP是给TCP提供服务的,当TCP要IP把数据发送时,IP询问TCP 是向尽快把数据交付,还是发送数据时,挑一条不会丢包的路径
提供什么样的服务类型

8位服务类型 对应不同种类的IP的传送策略

其中3位优先权字段被弃用,4位服务类型(TOS)字段 和 1位保留字段(必须置为0)
4位服务类型 分别表示: 最小延时、最大吞吐量、最高可靠性、最小成本

5. 16位总长度

表示 整个报文(报头+有效载荷)的长度


4位首部长度 和 标准20字节长度 可以将一个保文的标准报头和选项分离出
再使用 16位总长度,就可以将报头和有效载荷分离

6. 8位生存时间 TTL


若将数据从主机B送到主机C,当路由器D发生故障时,导致路由器D并没有把数据交给主机C
使路由器D交给路由器I
路由器I 将数据交给 路由器J,路由器J 将数据交给 路由器H,路由器H 将数据交给 路由器C,
最后路由器C 又将数据交给 路由器D,从而造成环路问题

TTL: 该报文,在转发过程中,最多经历的路由器的次数

每经历一次 路由器 ,TTL就减一
当TTL减到0时,表示报文不能再被转发了,若此时没有到达,则该报文直接被丢弃

网段划分

有一天,张三在散步,结果捡到一个钱包,里面有一个学生证,但是上面只能看见一串学号
所以张三只知道钱包上面有学号,只能通过学号来寻找丢失钱包的主人
但是一个人一个人去找效率太低了

钱包上的学号具有唯一标识,一个人一人去问学号,就是在遍历学校的所有人
但一次排除一个人,所以导致效率低下

张三就可以看作报文 ,钱包为目的IP地址,丢失钱包的人可以看作 目标主机
若报文将数据交给目标主机,若在全网中根据目的IP地址一个一个去问,效率也会非常低下


每一个学院都有自己的群,而每一个学院都有自己的院学生会主席,这些院学生会主席之间也有一个群
张三属于计算机学院的学生,计算机学院的编号为10,他属于该学院的210,他的学号为10210
全校没有任何一个同学的学号是一样的
假设捡到的钱包的学号为 12003
张三不打算自己找了,就拍了张照片,并发到计算机学院的群里
计算机院的学生会主席了解每个学号前的数字表示那个学院的,所以就发现丢失钱包的人为化工学院
就把照片 转发到 学生会主席群里,通知对应的化工的学生会主席

此时化工的学生会主席发现就是他们院的同学丢的,就把照片转发到了化工院的群里,通知003号同学

在这个过程中,归还的效率提高了,因为这次不是以个人来寻找的,而是以群为单位来寻找的
查找的本质是排除的过程,选择一个群,就是排除了其他的所有群,查找效率大大提高了


学号 可以看作 IP地址
群 可以看作 子网,院学生会主席 可以看作 路由器
学生会主席群 可以看作公网,丢失钱包的人 可以看作 目标主机
先找到目标子网(群),再找到目标主机


为了 跨网络 更高效的把数据从一台主机送到另一台主机,所以要进行 子网划分 (每个学院都有自己的群)
IP地址 等于 目标网络 加 目标主机
IP地址的构成是子网划分的结果,是为了提高一台主机查找到另一台主机的效率
(因为要在学校里快速的能够进行消息的通知,就需要把每个院都有自己的群,为了更好管理,就要带上学号)

IP地址的划分

IP地址被分为两部分
网络号:保证相互连接的两个网段具有不同的标识
(每一个学院,院号之间彼此之间不能一样,用院号区分不同的学院)

主机号:同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号
(张三、王五是同学,大家都在计算机学院内,但是学号是不同的)

子网划分

根据IP地址,把整个IP地址划分成了五类

由于只有A类的第一个比特位为0,证明是A类
A类网络 最多有 2 ^ 7个网络,每个网络中会有2 ^ 24个主机

B类网络的第一个比特位为1,证明不是A类,第二个比特位为0,证明是B类
B类网络最多有 2 ^ 14个网络,每一个网络中有2 ^ 16个主机

C类网络的第一个比特位为1,证明不是A类,第二个比特位为1,证明不是B类,第三个比特位为0,证明是C类
C类网络最多有 2 ^ 21个网络,每一个网络中有2 ^ 8个主机

若将B类网络申请完了,很难将B类网络中的2 ^ 16个主机用完,并且别人也用不了,就会浪费掉


CIDR的提出

所以就在原有方案的基础上,提出了新的改良方案,称为 CIDR

引入一个额外的子网掩码用于区分网络号和主机号
子网掩码是一个32位的正整数,通常用一串"0"来结尾(左边都是1,右边都是0)
将IP地址与子网掩码 进行 按位与 操作,得到的结果就是网络号
网络号和主机号的划分与这个IP地址是A类、B类还是C类无关

如何理解CIDR

IP地址只有2^32个,所以IP地址是有限的
为了更好理解,所以使用国家为单位划分IP


各个国家的前8位IP地址是不同的

每一个国家都有自己的国际路由器
每个国际路由器会有配置自己直连的国家网络对应的网络号
如:中国 的国际路由器会有配置自己直连的中国网络对应的网络号

为了能够称为全球互联网,所以将大家的国际路由器接入到同一个网络里,称为公网,由全球运营商共同搭建起来的


中国有很多省,其中以吉林省、辽宁省、黑龙江省为例

IP地址前8位表示国家 ,再取6位表示主机,共有32位,后面以 . 代表0


每个省之间都有跨省路由器,搭建公网,由国内运营商构建起来的


以吉林省举例,包含 长春市 吉林市,两者分别有自己的IP地址,并搭建公网


假设长春市有一家互联网公司,对外提供了一个网络服务,美国人想要访问
所以长春的这家公司就要有自己对外的IP地址


将1进制的2位看作1位,就是1字节 即 2.4.4.0/18 (长春市的网络号)
假设长春的这家公司的IP地址 为 2.4.4.23 (属于长春市其中的一家公司,所以有对应的主机号23)


若有个美国人想要访问长春这家公司对应的服务,美国人认为他们国家对应的网络开头为1…
由于2.4.4.23并不是美国的IP,所以就将该IP通过美国的路由器 交付给公网上
通过公网,转发到中国的路由器处

将2.4.4.23与 中国的子网掩码 0000 0010 按位与 得到网络号 2.0.0.0,证明是中国的


将2.4.4.23与吉林省的子网掩码 按位与 得到网络号是 2.4.0.0 ,而吉林省是2.4开头的, 证明是吉林省的
将2.4.4.23与长春市的子网掩码 按位与 得到网络号是 2.4.4.0 ,而长春市是2.4.4开头的,证明是长春市的

更多推荐

思腾云计算

全新一代的Atlas是支持ARM架构和X86架构的,像Intel,AMD,海光,鲲鹏,飞腾的CPU都支持。Atlas300IPro,是基于昇腾310芯片开发推理卡,最高功耗72W,被动散热,半高半长单宽,达芬奇架构,作为推理卡需求比较简单,算力和显存平衡就可,所以它支持FP16*70TFLOPS和INT8*140TOP

扩展pytest接口自动化框架-MS数据解析功能

【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】开篇MeterSphere的数据源通过html页面上传后,需要将请求方式进行拆分。get接口的参数,常以params的方式进行传参,也就是在url后带上参数。post接口一般是以json字符串的形式传参,也

有效的网络带宽监控策略

世界各地的企业正在采用多种策略来减少瓶颈、增强网络性能并最大限度地提高投资回报率,以跟上不断发展的混合基础架构的步伐。虽然这些策略因组织而异,并提供了自己的好处,但它们可能会使IT基础架构的监控方式复杂化。在设计有效的监控策略时,必须了解各个组件的网络吞吐量、带宽、流量活动、运行状况和性能以及整个网络。网络带宽监视使网

【前端知识】Three 学习日志(三)—— 光源对物体表面的影响

Three学习日志(三)——光源对物体表面的影响一、设置材质为受光照影响//MeshLambertMaterial受光照影响constmaterial=newTHREE.MeshLambertMaterial();此时,场景中一片漆黑,无法看到原来的物体,需要设置光源来照亮物体。二、设置点光源//点光源:两个参数分别表

华为云云耀云服务器L实例使用教学 | 访问控制-安全组配置规则 实例教学

文章目录访问控制-安全组什么叫安全组安全组配置默认安全组配置安全组配置实例安全组创建安全组模板配置安全组模板:通用Web服务器配置安全组规则安全组配置规则功能介绍修改允许特定IP地址访问Web80端口服务建立仅允许访问特定目的地址的安全规则配置网络ACL对实例应用安全组安全组和网络ACL规则验证测试总结华为云耀云服务器

嵌入式MCU学习利器-03-在线做RT-Thread实验

嵌入式MCU学习利器-03-在线做RT-Thread实验很多学生想要学习RT-Thread,但是苦于没有好的学习工具或者物理开发板而选择放弃。现在福利来了,同学们可以基于我们的仿真平台做嵌入式demo,通过调试功能深入学习RT-Thread的原理。本仿真平台基于STM32F103ZE芯片上线了一套RT-Thread课程

【深度学习】Pytorch 系列教程(一):PyTorch数据结构:1、Tensor(张量):维度(Dimensions)、数据类型(Data Types)

目录一、前言二、实验环境三、PyTorch数据结构0、分类1、Tensor(张量)1.维度(Dimensions)0维(标量)1维(向量)2维(矩阵)3维张量2.数据类型(DataTypes)一、前言ChatGPT:PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富的工具和库,用于构建和训练各

安卓玩机搞机----不用刷第三方官改固件即可享受“高级设置”的操作 ChiMi安装使用步骤

很多玩友特别喜欢第三方作者修改的带有高级设置的官改包。因为他可以随意修改系统里面的有关设置选项。包括但不限于修改状态栏显示日期秒等等的操作。第三方带高级设置的官改一般官改带高级设置的类似与今天给大家分享下不用刷这些官改包即可享受高级设置的操作。红米k40做个演示步骤机型;红米k40芯片:高通骁龙870安卓版本;安卓12

使用SeaFile搭建私有云盘并公网访问【cpolar内网穿透】

文章目录1.前言2.SeaFile云盘设置2.1Owncould的安装环境设置2.2SeaFile下载安装2.3SeaFile的配置3.cpolar内网穿透3.1Cpolar下载安装3.2Cpolar的注册3.3Cpolar云端设置3.4Cpolar本地设置4.公网访问测试5.结语1.前言现在我们身边的只能设备越来越多

使用Jest搭建自动化单元测试框架为Vue 3项目

前言在Vue3项目中,自动化单元测试是一个非常重要的环节,它可以帮助我们验证代码的正确性、提高代码质量,并且在项目迭代过程中保证代码的稳定性。本文将介绍如何使用Jest搭建自动化单元测试框架为Vue3项目,并提供代码示例。安装Jest首先,我们需要在项目中安装Jest。打开终端,进入项目根目录,执行以下命令:npmin

Java中this关键字的常见用法

一、this使用方法总结下来就是,在Java中,this是一个关键字,用于引用当前对象的引用,可以用于引用对象的实例变量和方法。主要用于以下几个方面:1、在构造函数中使用this关键字来调用同一个类中的其他构造函数。这种情况下,this关键字必须作为构造函数的第一行代码出现,并且用于区分不同参数列表的构造函数。publ

热文推荐