JAVAEE——IP协议

news2024/12/29 8:37:47

文章目录

  • 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.coloradmin.cn/o/1612850.html

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

相关文章

【新手入门必看】从零开始学指针

我使用VS CODEMSYS2的编译环境进行学习&#xff0c;想使用VS CODE进行C/C代码编写的小伙伴参考这篇文章进行环境配置VS Code 配置 C/C 编程运行环境&#xff08;保姆级教程&#xff09; 一、指针的引入 指针地址 #include <stdio.h>int main() {int a 10;printf(&quo…

编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 编写…

Java:二叉树(1)

从现在开始&#xff0c;我们进入二叉树的学习&#xff0c;二叉树是数据结构的重点部分&#xff0c;在了解这个结构之前&#xff0c;我们先来了解一下什么是树型结构吧&#xff01; 一、树型结构 1、树型结构简介 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>…

深度学习系列64:数字人openHeygen详解

1. 主流程分析 从inference.py函数进入&#xff0c;主要流程包括&#xff1a; 1&#xff09; 使用cv2获取视频中所有帧的列表&#xff0c;如下&#xff1a; 2&#xff09;定义Croper。核心代码为69行&#xff1a;full_frames_RGB, crop, quad croper.crop(full_frames_RGB)。…

openobserve-filebeat配置

优势 rustgolang开发的日志工具组合&#xff0c;自带日志数据存储&#xff0c;简化部署和管理。日志数据可配置保留x天。从日志文件中采集&#xff0c;做到非侵入式日志集中管理。 可从日志内容中提取信息进行报警等二次开发。 下载 openobserve-v0.10.1-windows-amd64 fil…

VL02N交货单清除字段:VLSTK(分配状态)

VL02N交货单清除字段&#xff1a;VLSTK(分配状态) 通过查找增强对应的BADI&#xff1a;LE_SHP_DELIVERY_PROC 修改方法&#xff1a;IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER&#xff0c;代码如下&#xff1a;

JSS作业

JSS作业&#xff1a; 1: <script>var cnt parseInt(window.prompt("请输入打印的行数&#xff1a;"));for (var i 1; i < cnt; i){for (var j 1; j < i; j){document.write("*")}document.write("<br>")} </script>…

XTuner 微调 LLM:1.8B、多模态、Agent

两种微调范式&#xff1a;增量预训练和指令微调 在大语言模型下游应用中&#xff0c;主要有两种微调范式&#xff1a;增量预训练和指令微调。增量预训练旨在让模型学习特定领域的常识&#xff0c;而不需要有监督标注的数据&#xff1b;指令微调则是通过高质量的对话数据训练模型…

C语言中, 文件包含处理,#include< > 与 #include ““的区别

文件包含处理 指一个源文件可以将另外一个文件的全部内容包含进来 &#xff23;语言提供了#include命令用来实现文件包含的操作 #include< > 与 #include ""的区别 <> 表示系统直接按系统指定的目录检索 "" 表示系统先在 "" 指定…

vulfocus靶场couchdb 权限绕过 (CVE-2017-12635)

Apache CouchDB是一个开源数据库&#xff0c;专注于易用性和成为"完全拥抱web的数据库"。它是一个使用JSON作为存储格式&#xff0c;JavaScript作为查询语言&#xff0c;MapReduce和HTTP作为API的NoSQL数据库。应用广泛&#xff0c;如BBC用在其动态内容展示平台&…

动态内存管理 柔性数组

文章目录 动态内存函数 malloc freecallocrealloc 重新开辟空间realloc 也可以第一个参数为NULL&#xff0c;则是直接开辟内存&#xff0c;类似于malloc用法 常见的动态内存错误对空指针进行解引用操作对开辟的内存越界访问对非动态开辟的内存使用free释放使用free释放动态开辟…

《Linux运维总结:Kylin V10+ARM架构CPU基于docker-compose一键离线部署redis6.2.8之容器版哨兵集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…

停更这大半年-我去考了个研

解释一下2023年我几乎没有更新文章 还有私信也没有回&#xff0c;因为我几乎没有登陆过csdn了 我从2023年3月份开学就开始准备考研了 其实3月28号就出结果了&#xff0c;后面有事情就给忘了&#xff0c;给我的粉丝解释一下&#xff08;虽然粉丝也不多&#xff09;。后面应该会…

【GPTs分享】GPTs分享之 AskYourPDF Research Assistant​

一、简介 AskYourPDF Research Assistant 是一款高级人工智能研究助手&#xff0c;专门设计用于帮助用户高效从PDF文件和文章中提取信息。它结合了深度学习技术和自然语言处理能力&#xff0c;以便用户能够快速地查询、总结及处理文档内容&#xff0c;并能够生成与文章内容相关…

JAVA的jBPM工作流框架

一. jBPM是什么&#xff1f; 现实生活中有很多需要走一些流程的过程&#xff0c;比如请假流程&#xff0c;报销流程等&#xff0c;使用工作流框架&#xff0c;即可写一个流程即可&#xff0c;添加流程时不在繁琐的建立新的各种配置。jBPM&#xff08;Java Business Process M…

力扣:104. 二叉树的最大深度(Java,DFS,BFS)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a;1.深度优先搜索&#xff08;递归&#xff09;2.广度优先搜索&#xff08;队列&#xff09; 题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从…

【CVPR2023】《A2J-Transformer:用于从单个RGB图像估计3D交互手部姿态的锚点到关节变换网络

这篇论文的标题是《A2J-Transformer: Anchor-to-Joint Transformer Network for 3D Interacting Hand Pose Estimation from a Single RGB Image》&#xff0c;作者是Changlong Jiang, Yang Xiao, Cunlin Wu, Mingyang Zhang, Jinghong Zheng, Zhiguo Cao, 和 Joey Tianyi Zhou…

MyBatisPlus详解(一)项目搭建、@TableName、@TableId、@TableField注解与常见配置

文章目录 前言1 快速入门1.1 环境准备1.1.1 新建数据库1.1.2 创建项目 1.2 快速开始1.2.1 引入MyBatisPlus依赖1.2.2 定义Mapper1.2.3 配置实体类和表的关系1.2.4 简单测试1.2.4.1 测试插入操作1.2.4.2 测试查询操作1.2.4.3 测试更新操作1.2.4.4 测试删除操作 1.3 常见注解1.3.…

Jenkins服务器IP更换,Jenkins URL地址更换

服务器的网络地址发生变动&#xff0c;修改jenkins服务器IP地址后&#xff0c;jenkins网页能够打开&#xff0c;但是job中的配置钩子没有自动改变&#xff0c;如图所示&#xff1a; 经过查询资料了解&#xff0c;需要修改jenkins本地化配置地址才可以显示正确&#xff1a; 1、…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…