TCP/IP协议,IPV4,IPV6,为什么国家大力倡导IPV6的发展

news2024/12/23 15:15:37

简单回顾一下TCP的特点

TCP是可靠性,UDP是负责效率,那么如何基于UDP实现可靠传输

本质还是考察TCP

目录

TCP/IP协议栈💛 

那么假如IP地址不够用怎么办呢?NAT机制💙 

IP地址的介绍💜 


TCP/IP协议栈💛 

我们来简单了解一下,上面都是干什么的:

(1)四位版本号

主流IPV4,IPV6(用于工作,商用这种),其他版本也有,不过大多数是实验室用。

(2)4位首部长度,设定和TCP一样

IP报头可变长,IP报头可以带有选项,此处单位也是4字节。

(3)8位服务类型(真正只有四位是有效果的)

类似于模式/形态切换

模式:最小延时:传输一个数据包的实践尽可能的短。

            最大吞吐量:一定时间,传输的数据量尽量多。

            最高可靠性:在传输中最不易触发丢包。

            最小成本:在传输中消耗的硬件资源最低。

(4)16位总长度

IP报头+载荷长度

=总长度- IP长度->载荷长度->TCP的报文长度

TCP报文总长度- TCP报头长度->TCP载荷长度

这里的16位总长度,确实涉及64kb问题,但是IP协议,自身支持“拆包组包”机制,这里的64kb只是约束一个IP数据报。

如果携带比较长的数据,IP协议会自动把一个数据报拆成多个数据报,接收方在进行分用的时候,也会把多个数据报合并成一个数据报。

(5)16位标识,3位标志位,13位片偏移

描述了整个IP数据报,拆包组包的过程

当IP数据报需要携带比较长的数据报的时候,就在IP协议这一层触发“拆包的操作”,把一个大包拆成多个小包,多个小的IP数据报带有Ip报头,载荷是TCP数据报的几个部分

16位标识:拆出来的多个包,16位标识是相同的

13位片偏移:不同的点,前一个包偏移量更小,后一个更大,通过片偏移,就可以区分包的先后顺序。

3位标志位:其中一位是不用的,还有一位,表示是否允许拆包,在这里已经拆了,这一位都是1,剩下一位标识“结束标记”标识当前的包是否是最后一个,这一位为0表示,这是最后一个包了。

(6)八位生存时间TTL,单位是次,初始情况TTL(32/64/128次),每过一个路由器转发,TTL就会-1,正常来说这个TTL是足够到达网络上(其实也就是地球上)任意位置,如果确实出现0,基本可以认定这个ip不可达(甚至不存在)

(7)8位协议

描述了上层传输层,使用哪种协议。

(8)16位首部校验和

校验数据是否正确的机制,只需要校验首部就可以,载荷部分,TCP/UDP人家已经自己校验过自己了。

(9)32位源地址

32位目的地址,IP协议中最重要的部分,数据报从哪里来到哪里去,其实64次是足够到达任何角落。

IP地址

网络这么多主机,要有办法描述主机的具体位置,IP地址就是解决该问题的关键

32位源IP地址:源IP地址,所谓IP地址,其实是一个32位整数(4字节)点分十进制,由于按照32位的方式表示,就会使这个数字变的很大,很难去理解记忆,一般是把IP地址,按照点分10进制表示(用三个.把32位分成4个部分,每个部分8位,每个部分是一个字节)

192.168.22.56,

32位的数据量是十分有限的,既然是弟子,原则上(是不可以重复的)

那么假如IP地址不够用怎么办呢?NAT机制💙 

1.动态分配IP(DHCP):你这个设备,不用一直上网,需要上网的时候再去分配IP,不需要则先不用分配——当然这个属于是只缓解,不根治

2.NAT机制(网络地址转化)考点,要点考点

IP地址,被聪明的猿,想了个办法,把IP地址,分成两类

(1)内网IP:不同局域网内的设备,内网IP可以重复,同一个局域网内的设备,内网IP不能重复(以下三个开头比较多)

10*
172.16*-172.31*
192.168*

换句话说:在别的局域网中,也可以使用这样的IP地址,此时大量设备可以使用同样的IP了,此时IP不够用的程度,就得到了很大的改善。

但是不同情况的处理又会是怎么样的呢?

1.如果局域网内部设备进行通信,OK

2.A局域网,想和B局域网中的设备进行网络通信,这个时候咋办?(当然了,必须是最怪的那种情况,两个设备的IP相同)当前的情况是禁止这种情况,想通信要有一个带外网的IP进行中转(QQ,微信)

(2)外网IP:外网IP不能重复

局域网内部的设备访问带有外网IP的设备

像平时使用的电脑/手机,都是在局域网内部使用,他们会有一个内网IP,还有一类设备是服务器,服务器可以有外网IP。

一个路由器可以连接多个设备,让外界可以看起来这些设备都源于一个路由器,NAT机制下,意义是一个外网IP代表的不一定是一个设备,而是很多设备。

百度服务器返回响应里头也是IP数据报

该数据包会先到电信路由器,对于NAT设备,会在触发NAT的时候维护一个映射表,然后NAT设备,通过查表,把目的IP再替换回来,比如换回192.22.26.1234

同一个局域网内部,内网IP不能相同的

相对来说,真实情况:我的电脑经过自己家的路由器,会进行NAT,经过电信光猫,又有NAT,对经过的电信再进行一个NAT(相当于是那种带面具参加舞会,一个舞会带一个面具)

当今世界,是由NAT构建起来的~

缺点十分明显:1.效率不高

                          2.非常繁琐

                          3.不方便直接访问局域网内设备

优点:纯软件实现的方案,能提高IP地址的服用率,但也没有从根本解决IP不够的问题

IPV6:从根本上解决问题,IP地址不够用的问题,16字节,128位表示IP地址(什么概念,有多大?地球上的不仅仅是人,沙子都有IP),

IPV6和IPV4并不兼容,要升级IPV6,(要更换路由器设备=花钱)

为什么IPV4不用呢,要执着IPV6呢?(IPV4是由外国所垄断的,对于中国互联网来说,IPv6的规模部署是场输不起的战争。、IPv4时代,全球共有13个根服务器(主根在美国),却没有一个在中国,所以之前不少自媒体说,一旦外国切断了我们对根服务器的访问途径,我们的网络就会瘫痪)

IP地址的介绍💜 

IP地址分为两个部分:网络号和主机号

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

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

1.同个局域网中设备的网络号必须相同,主机号必须不同。

2.两个相邻的局域网,网络号必须相同

日常开发中,不关心IP地址咋来的,以及规则是什么,一般是“网络管理员”要操心这些事情。

(IP地址可以是手动分配的 企业网络,网络繁杂,也可以我们手动分配)

IP地址,哪个部分是网络号,哪个部分是主机号?

一部分通过子网掩码来识别

                              子网掩码 ...255.255.252.0

子网掩码和IP地址一样,也是4个字节,32位整数,左侧必须连续1,右侧必须连续的0

255.255.252.0表达起来就是
1111 1111 1111 1111 1111 1100 0000 0000

一共32位,1的范围描述了IP地址的对应哪些位是网络号~(即将前22个bit是网路号,针对该机的子网掩码)10个bit是主机号

下面的没啥用,但是笔试有可能考

          范围                         适用网络      网络数量  主机最大连接数
A类:0.0.0——127.255.255.255          大型规模网络     126      16777214
B类:128.0.0.0——191.255.255.255。    中型网络        约1600个   65534
C类:192.0.0.0-223.255.255.255       小型规模网络               254
D类:224.0.0.0——239.255.255.255
E类:240.0.0.0-247.255.255.255

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

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

相关文章

腾讯mini项目-【指标监控服务重构】2023-08-28

今日已办 分工 测试 - 谢雨晨、郑兆隆将1的测试结果记录整理为一个表格,列有:平均内存、最大内存、95内存、cpu的这些等等 - 邓烨钒HyperScan和官方正则库的benchmark对比 - 张锐添PPT制作 - 其他人灵活调动 进度 trace上报:jaeger-colle…

【星穹杂谈】为什么寰宇蝗灾难到折磨玩家却令玩家一致好评?

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,今天咱们不聊技术,来聊聊一些游戏里我个人觉得有趣的东西,今天想和大家聊聊关于星穹铁道这个版本新出的活动寰宇蝗灾为什…

题目 1067: 二级C语言-分段函数 sqrt、fabs、pow

一个分段函数&#xff0c;返回为double值&#xff0c;保留两位小数。 输入5 输出15.00 这题不难&#xff0c;重要的是sqrt(),fabs(),pow(n,2); cmath或者math.h里有的sqrt() 平方根函数&#xff0c;fabs()绝对值函数&#xff0c;pow(n,5); nの五次方函数 #include<iostrea…

【数据结构】泛型

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 泛型 1. 包装类1.1 基本数据类型和对应的…

【Javascript保姆级教程】Javascript数据类型和算术运算符

文章目录 前言一、JavaScript数据类型1.1 数字&#xff08;Number&#xff09;1.2 字符串&#xff08;String&#xff09;1.3 布尔&#xff08;Boolean&#xff09;1.4 数组&#xff08;Array&#xff09;1.5 类(Object) 二、算术运算符2.1 加法&#xff08;&#xff09;2.2 减…

单目3D目标检测——SMOKE 环境搭建|模型训练

本文分享SMOKE最新的版本的环境搭建&#xff0c;以及模型训练&#xff1b;环境关键库版本&#xff1a;pytorch 1.12.0、CUDA 11.3、cudnn 8.3.2、python 3.7、DCNv2。 目录 1、docker 获取Nvidia 镜像 2、安装Conda 3、创建SMOKE环境 4、编译SMOKE环境 5、下载kitti 3D目标…

Springboot+vue的校园资产管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的校园资产管理系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的校园资产管理系统&#xff0c;采用M&#xff…

让Pegasus天马座开发板实现超声波测距

在完成《让Pegasus天马座开发板用上OLED屏》后&#xff0c;我觉得可以把超声波测距功能也在Pegasus天马座开发板上实现。于是在箱子里找到了&#xff0c;Grove - Ultrasonic Ranger 这一超声波测传感器。 官方地址: https://wiki.seeedstudio.com/Grove-Ultrasonic_Ranger 超声…

使用postcss-pxtorem插件实现px转换rem

1.下载postcss-pxtorem(其他插件按需下载自行配置)并在package.json同级目录下新建postcss.config.js文件: export const defaultHtmlFontSize 37.5 export default {plugins: {autoprefixer: {overrideBrowserslist: [Android > 4.0, iOS > 7],},postcss-pxtorem: {//…

tensorrt获取输入输出

利用Netron打开onnx&#xff0c;右边名字&#xff1a; int input_index engine->getBindingIndex("inout1.1");int output_index engine->getBindingIndex("191");

NSSCTF做题

[第五空间 2021]WebFTP 打开题目 发现是登录的界面 用admin和password试一下发现不行 用dirsearch扫一下 发现了git泄露 但是用githack下载不下来文件 去网上查了一下webftp 发现是一个在线php文件管理系统 WebFTP——在线FTP工具:强大的PHP在线文件管理系统-時日 在这篇博客…

CentOS7平台命令安装Anaconda3、配置Python3开发环境

要在 CentOS 7 上安装 Anaconda3&#xff0c;您可以按照以下步骤进行操作&#xff1a; 1. 下载 Anaconda3 安装包&#xff1a; 首先&#xff0c;访问 Anaconda 官方网站以获取最新版本的 Anaconda3 安装包的下载链接。可以使用 wget 命令来下载安装包。请确保选择适用于 Cent…

数字IC设计系列----单端口RAM、双端口RAM

一、单端口RAM原理及实现 1.1、概念/原理 在内存空间中开辟出一段固定大小的内存用于存储数据&#xff0c;每一个数据所占的bit位称之为位宽&#xff0c;这段内存空间中数据的总数称之为深度。例如reg [7:0] mem [255:0]&#xff0c;这段内存空间中每一个数据的位宽为8bit&am…

postgresql用户和角色

postgresql用户和角色 简述创建角色角色属性登录特权超级用户创建数据库创建角色启动复制密码修改角色属性 对象授权撤销授权组和成员删除角色 简述 PostgreSQL 通过角色的概念来控制数据库的访问权限。角色又包含了两种概念&#xff0c;具有登录 权限的角色称为用户&#xff…

Nature Communications | 张阳实验室:端到端深度学习实现高精度RNA结构预测

RNA分子是基因转录的主要执行者&#xff0c;也是细胞运作的隐形功臣。它们在基因表达调控、支架构建以及催化活性等多个生命过程中都扮演着关键角色。虽然RNA如此重要&#xff0c;但由于实验数据的缺乏&#xff0c;准确预测RNA 的三维空间结构仍然是目前计算生物学面临的重大挑…

Flink 内存模型

Jobmanage内存模型 1G 1C 的配置 上图不够直观,用户大脑无法第一反应出内存构成。 Total Process Memory = JVM堆内存 + JVM堆外内存(堆外内存+ JVM元空间 +JVM自身运行内存) Total Flink Memory = JVM堆内存 + 堆外内存 参数控制: Total Process Memory 对应 jobmanag…

2023 “华为杯” 中国研究生数学建模竞赛(C题)深度剖析|数学建模完整代码+建模过程全解全析

华为杯数学建模C题 当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2021年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看研赛的C题呀~&#xff01; 问…

二十四、MySQL事务操作演示

1、事务 &#xff08;1&#xff09;事务简介&#xff1a; &#xff08;2&#xff09;实际操作方式&#xff1a; 在执行MySQL语句时&#xff0c;系统默认自动提交&#xff0c;但是语句一旦出现报错&#xff0c;就可能导致数据出现大规模错误&#xff0c;所以我们要做的就是&…

牛客网解题之跳台阶

10.3 跳台阶 题目链接 牛客网 题目描述 一只青蛙一次可以跳上 1 级台阶&#xff0c;也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 解题思路 当 n 1 时&#xff0c;只有一种跳法&#xff1a; 当 n 2 时&#xff0c;有两种跳法&#xff1a; 跳 n 阶台…

【强化学习】03 ——马尔可夫决策过程

文章目录 1. 马尔科夫决策过程(Markov Decision Process&#xff0c;MDP)1.1. 马尔科夫性质1.2. 状态转移矩阵1.3. 马尔可夫过程1.3.1. 一个简单的例子 2. 马尔可夫奖励过程2.1. 回报2.2. 价值函数 3. 马尔科夫决策过程3.1. MDP五元组3.2. 策略3.3. 价值函数3.3.1. 状态价值函数…