网络层协议之 IP 协议

news2024/11/19 21:14:21

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

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

相关文章

windows驱动开发-inf文件(一)

驱动总是和inf文件相关,在WinDDK的时候,许多inf文件都需要开发工程师手动编写,不过,现在已经可以使用inx文件来生成inf文件了,它经常用于驱动的安装和卸载;不过,并不是所有的驱动都需要使用inf文…

【 npm详解:从入门到精通】

文章目录 npm详解:从入门到精通1. [npm](https://www.npmjs.com/)的安装2. npm的基础用法2.1 初始化项目2.2 安装依赖2.3 卸载依赖2.4 更新依赖 3. npm的高级用法3.1 运行脚本3.2 使用npm scope3.3 使用npm link 4. npm资源5. 使用npm进行依赖树分析和可视化6. npm进…

数据分析从入门到精通 1.numpy剑客修炼

会在某一瞬间突然明白,有些牢笼是自己给自己的 —— 24.5.5 一、数据分析秘笈介绍 1.什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化 案例: 分析用户的消…

Redis 主从复制 初步认识

文章目录 定义拓扑拓扑定义单从拓扑多从拓扑树型拓扑 使用原理建立流程持续复制 定义 Redis主从复制技术的主要满足的需求是①数据恢复②负载均衡 ①数据恢复的理解:将数据同步到多个Redis服务器中,其中一个节点数据损毁,可通过复制其他节点…

Python | Leetcode Python题解之第77题组合

题目: 题解: class Solution:def combine(self, n: int, k: int) -> List[List[int]]:ans []path []def dfs(x):remain k - len(path)if not remain:ans.append(list(path))returnif n 1 - x > remain:dfs(x 1)path.append(x)dfs(x 1)path.…

【进程间通信】共享内存

文章目录 共享内存常用的接口指令利用命名管道实现同步机制总结 System V的IPC资源的生命周期都是随内核的。 共享内存 共享内存也是为了进程间进行通信的,因为进程间具有独立性,通信的本质是两个不同的进程看到同一份公共资源,所以共享内存…

MVC 过滤器

MVC 过滤器常用有4种 Action过滤器(IActionFilter) 》 行为过滤器Result过滤器 (IResultFilter)》 视图过滤器 或 结果过滤器Exception过滤器(IExceptionFilter)》 异常过滤器Authorization过滤器&#xf…

OpenCV|简单绘制一个矩形

OpenCV中的rectangle() 为绘制矩形命令,形式如下: # (img: cv2.typing.MatLike, pt1: cv2.typing.Point, pt2: cv2.typing.Point, color: cv2.typing.Scalar, thickness: int ..., lineType: int ..., shift: int ...)cv2.rectangle(img, pt1, pt2, …

运用分支结构与循环结构写一个猜拳小游戏

下面我们运用平常所学的知识来写一个小游戏,这样能够加强我们学习的趣味性,并且能够更加的巩固我们所学的知识。 游戏代码: 直接放代码:(手势可以使用数字来代替,比如0对应石头,1对应剪刀&…

APB总线协议

一、概述 高级外围设备总线(APB)是高级微控制器总线架构(AMBA)总线层次结构的一部分,并为最小的功耗和降低接口复杂性进行了优化。AMBA APB应用于连接到任何低带宽且不需要流水线总线接口的高性能的外设。 二、APB总…

【氮化镓】GaN功率器件在转换器设计中的挑战

I. 引言(INTRODUCTION) 宽带隙(WBG)器件的重要性: 引言部分首先强调了宽带隙(WBG)器件在高频、高效率电力电子技术中的关键作用。这些器件,包括碳化硅(SiC)和氮化镓(GaN),相较于传统的硅功率器件,具有显著的优势。宽带隙半导体材料的高击穿场强允许设计更薄的漂…

linux Shell编程之条件语句

条件测试操作 test命令 条件测试操作 Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。 t…

nginx--系统参数优化telenct

系统参数 在生产环境中,根据自己的需求在/etc/sysctl.conf来更改内核参数 net.ipv4.ip_nonlocal_bind 1 允许非本地IP地址socket监听 net.ipv4.ip_forward 1 开启IPv4转发 net.ipv4.tcp_timestamps 0 是否开启数据包时间戳 net.ipv4.tcp_tw_reuse 0 端⼝口复⽤…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期,全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示,据文化和旅游部数据中心测算,全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%,而酒店作为一个高…

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

目录 导读 第三部分 第7章 打造“数字孪生”的数据全量感知能力 “全量、无接触”的数据感知能力框架 数据感知能力的需求起源:数字孪生 数据感知能力架构 基于物理世界的“硬感知”能力 “硬感知”能力的分类 “硬感知”能力在华为的实践 基于数字世界的…

Apache SeaTunnel 4月回顾:明星贡献者与技术突破

各位热爱 SeaTunnel 的小伙伴们,SeaTunnel 社区 4 月份月报来啦!这里将记录 SeaTunnel 社区每月的重要更新,欢迎关注! 月度 Merge 之星 感谢以下小伙伴 4 月为 Apache SeaTunnel 做的精彩贡献(排名不分先后&#xff…

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

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

详细介绍一下PointPillars算法的网络结构

PointPillars是一种用于3D目标检测的算法,它主要使用了点云数据和深度学习模型。 PointPillars算法的网络结构主要可以分为三个主要阶段: Pillar Feature Net(点云特征处理网络):此阶段的主要任务是将输入的点云数据转…

排序算法(Java版)

目录 1、直接插入排序2、希尔排序3、直接选择排序4、堆排序5、冒泡排序6、快速排序6.1 递归实现6.2 非递归实现 7、归并排序7.1 递归实现7.2 非递归实现 8、性能分析 今天我们学习一种算法:排序算法(本文的排序默认是从小到大顺序)&#xff0…

【mysql篇】执行delete删除大量数据后,磁盘未清空,为什么?

目录 迁移脚本删除数据以及备份数据 解决方法OPTIMIZE TABLE二进制日志按月生成数据 最近某个项目虽说用户量不大,但是,单表的数据量越来越大,mysql一般单表超过千万级别后,性能直线下降,所以利用shardingphere按月做了…