网络层协议之 IP 协议

IP 协议格式

        4 位版本:此处的取值只有两个,4(IPv4)和 6(IPv6),即指定 IP 协议的版本。

        4 位首部长度:描述了 IP 报头多长,IP 报头是变长的,因为报头中的选项部分是可有可无的,此处的单位也是 4 字节(IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节)。

        8 位服务类型:实际上只有 4 位是有效的,这四位中只能出现 1 位是 1,其余的都是 0,因此就表示 IP 协议的四种形态 / 四种工作模式:最小延时、最大吞吐量、最高可靠性、最小成本。

        16 位总长度:描述了一个 IP 数据包的长度(头 + 载荷),16 位总长度意味着一个 IP 数据包最大只能支持 64KB,但是 IP 自身会支持对包的拆分和组装。虽然最大是 64KB,但实际情况进行拆分的单位往往比 64KB 小,这取决于数据链路层的情况。

        16 位标识:同一个数据拆成的多个包的标识都是一样的。3 位标志:就是一个代表结束的标志。13 位片偏移:标识了多个包的先后顺序。这几个字段都是辅助拆包 / 组包提供的。

        8 位生存时间:一个数据报在网络上能够传输的最大时间。这个时间的单位是 “次数”。一个数据报构造出来会有一个初始的 TTL 数值(比如 32、64),这个报每经过一个路由器转发,TTL-1,如果一直减到 0,还没有到达目标,那么就会认为这个报永远不会到达了,就会丢弃。

        32 位源 IP 地址、32 位 目的 IP 地址:表示发送端和接收端。虽然此处的 IP 地址是 32 位整数,但是我们平时看到的是形如 192.168.1.1 这样的一串数字,这是使用三个 . 来把 4 个字节 32 位数字给分成四个部分,每个部分分别使用 0-255 来表示,这称为:点分十进制

        但是 32 位数字,只能表示 42亿9千万个数字,而全世界能上网的设备那么多,为了解决 IP 地址不够用的问题想出了以下方法:

1. 动态分配 IP 地址。把不在联网设备的地址分配给需要上网的设备。

2. NAT 网络地址转换,本质是使用一个 IP 代表一批设备。因此在 NAT 背景下,就把 IP 地址分成两大类:

        a)内网 IP(私有 IP),形如:10.* 、172.16.* — 172.32.* 、192.168.*

        b)外网 IP(公网 IP),除了上面的类型,剩下的就是公网 IP。并且公网 IP 必须是唯一的,但是私网 IP 可以在不同的局域网中重复出现。如果某个私网里面的设备想要访问公网的设备,就需要对应的 NAT 设备(路由器)把 IP 地址进行映射,从而完成网络访问;如果公网的设备无法直接访问私网的设备

        此时,只要这个电脑是经过运营商路由器转发给服务器的,那么服务器看到的源 IP 都一样;如果此时是多个电脑同时访问同一个服务器, 服务器的响应就会发回给路由器,然后路由器再根据这些电脑不同的端口号来进行区别,决定发给哪个电脑。

3. IPv6,从根本上解决了 IP 不够用的问题(使用 16 个字节表示 IP 地址)。但是想支持 IPv6 就得更换路由器等设备,这就导致成本的上升,因此就没有广泛的到使用。所以主要还是采用上述两种办法结合。但是在我们国家,IPv6 在 2018 年的时候工信部已经大力推行,现在绝大多数设备都支持 IPv6,只是还没开启而已。

地址管理

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

        网络号:标识网段。标识相互连接的两个网段具有不同的标识。

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

一个 IP 地址,为了区分网络号和主机号的界限,引申出了子网掩码。

此处的 255.255.255.0 就是子网掩码,左侧的都是 1,右侧的都是 0,1 的部分就描述了 IP 有多少位是网络号。网络号不一定是前三个字节,而是可以调整变化的。

特殊的 IP 地址

        将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网(192.168.1.0)

        将IP地址中的主机地址全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有 主机发送数据包(192.168.1.255,使用 UDP 往这个地址上发送数据,整个局域网所有设备都能收到)

        127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1(用于测试程序是否能正常工作)

        主机号为 1,比如 192.168.0.1,一般是 “网关 IP”。网关就是类似于入口。

        本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输), 对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。

路由选择

        路由选择就是规划路径,核心就是边走边问。因为每个路由表都会保存一些周围设备的信息(路由表),所以每次有一个 IP 数据包经过路由器就会匹配路由表,看看下一步往哪走。如果有匹配的项,直接按照要求走;如果没有匹配的项,就会提供一个默认路径,即大体方向。每经过一个路由器,TTL-1,减到 0 还没到那么就会丢弃这个包。

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

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

相关文章

点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp

餐饮连锁v2版-体验后台(复制粘贴以下地址到浏览器,打开网址即可登录,) 本文来自:点餐小程序 点餐系统 微信点餐系统 支持微信小程序 支付公众号 可接入第三方配送 全开源uniapp - 源码1688 演示后台:https://diancan.…

异构图神经网络——Heterogeneous Graph Neural Networks

相关代码见文末 1.回顾同构图 1.1 GNN GNN基本计算方法——邻接矩阵乘以节点,聚合相邻节点的特征,得到本节点的特征表达 1.2 Graph Attention Network 引入图注意力,实现边的权重可学习,最简单的方法是,将两个节点的特征进行拼接,使用一组可学习的权重参数映射为边的权…

华为数据之道第一部分导读

目录 导读 第一部分 序 第1章 数据驱动的企业数字化转型 非数字原生企业的数字化转型挑战 业态特征:产业链条长、多业态并存 运营环境:数据交互和共享风险高 IT建设过程:数据复杂、历史包袱重 数据质量:数据可信和一致化…

学习大数据,所需更要的shell基础(2)

文章目录 read读取控制台输入函数系统函数bashnamedirname 自定义函数Shell工具(重点)cutawk 正则表达式入门常规匹配常用特殊字符 read读取控制台输入 1)基本语法 read (选项) (参数) ①选项: -p:指定读取值时的提示…

C++初识多态(1)

1.多态要解决的问题(引入) 任何一种机制的存在,必然是有其存在的意义的,例如我们前面学过的函数重载,运算符重载,以及引用等等,都是解决一些特殊问题的; 下面通过一些具体的例子&a…

组合模式(Composite)——结构型模式

组合模式(Composite)——结构型模式 组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能通过通用接口像独立整体对象一样使用它们。如果应用的核心模型能用树状结构表示, 在应用中使用组合模式才有价值。 例如一个场景…

剁手党必看——转转红包使用规则与最优组合计算全解析

​ 1、省钱攻略基础之“了解平台红包使用规则” 2、举个栗子 3、最优红包组合计算方法进化过程 3.1、初代“笛卡尔乘积”版 3.2、二代“边算边比较Map聚合”版 3.3、三代“边算边比较数组索引定位”版 4、总结 1、省钱攻略基础之“了解平台红包使用规则” 规则一&#x…

介绍 ffmpeg.dll 文件以及ffmpeg.dll丢失怎么办的五种修复方法

ffmpeg.dll 是一个动态链接库文件,属于 FFmpeg运行库。它在计算机上扮演着非常重要的角色,因为它提供了许多应用程序和操作系统所需的功能和组件。当 ffmpeg.dll 文件丢失或损坏时,可能会导致程序无法正常运行,甚至系统崩溃。下面…

紫外激光打标机适合在哪些材料表面进行标记

紫外激光打标机适合在多种材料表面进行标记,特别是那些对热敏感或者需要高精度、高清晰度标记的材料。以下是一些常见的适用材料: 1. 塑料:紫外激光打标机在塑料材料上表现尤为出色,因为紫外激光的短波长和高能量密度使得它能够在…

Python | Leetcode Python题解之第70题爬楼梯

题目: 题解: class Solution:def climbStairs(self, n: int) -> int:a, b 1, 1for _ in range(n - 1):a, b b, a breturn b

C语言(操作符)2

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注收藏,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记&#x…

快速话术本(常用文本快速复制工具)EXE成品+软件源码

功能介绍 经常性需要重复性的输入几个不同的文本,来回复制很麻烦,这个小工具可以帮你解决,把要经常输入的文本添加进去,点击即可复制~ 链接:https://pan.baidu.com/s/1TqtJ_Xb10k4j3dxSRjz47Q?pwdsl4l 提取码&…

如何避免在抓取Google时被屏蔽?代理IP的7个使用误区

在当今数字化时代,数据采集和网络爬取已成为许多企业和个人必不可少的业务活动。对于爬取搜索引擎数据,特别是Google,使用代理IP是常见的手段。然而,使用代理抓取Google并不是一件轻松的事情,有许多常见的误区可能会导…

【FFmpeg】Filter 过滤器 ① ( FFmpeg 过滤器简介 | 过滤器概念 | 过滤器用法 | 过滤器工作流程 | 过滤器文档 | 过滤器分类 )

文章目录 一、FFmpeg 过滤器 Filter 简介1、FFmpeg 过滤器概念2、FFmpeg 过滤器用法3、FFmpeg 过滤器工作流程4、FFmpeg 过滤器文档 二、FFmpeg 过滤器 分类1、过滤器分类 - 根据处理数据类型分类2、过滤器分类 - 根据编码器位置分类3、过滤器分类 - 根据功能分类 FFmpeg 相关文…

typescript的入门到吐槽:看了typescript,发现前端真的卷,

typescript TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 TypeScript 与 JavaScript 的区别 其实就是对JavaScript的封装,把一个弱类型语言封…

刨析YOLOv8的改进模块

1、YOLOv5回顾 这里粗略回顾一下,这里直接提供YOLOv5的整理的结构图吧:Backbone:CSPDarkNet结构,主要结构思想的体现在C3模块,这里也是梯度分流的主要思想所在的地方;PAN-FPN:双流的FPN,必须香,也必须快,但是量化还是有些需要图优化才可以达到最优的性能,比如cat前后…

淘宝扭蛋机小程序,开启你的惊喜探索之旅!

亲爱的淘宝用户们,我们非常高兴地宣布,全新的淘宝扭蛋机小程序即将上线!这是一款集合了趣味、惊喜与购物乐趣于一体的创新应用,让你在淘宝的海洋里,找到那份独特的快乐。 一、淘宝扭蛋机小程序是什么? 淘…

Qt与MySQL连接

QT连接Mysql数据库(详细成功版)-CSD N博客 我的MySQL是64位的,所以我的Qt的套件也需要是64位的 遇到的问题: (available drivers中已经有QMYSQL QMYSQL3,还是not loaded) QSqlDatabase: QMYS…

RAG 检索的底座:Milvus Cloud向量数据库

在业界实践中,RAG 检索通常与向量数据库密切结合,也催生了基于 ChatGPT + Vector Database + Prompt 的 RAG 解决方案,简称为 CVP 技术栈。这一解决方案依赖于向量数据库高效检索相关信息以增强大型语言模型(LLMs),通过将 LLMs 生成的查询转换为向量,使得 RAG 系统能在向…

团结引擎+OpenHarmony 3 通信

团结引擎和鸿蒙之间通信 因为 ts 并没有像 JAVA 有反射的调用,所以我们必须要像 Web GL 平台一样通过导出的行为告诉引擎到底哪些 ts 的接口可以给 C# 来调用。 1 在 Tuanjie 引擎里 需要一个tsllib文件,用于设置给导出对象 C#使用。就可以直接创建以 …