JAVAEE——IP协议

文章目录

  • IP协议
    • IP协议报头格式
      • IP协议报头的各个区段
        • 四位版本
        • 四位首部长度
        • 八位服务类型
        • 16位总长度
        • 16位标识,3位标志,13位片偏移
        • 八位生存时间
        • 八位协议
  • 地址管理
    • IP地址
      • 解决提议1:动态分配Ip地址
      • 解决提议2:NAT机制

IP协议

IP协议报头格式

想要学会一个协议就要了解这个协议的格式,下图是这个协议的格式图那么接下来我们针对这个图进行详细的解析
在这里插入图片描述

IP协议报头的各个区段

四位版本

在这里插入图片描述
首先呢是这个四位版本,我们说的IP地址目前是有两个版本的一个是ipv4协议,一个是ipv6协议目前来说使用范围最大的就是这两个了,而我们通过自己的电脑就可以查看查看方法就是win+r然后输入cmd,再然后输入ipconfig命令便可查看。那么这两者有什么区别呢?


Ipv4:ipv4协议其实指的就是ip地址是四个字节那么最大表示范围也就是2^32,他的数值表示是以点分10进制表示,列如192.0.2.1。
IPv6:Ipv6协议,是指地址最大是6个字节以八组16进制数字表示并且以冒号分隔。

四位首部长度

在这里插入图片描述
为什么这里使用4位首部长度呢?因为其实IP协议的报头也是变长字节的

八位服务类型

在这里插入图片描述
什么是八位服务类型呢?因为我们的IP协议形态其实是可以发生改变的,这八位是如何构成的呢?它分为了3位优先权字段(目前已经弃用了),4位TOS字段和1位保留字段(必须置为0)那么这四位TOS字段代表什么呢?他代表的是最小延时,最大吞吐量,最高可靠性,最小成本,他就像迪迦奥特曼一样次啊的一下就可以改变自己的形态改变自己形态之后就会使得自己的属性发生改变。

16位总长度

在这里插入图片描述
这里描述了IP数据包最长是多长,当然了既然存在最长说明IP协议也存在长度限制,不过iP协议本身也支持拆包和组包,那既然支持拆包和组包,那就肯定需要标志位,去完成这件事情那么他的标志位是什么呢?

16位标识,3位标志,13位片偏移


这三位字段就是为了表示IP协议的拆包和组包的,那么首先假如说一个IP报被拆分的话那么首先要判断拆分后的这些小包哪些是同一组报文的,这就要依靠16位标识来保证,假如说是同一组报文的话那么这16位标识就是一样的数字,然后就是这三位标志了,这三位标志呢,其中1位标志是否可以拆包,一位表示是否是最后一个包,这两个一个保证了拆分的包的数量和是否来自同一组,那么13位片偏移是什么呢?这个是用来保证我拆分的小包组成的顺序的根据这个片偏移字段可以。

八位生存时间

在这里插入图片描述

八位生存时间这个标志还是挺重要的,因为我们在进行网络传输的时候很有可能你输入了一个不存在的IP地址,可是机器不知道这个IP地址是否存在因此可能会陷入无休止的寻找过程中,加入这个字段等于说是限制了寻找多少次,如果超过的话就不在传输这个消息。也就是这个IP数据包还能存活多久

八位协议

在这里插入图片描述
这里描述的你的数据报部分是一个TCP协议包还是一个UDP协议包。

地址管理

IP地址

我们上面说了IP地址目前用的最广泛的两个一个是IPV4一个是IPv6这两个,这两个表示地址的方式也是不一样的,IPV4协议的表示出来的是一个2^32的一个数字大概就是42亿9千万吧,这样一个数字呢很大,但是在我们网络如此发达的今天这个明显是不够用的,目前全世界网民的数目已经数十亿人了,如果给这数十亿人没人都分配一个IP地址的话那么这个42亿九千万这个数字是完全不够用的,而IPv6则能很好的解决这个麻烦因为IPv6的数字更大,几乎是用不完的。但是目前的话iPv6 主要还是我国规定了每家公司必须要能支持IPv6而在全世界范围来看的话使用IPv4的人更多,这是为什么呢?因为他们两个不相通,也就是不兼容,如果你想使用IPv6的话你就得给自己的网络路由器进行更新,要知道对于一个使用了这么多年的Ipv4的公司来说,这笔费用还是不少的,因此世界上使用IPv4的人更多,可是IPv4的地址不够用啊那怎么办?那么人们就提出了几种解决办法。如下

解决提议1:动态分配Ip地址

那么首先的一个解决方式是什么呢?那就是动态分配IP地址,将需要上网的设备分配一个IP地址然后上完网后再将这个IP地址回收以此来达到正在上网的设备的IP地址是唯一的这样一个效果

解决提议2:NAT机制

NAT机制是什么呢?NAT机制其实就相当于弄了一个转换程序,我们依据局域网将设备分为局域网内部设备和局域网外部设备这样两种,那么当内部设备想要给外部设备发送信息的时候,这时候会先将自己的这个消息发给一个NAT设备,这个设备的任务就是为你分配一个可以连接外网的一个IP地址,这个IP地址我们就叫做外部IP,并且它还会记录这次的映射,当外部设备返回响应的时候,我们也可以根据这个映射找到发送消息的那台设备,我们可以这样理解NAT就像我们学生时期传纸条的中间人一样,我们把纸条给中间人,他会记住这个纸条是你给他的当属于这个纸条的回应返回的时候他会把回应再传给你,那么也就是说我们日常生活中的运营商网络其实就充当了这样的一个角色。
在这里插入图片描述
那么这样的解决方案有什么优点呢?

第一:安全,在这种机制下只有内网设备可以主动联系外网,外网设备不能主动联系内网
第二:纯软件的解决方式

而当前大环境下主要使用的就是这种NAT+动态分配的方式。当然最终的解决办法还是IPV6.

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

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

相关文章

超越GPT-4V,苹果多模态大模型上新,神经形态计算加速MLLM(二)

上文介绍基于MINOnets神经网络架构加速多模态大模型的策略,本文将以Spinnaker2多核神经网络芯片EGRU架构为起点,覆盖存内计算架构,介绍新型计算架构在加速大模型推理的作用。SpiNNaker 2是一个设计用于大规模异步处理的多核神经形态芯片&…

openGauss学习笔记-267 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置

文章目录 openGauss学习笔记-267 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置267.1 操作步骤 openGauss学习笔记-267 openGauss性能调优-TPCC性能调优测试指导-网络配置-网卡多中断队列设置 本章节主要介绍openGauss数据库内核基于鲲鹏服务器和openE…

T3BI T3BI RS-232通讯操作指南与培训PPT课件

T3BI T3BI RS-232通讯操作指南与培训PPT课件

Python连接Oracle数据库问题解决及Linux服务器操作知识

背景说明 最近在做一个视频分析的项目,然后需要将视频分析的数据写入到oracle数据库,直接在服务器上测试数据库连接的时候出现了这个bug提示,自己通过不断的研究探讨,最终把这个问题成功进行了解决,在这里进行一下记录…

701强连通分量(python)

看见题目知道时间复杂度不超过(mlogm)。 这题用强连通分量 Tarjan 算法,强联通:对于任意两个点u和v,u可以到达v,v也可以到达u。这题需要考虑有重边,自环,同样别忘记可能会有两个点u…

Linux 操作系统编译器、静态库、动态库

1、编辑器 1.1、vim的安装 指令:sudo apt-get install vim 1.2 vim的使用 格式:vim 文件名 如果文件存在,只打开,文件不存在,创建并打开 vim的4中模式: 命令模式,插入模式,底行模…

Excel数据处理:高级筛选、查找定位、查找函数(VLOOKUP)

高级筛选 先去选中筛选区域 如果筛选的条件在同一行那么就是且的关系 如果筛选的条件不在同一行那么就是或的关系 查找定位空值 使用VLOOKUP函数

渗透测试入门教程,从零基础入门到精通(非常详细)

目录 什么是渗透测试 渗透测试的重要性 渗透测试的前置技能 开始入门学习路线 什么是渗透测试 渗透测试,通常被视为模拟黑客的一种安全评估行为,其目的在于全面挖掘目标网站或主机的潜在安全漏洞。与真实的黑客攻击不同,渗透测试旨在发现…

Spring定时器 Cron表达式的用法

前言 Cron表达式是一种用于描述定时任务执行时间的字符串格式,这种表达式基于时间字段来定义任务应该在哪些时间点执行,通常包含六个或七个用空格隔开的字段,分别代表秒、分钟、小时、日期、月份和星期(年份是可选的)…

系统架构最佳实践 -- 相关JAVA架构

1. java 类加载器架构 2. JVM 架构 3. Java 技术体系 4. 线程运行架构 5. Java 体系(编译与运行)结构 6. JMS 技术架构 7. JMX 技术架构 8. Spring 架构 9. Hibernate 架构 10. ibatis 架构 11. Struts2 架构 12. Struts1 架构 13. JBPM 14. EJB 技术架构…

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上:万字总结!Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件,用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时,滚动条提供可视化线索,并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分,实现内容的上下或左右滚动。它在保持…

补档 -- 测试的分类(1)

最近有很多人私信我说: 灰灰你什么时候写测试分类阿, 本来我要开始肝性能测试的, 我一看, 奥, 之前摸鱼忘写了, 所以这里补档(叶问指着一边笑.jpg). 总览 标红的需要注意一下. 为什么要对软件测试进行分类? 软件测试是软件生命周期的一个重要环节, 具有较高的复杂性, 对于软…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 🌵hoare版本 🌵挖坑法 ​编辑 🌵前后指针版本 ​编辑 3.2 快速排序优化 🌻三数取中法选key 3.4 快速排序…

如何在群晖NAS部署office系统办公服务并实现无公网IP远程编辑文件

文章目录 本教程解决的问题是:1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 本教程解决的问题是: 1.Word,PPT,Excel等重要文件存在本地环境,如何在编…

Umi.js:登录之后需要手动刷新权限菜单才能渲染

在使用Umi.js开发后台管理页面时,用户登录之后,总是需要手动刷新一次页面,才能够拿到全局状态/权限信息。 问题描述 结合使用umi/plugin-layout和umi/plugin-access,登录进入页面,配置的权限菜单未渲染,需…

javaWeb项目-大药房管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、Java语言简介 Ja…

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录

【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 一、检查服务是否开启 找到 【Docker Desktop Service】,然后,启动他; 你也可以直接设置为“自动” 找到服务,右键》属性》启动类型:自动》点击…

三. TensorRT基础入门-TensorRT简介

目录 前言0. 简述1. 什么是TensorRT2. TensorRT的工作流介绍3. TensorRT的一些限制总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习课程第三章—TensorRT 基础入门&#xf…

三、Flask模型基础

ORM 创建模型 # exts.py:插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db = SQLAlchemy() # ORM migrate = Migrate() # 数据迁移 # 3. 和app对象绑定 def init_ex…