网络原理-IP协议

news2024/11/13 11:57:38

一、IP协议报头

 

  1. 版本号:用来表示IP协议的版本,现在常用的IP协议有两个版本,IPv4和IPv6,其他版本可能只存在于实验室中,并没有被广泛的使用。

  2. 首部长度:用来表示IP报头的长度,因为存在"选项"字段,所以IP报头是可变长的,此处单位为4个字节。取值范围:20-60字节。

  3. 服务类型:虽然有8位但是真正只有4位才有效,用来表示IP协议的4工作模式:最小延时、最大吞吐量、最高可靠性、最小成本,四种模式互斥,只能切换到一种模式。虽然IP协议支持这个机制,但在实际中很少用到。

  4. 总长度:表示的是整个IP数据报的长度,即IP报头长度+载荷的长度。这里的总长度使用了16bit,只能表示到64kb的数据,所以当携带的数据比较多的时候,IP协议会自动将数据报拆成多份,而数据到了接收方又会进行合并操作。

  5. 标识+标志位+片偏移:用来帮助IP协议正确拆包组包。当IP的载荷数据比较多的时候,会进行拆包,而同一个数据报中多个包的标识是相同的,然后再根据包的先后顺序进行片偏移的赋值。其中的标志位,一共3bit,一位不作使用,一位用来表示是否允许拆包,还有一位用作"结束标记",判断是否为最后一个包。

  6. 生存时间(TTL):表示一个数据包在网络上最多被转发多少次,每经过一个中间节点就减1,比如有一个TTL的初始值为32,在经过32次转发后就会减为0,此时这个数据包就会被丢弃,表示不可达。

  7. 协议:表示上层使用的是哪种协议。

  8. 首部校验和:检验IP协议数据包的头部是否出现错误,后面的载荷为TCP/UDP,可以自己检验。

二、IP地址

在网络的世界中有许多的主机,彼此之间要使用IP地址找到对方才能通信,因此每个IP地址原则上是不能重复的。而所谓的IP地址本质上是一个32位的整数。不过为了便于叙述与记忆往往会使用点分十进制表示。

32位能表示的数据量是有限的,大约为42亿,随着网络的迅速发展,上网的设备越来越多已经超出了32位能表示的范围了,如何解决32位IP地址不够用呢?

DHCP(动态分配IP)

通过使用类似分时复用的方式,当主机需要上网的时候进行分配一个IP地址,不需要就先不分配,这种方式无法改变总量,只能缓治(你咋确定不会正好有42亿人一起上网呢?)。

NAT机制(网络地址转换)

NAT机制本质上是使用了IP地址的复用,将网络分为了两大类,一类为内网,另一类为外网。外网之间可以直接通信,而内网之间不可以。

 

由于内网可以复用,因此就会出现两台不同的主机的IP地址相同的情况,此时要通信的话,需要借助外网。

大致流程如下:

在发送的过程中,每经过一个路由器的时候就会触发NAT机制,路由器会将自己IP地址替换到当前IP数据报的源IP地址,因此接收端也无法知道这个数据报是源自哪的,只知道是上一级交付的。对于每一个带有NAT机制的路由设备也都会使用一个映射表来维护对应关系,这样当一个数据报过来之后,通过查表就知道发给谁了。

在NAT机制下,一个外网IP代表的不一定是一个设备了,而是很多很多设备,但是NAT也有非常明显的缺点:

非常繁琐,不方便直接访问局域网设备,需要多层路由转发才能访问另一个局域网中的设备。

虽然NAT进一步提高了利用率,但是也没有从根本上解决问题,但为啥还是在当今广泛使用呢?这是因为NAT是一个纯软件实现的方案,开发商只需要更新一下软件,这样就能大大降低成本。

IPv6

IPv6算是从根本上解决了IP地址不够用的问题。因为IPv6增长到了16个字节,128位,其能表示的数据范围相当于能给地球上的每一粒沙子都分配一个IP地址。

 

但是IPv6并没有发展起来,这是因为IPv4使用的是4个字节,因此两个协议无法兼容,要想升级IPv6就得更换硬件,但这并不会提高网速,用户也就感知不到,运营商也就赚不到钱......

更多知识可参考:电子监听、全国断网,棱镜门背后,中国如何从末路狂奔到世界之巅_哔哩哔哩_bilibili

IP地址组成

IP地址由两部分组成:网络号+主机号

网络号:标识网段,保证相互连接的两个网段具有不同的标识。

主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是主机号必须不同。


那么如何区分网络号和主机号呢?使用子网掩码

子网掩码和IP地址一样,也是4个字节,32位的整数,但是子网掩码要求,左侧必须为连续的1,右边必须为连续的0,即0和1不能穿插出现。其中1的范围就描述了IP地址的网络号,0的范围则是主机号。

这里就表示前23位为网络号,后9位为主机号。

子网掩码是现代的一种划分网络号的办法,上古时期还有一种:

特殊的IP地址

1.IP地址中的主机号全部位0,就成了网络号。

2.IP地址中的主机号全部设为1,就成了广播地址。例如:192.168.0.255,子网掩码:255.255.255.0,此时这个地址就是广播地址了,往这个地址发送UDP(TCP无法和广播地址握手)数据报,那么这个局域网中所有设备都会接收到。

3.127.*的IP地址用于本机环回地址,通常为127.0.0.1。

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

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

相关文章

B树和B+树试题解析

一、单项选择题 01.下图所示是一棵(A ). A.4阶B树 B.3阶B树 C.4阶B树 D.无法确定 02.下列关于m阶B树的说法中,错误的是( C ). A.根结点至多有m棵子树 B.所有叶结点都在同一层次上 C.非叶结点至…

【MySQL】查询(进阶)

文章目录 前言1、新增2、聚合查询2.1聚合函数2.1.1count2.1.2sum2.1.3avg2.1.4max和min 2.2、GROUP BY子句2.3HAVING 3、联合查询/多表查询3.1内连接和外连接3.2自连接3.3子查询3.4合并查询 前言 在前面的内容中我们已经把查询的基本操作介绍的差不多了,接下来我们…

基于SpringBoot + Vue实现的学生心理咨询评估管理系统设计与实现+毕业论文+开题报告+答辩PPT

介绍 系统有管理员和用户。 管理员可以管理个人中心,用户管理,试题管理,试卷管理,考试管理等。用户参加考试。 学生心理咨询评估系统的登录流程,针对的角色就是操作员的操作角色。在登录界面需要的必填信息就是账号信…

创新案例|Amazon.com 2023 年营销策略:电子商务零售巨头商业案例研究

2022 年最后一个季度,亚马逊报告净销售额超过 1,492 亿美元。这种季节性峰值是亚马逊季度报告的典型特征,但增长是不可否认的,因为这是该公司有史以来最高的季度。毫无疑问,这家电商零售巨头继续引领电商增长。本文将介绍我们今天…

Flink学习(七)-单词统计

前言 Flink是流批一体的框架。因此既可以处理以流的方式处理,也可以按批次处理。 一、代码基础格式 //1st 设置执行环境 xxxEnvironment env xxxEnvironment.getEnvironment;//2nd 设置流 DataSource xxxDSenv.xxxx();//3rd 设置转换 Xxx transformation xxxDS.…

【春秋云镜】CVE-2023-43291 emlog SQL注入

靶场介绍 emlog是一款轻量级博客及CMS建站系统,在emlog pro v.2.1.15及更早版本中的不受信任数据反序列化允许远程攻击者通过cache.php组件执行SQL语句。 不感兴趣的可以直接拉到最后面,直接获取flag 备注:没有通过sql注入获取到flag&…

python多线程技术(Threading)

文章目录 前言一、多线程(Threading)是什么?二、threading库1.初识多线程2.增加新线程2.1 多线程的基本使用2.2 对多线程是同时进行的进行一个直观上的演示(非重点--理解是实时就行)2.3 thread.join()功能2.4 使用queue(队列)功能获取多线程的返回值(重要,这就是前面那…

MySql对于时间段交集的处理和通用实现方式(MyBatis-Plus)

问题:一般传统时间筛选是在[ 开始时间 → 结束时间 ]这个区间内的子集,也就是全包含查询方式,这种只会筛选一种情况。如果场景需要是开展一个活动,需要活动时间检索应该但凡包含就返回,也就是需要查询这个时间段有涉及…

Java的Hash算法及相应的Hmac算法

【相关知识】 加密算法知识相关博文:浅述.Net中的Hash算法(顺带对称、非对称算法)-CSDN博客 【出处与参考】 MessageDigest 类介绍、分多次调用update方法与一次性调用一致的说明引自: https://blog.csdn.net/cherry_chenr…

2024 IDM最新破解版及软件介绍

*IDM:信息时代的高效管理工具** 在快节奏的现代社会中,随着信息的爆炸式增长,如何高效、有序地管理信息成为每个人都需要面对的挑战。IDM,作为一种信息管理工具,正在逐渐受到人们的青睐。 IDM,全称Inform…

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程 📍相关篇《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》🎈《STM32 软件I2C方式读取MT6701磁编码器获取角度例程》📌MT6701当前最新文档资料:https://www.magntek.com.cn/u…

Scanpy(1)数据结构和样本过滤

注:主要讲述scanpy处理数据的结构、数据过滤(生信领域)和数据预处理(和机器学习类似,但是又有不同。) 1. Scanpy简介与安装 Scanpy 是一个可扩展的工具包,用于分析与 AnnData(一种…

git 小记

一、 github新建仓库 git clone 。。。。。。。。。。。 (增删查补,修改) git add . git commit -m "修改” git push (git push main) 二、branch 分支 branch并不难理解,你只要想像将代码拷贝到不同目录…

ruoyi-vue前端的一些自定义插件介绍

文章目录 自定义列表$tab对象打开页签关闭页签刷新页签 $modal对象提供成功、警告和错误等反馈信息(无需点击确认)提供成功、警告和错误等提示信息(类似于alert,需要点确认)提供成功、警告和错误等提示信息&#xff08…

restful请求风格的增删改查-----修改and删除

一、修改&#xff08;和添加类似&#xff09; 前端&#xff1a; <script type"text/javascript">function update(){//创建user对象var user {id:$("#id").val(),username:$("#username").val(),password:$("#password").val…

排序 “贰” 之选择排序

目录 ​编辑 1. 选择排序基本思想 2. 直接选择排序 2.1 实现步骤 2.2 代码示例 2.3 直接选择排序的特性总结 3. 堆排序 3.1 实现步骤 3.2 代码示例 3.3 堆排序的特性总结 1. 选择排序基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个…

又来!黄金主题LOF(161116)溢价40%开放申购,拖拉机都开冒烟了!

查看基金公告&#xff0c;黄金主题LOF(161116)下周一(4月22号)开放申购&#xff0c;限额100元&#xff0c;目前溢价40%&#xff0c;可以一拖七套利。 这熟悉的配方&#xff0c;这熟悉的套路&#xff01;一个月前的今天&#xff0c;我好像在标普500LOF上见过。又是易方达这个狗基…

数据结构_时间复杂度

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 什么是时间复杂度&#xff1f; 时间复杂度的定义&#xff1a;在计算机科学中&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定量描述了该算法的运行时间。一个算法执行所耗费的时间&#xff0…

上位机图像处理和嵌入式模块部署(树莓派4b和类muduo网络编程)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 既然是linux编程&#xff0c;那么自然少不了网络编程。在linux平台上面&#xff0c;有很多的网络编程库可以选择&#xff0c;大的有boost、qt&…

python3如何提取汉字

采用正则表达式的方法对字符串进行处理。 str1 "&#xff5b;我%$是&#xff0c;《速$.度\发》中 /国、人"&#xff08;1&#xff09;提取汉字 汉字的范围为”\u4e00-\u9fa5“&#xff0c;这个是用Unicode表示的。 import re res1 .join(re.findall([\u4e00-\u9fa…