当前位置: 首页 > news >正文

计算机网络之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…...

extends in typescript

困惑 初学 ts 时,extends 让我很困惑:有时它代表 扩大 ,有时代表 缩小 。举几个例子说明: 例1: class Animal {} class Dog extends Animal {}这是 js 本身就有的 class 继承语法,很熟悉了。 Dog 是 An…...

如何找回回收站删除的文件

回收站作为删除文件后的临时存放点,只要我们是右键删除或者按delete删除的文件都会存放到这里,所以我们每次清理电脑后,都会清空回收站,这样可以让电脑保持流畅运行。但删除这个操作是很容易出错,很容易把某些重要的文…...

Git系列——Git部署及应用

下面从如下几个方面介绍下其部署及应用:Git服务器搭建Git客户端搭建Git常用命令Git服务器搭建Linux服务器搭建(Centos7.5):一、安装配置SSH(参考XXX)二、检查OS是否自带Git1、git-version //查询版本2、rpm -qa git //查询git详细信息3、yum -y remove x…...

Java多线程(二)--线程相关内容

1.创建线程的几种方式继承 Thread 类;public class MyThread extends Thread { Override public void run() {System.out.println(Thread.currentThread().getName() " run()方法正在执行..."); }实现 Runnable 接口;public class MyRunnable…...

CF1692E Binary Deque 题解

CF1692E Binary Deque 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现题目 链接 https://www.luogu.com.cn/problem/CF1692E 字面描述 题面翻译 有多组数据。 每组数据给出 nnn 个数,每个数为 000 或 1…...

rust方法和关联函数

Rust方法 在大多数面向对象的语言中都存在方法,方法一般和类关联在一起。在Rust中也是类似的,方法和对象总是一起出现。Rust的方法和结构体,枚举,特征一起使用。 定义方法 Rust使用关键字impl来定义方法,例如&#…...

深度学习如何训练出好的模型

深度学习在近年来得到了广泛的应用,从图像识别、语音识别到自然语言处理等领域都有了卓越的表现。但是,要训练出一个高效准确的深度学习模型并不容易。不仅需要有高质量的数据、合适的模型和足够的计算资源,还需要根据任务和数据的特点进行合…...

智慧教室系统--重点设备监控系统

随着教育信息化的不断发展,智慧教室已成为现代教育的重要组成部分。而智慧教室的设备管理和维护也变得越来越重要。一旦智慧教室的重要设备出现故障或异常,将会对教学活动产生不利影响,因此建立智慧教室重点设备监控系统是必要的。一、智慧教…...

Linux中断处理

目录 一、什么是中断 二、中断处理原理 三、中断接口 3.1 中断申请 3.2 中断释放 3.3 中断处理函数原型 四、按键驱动 一、什么是中断 一种硬件上的通知机制,用来通知CPU发生了某种需要立即处理的事件 分为: 1. 内部中断 CPU执行程序的过程中&am…...

python中安装gurobi和pycharm没有语法提示问题解决

安装gurobi第一步 :下载gurobi ( http://www.gurobi.com ) ,需要注册账号第二步、申请License注册如果可以通过校园网, 则直接生成。不能的话,通过网站,发邮件申请 http://www.gurobi.cn/NewsView1.Asp?id4第三、邮件…...