计算机网络之IP协议(详解
网络层主管地址管理与路由选择。而IP协议就是网络层中一个非常重要的协议。
它的作用就是在复杂的网络环境中确定一个合适的路径。
IP协议头格式

4位版本号(version)
指定IP协议的版本,目前只有两个版本:IP v4和IP v6.对于IP v4来说,这个值就是4.
4位首部长度(header length)
IP头部的长度是多少个32bit,也就是说length*4个字节数,4bit表示的最大数值是15,所以IP头部的最大长度是15*4=60字节。
8位服务类型(Type Of Service)
3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须设置为0)。
4位TOS字段分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能从中选取一个。相当于是根据需求切换形态,同一时刻只能取其中一种形态。
对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
16位总长度(total length)
IP数据报整体占了多少字节。(单个IP数据报最大长度不超过64k)
16位标识(id)
唯一标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。

如果整个IP数据报太长了,IP协议就会把这个大包拆分成多个小包,保证每个包都不超过64k。
拆分成多个包,但是只有一个TCP报头。对于IP数据报来说,根本不关心载荷中是什么东西,只是单纯的对数据进行了切分处理。
如何区分多个IP包是从同一个数据拆分出来的?
使用16位标识,多个被拆分出的IP数据报的16位标识的值是相同的。然后通过13位片偏移来描述这些小包谁先谁后。
3位标志字段
第一位保留(保留的意思是现在暂时不用,但是说不定之后会用到)
第二位为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示“更多分片”,如果分片了的话,最后一个分片置为1,其他是0.类似于一个结束标志。
13位分片偏移
是分片相对于原始IP报文开始处的偏移,其实就是表示当前分片在原报文中处在哪个位置。如果出现先发的包后到的情况, 也能确定目前包在原报文中的位置, 保证组包后数据的顺序不被打乱。
实际偏移的字节数是这个值*8得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
8位生存空间
数据报到达目的地的最大报文跳数。一般是64。表示一个IP数据报还能在网络上存在多久,单位不是时间,而是转发次数。IP数据报被发送的时候,会有一个初识的TTL(常见的如128/64),IP数据报每经过了一个路由器,TTL就会-1.如果TTL减到了0还没到达,此时收到这个包的路由器就会把这个包抛弃。
这个字段主要用来防止出现路由循环(正常的IP数据报都会在既定的TTL内到达)。
8位协议
表示上层协议的类型(TCP/UDP)。
16位首部检验和
使用CRC进行校验,来鉴别头部是否损坏。只鉴别IP头部是否损坏,剩下的载荷有自己的检验和部分。
32位源IP地址和32位目的IP地址
表示发送端和接收端。
源IP表示发送人地址,目的IP表示收件人地址。
对于IP v4来说,一个IP地址本质上是32位的整数,通常会使用“点分十进制”,这样的方式来表示IP地址。点分十进制的三个点将32位整数分为4个部分,每个部分1个字节,每个部分的取值就是0~255。
给每一个设备都分配一个IP地址这个问题如何解决?
1.动态分配IP地址
让每个设备连上网的时候才有IP,不联网时就没有IP(这个IP可以给别人用啦!)
不能从根本上解决这个问题(设备未减少,IP地址未增加),治标不治本。
2.NAT机制
存在极限,端口号的极限个数为65535
让多个设备共有同一个外网IP。
NAT机制把网络分为了内网(局域网)和外网(广域网)。
要求外网IP必须表示唯一的设备,同时内网中的若干设备可以共用同一个外网IP。
结论:
对于一个外网IP,可以在互联网的任意位置都能访问到。
对于一个内网IP,只能在当前局域网内部访问到。局域网1的设备不能使用内网IP访问局域网2的设备。
内网IP可以重复出现,只有在当前局域网内才是唯一的。
若两个链接的IP地址来自于“同一个局域网”(源IP地址相同),此时要分别看他们的端口号。
NAT不光会对IP调整成外网IP,同时也会对端口进行调整,如果端口不一样就算了,如果一样,就会调整成不同的端口。同时NAT会记录这个映射关系,保证服务器返回的数据,再按照这个映射关系给还原回去。
3.IP v6
从根本解决了问题!!!
IP v6在报头中使用了一个更长的字段来表示IP地址。
IP v6:16个字节,128位。2^128.
IP v4:4个字节,32位。2^32.
真正从根本上解决了IP地址不够用的问题。

IP v6和IP v4是不兼容的。对于一个设备要支持IP v4和IP v6是两个截然不同的机制。
推荐视频:https://www.bilibili.com/video/BV1i14y157YV/?spm_id_from=333.880.my_history.page.click
相关文章:
计算机网络之IP协议(详解
网络层主管地址管理与路由选择。而IP协议就是网络层中一个非常重要的协议。它的作用就是在复杂的网络环境中确定一个合适的路径。IP协议头格式4位版本号(version) 指定IP协议的版本,目前只有两个版本:IP v4和IP v6.对于IP v4来说,这个值就是4…...
Kubernetes之探针probe
deployment只保证pod的状态为running。如果pod状态是running,但是里面丢失了文件,导致用户不能访问数据,则deployment是不管用的,此时就需要probe来检测pod是否正常工作。 probe是定义在容器里的,可以理解为容器里加的…...
高性能低功耗4口高速USB2.0 HUB NS1.1S 兼容FE1.1
NS1.1S是一款高性能、低功耗4口高速 USB2.0 HUB 控制器,上行端口兼容高速 480MHz和全速12MHz两种模式,4个下行端口兼容高速480MHz、全速12MHz、低速1.5MHz三种模式。 NS1.1S采用状态机单事务处理架构,而非单片机架构,多个事务缓冲…...
通过VS Code轻松连接树莓派
如果您正在使用树莓派作为开发平台,那么通过远程连接VS Code到树莓派是非常方便的一种方法。这样,您可以在Windows或macOS等计算机上开发和测试代码,而不必在树莓派上进行。 以下是通过VS Code远程连接到树莓派的步骤: 1.安装Re…...
图纸等敏感文件数据外发时 如何确保效率和安全性?
很多企业随着业务的发展,需要频繁的与外部供应商、合作伙伴之间进行数据的交换和使用。尤其是制造型企业,可能每天都要与几十、上百家供应商及合作伙伴进行产品数据交换。目前,大多数企业已经在内部实施了PDM/PLM系统,实现了对组织…...
2023年CDGA考试-第4章-数据架构(含答案)
2023年CDGA考试-第4章-数据架构(含答案) 单选题 1.请从下列选项中选择不属于数据架构师职责的选项 A.确保数据架构和企业战略及业务架构一致 B.提供数据和组件的标准业务词汇 C.设计企业数据模型 D.整合企业数据架构蓝图 答案 C 2.请从下列选项中选择不属于企业数据架构…...
理解随机游走
随机游走 基本思想 从一个或一系列顶点开始遍历一张图。在任意一个顶点,遍历者将以概率1-a游走到这个顶点的邻居顶点,以概率a随机跳跃到图中的任何一个顶点,称a为跳转发生概率,每次游走后得出一个概率分布,该概率分布…...
mqtt协议1- 简介和报文格式
文章目录1.mqtt协议1: 简介和报文格式1.1.MQTT概念1.2.数据2.控制报文格式2.1.MQTT数据包结构2.2.固定头2.2.1.控制报文类型2.2.2.标志FLag2.2.3.剩余长度2.3.可变头2.4.有效载荷Payload消息体安全QoS(Quality of Service levels)ref:1.mqtt协议1: 简介和报文格式 Message Que…...
前端用动画快速实现骨架屏效果
一、动画的语法 1.定义动画 keyframes 自定义动画名称 {// 开始from {transform: scale(1);}// 结束to {transform: scale(1.5);} }// 或者还可以使用百分比定义keyframes 动画名称 {// 开始0% {transform: scale(1);}// 结束100% {transform: scale(1.5);} } 2.调用 anima…...
Python入门(未完待续。。。)
认识python 解释型(写完直接运行)、面向对象的高级编程语言;开源免费、支持交互式、可跨平台移植的脚本语言;优点:开源、易于维护、可移植、简单优雅、功能强大、可扩展、可移植;缺点:解释型→运…...
注解配置SpringMVC
使用配置类和注解代替web.xml和Spring和SpringMVC配置文件的功能。创建初始化类,代替web.xmlSpring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了Abstr…...
多项新规重磅发布,微信视频号近期需要关注这几点
随着功能的完善和内容生态的丰富,视频号逐渐放慢产品更新频率,将重点放到商家准入标准、创作者扶持计划上来,本期我们将更侧重解读平台新规,帮助大家了解行业动向,把握最新趋势。01 视频号小店结算规则修订 取消48小时…...
Java调用第三方http接口的方式
1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。 在Java项目中调用第三方接…...
【跟我一起读《视觉惯性SLAM理论与源码解析》】第五章第六章 对极几何图优化库的使用
极平面,极点,极线的概念对极几何,对极约束的概念,通过叉积以及点积的性质推导单应矩阵以及基础矩阵光束平差法BA是LSAM中常用的非线性优化方法一个图由若干个顶点以及这些顶点连接的边构成,顶点通常是待优化的变量例如…...
从没想过开源 API 工具的 Mock 功能,这么好用
很多时候,接口尚未开发完成,在系统交互双方定义好接口之后,我们可以提前进行开发和测试,并不依赖上游系统的开发实现。 通过使用Mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行…...
智慧教室--智能管控系统
智慧教室系统是一款基于AIOT数字化平台的智能教育解决方案,该系统实现了全面数字化、自动化管理和智能化控制,可大大提高教学效率和质量,为学生带来更加优质的教育体验。智能管控是智慧教室系统的核心功能之一。通过物联网技术,将…...
React的useLayoutEffect和useEffect执行时机有什么不同
我们先看下 React 官方文档对这两个 hook 的介绍,建立个整体认识 useEffect(create, deps): 该 Hook 接收一个包含命令式、且可能有副作用代码的函数。在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以…...
C语言中#include<...>和#include“...“的区别
C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程…...
ubuntu本地访问nas
需求 本地磁盘空间太小,本地网络里有个nas,希望将nas作为数据盘挂载到本地使用。 方法1 基于sftp访问nas 首先nas设置时要打开sftp访问功能。 然后用ubuntu桌面访问服务器的功能登录sftp,类似如下指令 sftp://user192.168.0.100 ubuntu下…...
第一章:网络参考模型
一、专业术语 ISO---(International Organization for Standardization)国际标准化组织 OSI---(Open System Interconnection Reference Model)开放式系统互联通信参考模型 IEEE---(Institute of Electrical and Electronics Engi…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...
npm安装electron下载太慢,导致报错
npm安装electron下载太慢,导致报错 背景 想学习electron框架做个桌面应用,卡在了安装依赖(无语了)。。。一开始以为node版本或者npm版本太低问题,调整版本后还是报错。偶尔执行install命令后,可以开始下载…...
