【网络】网络层协议IP

目录

IP协议报头

报头分离和向上交付

四位版本

8位服务类型

16位总长度

八位生存时间

16位标识一行

网段划分

DHCP

私有IP范围

公网划分之CIDR

特殊的IP地址

缓解IP地址不够用的方法

NAT技术

路由


IP是用来主机定位和路由选择的,它提供了一种能力,就是将数据从A点跨网络送到B点。

并且这种能力并不是一定能完成,而是有较大概率能完成。

我们在网络世界中追求的就是将数据可靠送达可靠用的策略是TCP,而送达用的就是IP的能力

就是因为TCP和IP只是负责把数据送到,跟什么业务无关,所以可以做进操作系统

我们平时也见过很多IP,IP都是由目标子网+目标主机构成的

我们的网络世界可以看成一片区域为一个子网(局域网),比如一个学校,一个村庄或一个小区等,每个子网中都有一个工业级路由器,这些工业级路由器之间可以互相转发报文

所以IP协议是如何进行主机定位和报文转发的呢?

1.根据目的IP,进行局域网之间的转发(工业级路由器之间)

2.局域网内,进行内网转发

IP协议报头

这个报头总共也是20个字节,和TCP一样

报头分离和向上交付

IP报头分离靠的是4为首部长度,它存的是报头和选项的总长度,基本单位仍然是4字节,最大可表示60个字节

IP报头向上交付靠的是8位协议,这里面存的就是上层协议的类型(udp/tcp)

四位版本

四位版本中存0100就表示IPV4(用32位表示源,目的IP)

存0110就表示IPV6(用128位表示源,目的IP)

并且这两种版本是独立的,不相互兼容

因为32位最多能表示的IP地址个数就是2^32次方,大概是40多亿,在当今社会肯定是不够用的,所以为了发展,能有更多的IP地址,就有了IPV6。但是因为目前大部分设备使用的都是IPV4,IPV6不好推广,所以一般IPV6在内网中容易被替换使用

所以前面说的IPV4地址不够用,但是现在也没说用到竭尽了,用的是一种NAT技术

8位服务类型

8位服务类型是你可以选择数据在网络中走的时候选用什么样的策略,比如延时小,成本低等

8位服务类型(Type Of Service),三位优先权字段(已经弃用),四位TOS字段,和一位保留字段(必须值为零)。

四位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个

对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要

16位总长度

16位总长度指报头+有效载荷的长度

八位生存时间

八位生存时间,我们可以把它看作一个计数器,每经过一个路由器计数就减一,计数器到0了就丢弃,就是为了防止报文在几个路由器之间循环转发的问题(因为上了规模的软件都是由BUG的,路由器中肯定是有软件的),这样不但不会把消息发到,还会浪费电力、网络资源

我们之前在写套接字的时候要把IP从点分十进制字符串转成网络序列的4字节IP就是因为协议中就是这样规定的(32位源、目的IP地址)

16位标识一行

我们前面说过网络中能够传输的最大数据包大小是mtu,也就是说数据链路层最多传1500个字节,那么如果IP的上层TCP传的字节数大于mtu,此时IP层就要进行分片和组装

其实让网络层进行分片是属于少量情况,因为分片缺点还是很大的,就是会增加TCP层丢包概率

因为同样一份数据,如果TCP一次交给IP,那么IP比如要分十片,这十片中只要丢一片对方的IP层就无法向上交付,就会触发TCP的超时重传十片;如果TCP分十次交给IP,IP丢一个TCP只需要超时重传一个即可

所以站在TCP角度分片传输是增加丢包概率的

那么下面就来解释一下16位标识这一行中三个部分的各自作用,IP就是通过这三个部分进行分片和组装的

16位标识:TCP传下的数据分成几片后唯一的标识,用来确定来自TCP的同样一个报文

3位标志字段:第一位保留(目前还没用到),第二位用于指示数据包是否可以被分片。当设置为1时,表示禁止分片。这意味着如果数据包的大小超过了沿途网络设备(如路由器)的最大传输单元(MTU),则整个数据包将被丢弃,而不是被分片传输。第三位设为1表示后面还有更多分片,为0表示后面没有分片了,类似于一个结束标记

13为分片偏移:是分片相对于原始IP报文开始处的偏移。因为这个只有13位,而报文总长度用16位表示,所以实际偏移的字节数是这个值*8得到的。因此除了最后一个报文之外,其他报文的长度必须是8的整数倍。

网段划分

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

网络号:保证相互连接的两个网段具有不同的表示

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

下面说的私有IP地址指的是内网、子网、局域网

公网IP地址就是公网,只有入了公网才能入互联网

DHCP

我们连上路由器,那么路由器就会给我们一个IP地址,这种技术就叫做

DHCP:能够自动的给子网内新增的主机节点分配IP地址,避免了手动管理IP的不便

一般的路由器都带有DHCP功能,因此一个路由器也可以看作一个DHCP服务器

私有IP范围

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上可以用任意的IP地址,但是RFC 1918规定了组建局域网的私有IP地址

10.*,前八位是网络号,共2^24,16,777,216个地址

172.16.*到172.31.*,前12位是网络号,共16*2^16,1,048,576个地址

192.168.*,前16位是网络号,共2^16,65,536个地址

包含在这个范围中的,都成为私有IP,其余的则称为全局IP(或公网IP)

公网划分之CIDR

把所有的IP看作一块大蛋糕,上面的私有IP已经占据了一部分,剩下的都叫做公网IP,那么对于这一大堆公网IP应如何划分呢?下面的划分方案叫做CIDR:

引入一个额外的子网掩码来区分网络号和主机号

子网掩码也是一个32位的正整数,通常前面一串1,后面一串0

将IP地址和子网掩码进行按位与操作,得到的结果就是网络号

下面我们来举一个简单的例子

比如IP地址是130.252.20.64,子网掩码是255.255.255.0(比特位是前面24个1,后面8个0)

那么它们进行按位与操作就得到了网络号,即为130.252.20.0

这个网络号的子网地址范围是130.252.20.0~130.252.20.255

特殊的IP地址

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

将IP地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中相互连接的所有主机发送数据包(比如上面的130.252.20.255,所以主机可用的IP范围是130.252.20.1~130.252.20.254)

127.*的IP地址用于本地环回测试,通常是127.0.0.1

就是说这个地址到了IP层会进行判断,发现是本地环回又会交给上层

缓解IP地址不够用的方法

上面说的CIDR只是提高了IP地址的利用率,减少了浪费,但是IP地址的绝对上线并没有增加,仍然不是很够用,这时候有三种方法来解决:

动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP不一定是相同的

NAT技术

NAT(Network Address Translation,网络地址转换)技术是一种将私有网络地址(如局域网内部地址)转换成公共网络地址(如互联网地址)的技术。这种技术通常应用于连接私有网络与公共网络之间的路由器上,实现多台计算机共用一个公网IP地址上网。

也就是说其实公网IP是有限的,不可能每台计算机一个,但是至少可以保证一个城市一个公网IP,运营商比如在一个城市内组建局域网,当然局域网内还有一个个局域网,那么从这个城市中发出的所有信息在经过城市路由器后就会转化成城市的公网IP(公网中不会出现私有IP),这样消息就可以转发到各处了

上面的局域网的组建工作都是运营商做的,所以我们将来的所有的报文都必须走运营商,如果我们想访问外网IP,运营商就会给我们拦截

路由器要横跨两个网络,一个是LAN口IP(子网IP,局域网IP),一个是WAN口IP

所以私有IP在自己所在的局域网中不会重复,但是如果是不同的局域网,IP可能会重复,由于这种重复性,一个局域网中的主机和另一个局域网中的主机不通过公网是不能进行通信的;但是一个局域网中的不同主机是可以通信的

IPV6,它用128位来表示一个IP地址,IP地址的绝对数量增加,但是还没有普及

路由

路由指的就是网络中的消息是如何转发的,主机和路由器都有路由表,下面是一个主机的路由表

其中Destination是目的网络地址,Genmask是子网掩码,Getway是下一跳地址,Iface是发送接口,Flags中U标志位表示此条目有效(可以禁用某些条目),G标志位表示此条目的下一跳地址是某个路由器的地址,没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经过路由器转发

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

【Canal 中间件】Canal 实现 MySQL 增量数据的异步缓存更新

文章目录 一、安装 MySQL1.1 启动 mysql 服务器1.2 开启 Binlog 写入功能1.2.1创建 binlog 配置文件1.2.2 修改配置文件权限1.2.3 挂载配置文件1.2.4 检测 binlog 配置是否成功 1.3 创建账户并授权 二、安装 RocketMQ2.1 创建容器共享网络2.2 启动 NameServer2.3 启动 Broker2.…

深度学习(九):推荐系统的新引擎(9/10)

一、深度学习与推荐系统的融合 深度学习在推荐系统中的融合并非偶然。随着互联网的飞速发展&#xff0c;数据量呈爆炸式增长&#xff0c;传统推荐系统面临着诸多挑战。例如&#xff0c;在处理大规模、高维度的数据时&#xff0c;传统方法往往显得力不从心。而深度学习以其强大的…

masm汇编字符串输出演示

assume cs:code, ds:datadata segmentmassage db zhouzunjie, 0dh, 0ah, $ data endscode segmentstart:mov ax, datamov ds, axmov ah, 09hlea dx, massageint 21hmov ax, 4c00hint 21hcode ends end start 效果演示&#xff1a;

在昇腾Ascend 910B上运行Qwen2.5推理

目前在国产 AI 芯片&#xff0c;例如昇腾 NPU 上运行大模型是一项广泛且迫切的需求&#xff0c;然而当前的生态还远未成熟。从底层芯片的算力性能、计算架构的算子优化&#xff0c;到上层推理框架对各种模型的支持及推理加速&#xff0c;仍有很多需要完善的地方。 今天带来一篇…

HarmonyOS一次开发多端部署三巨头之界面级一多开发

界面级一多开发 引言1. 布局能力1.1 自适应布局1.1.1 拉伸能力1.1.2 均分能力1.1.3 占比能力1.1.4 缩放能力1.1.5延伸能力1.1.6 隐藏能力1.1.7 折行能力 1.2 响应式布局1.2.1 断点和媒体查询1.2.2 栅格布局 2. 视觉风格2.1 分层参数2.2 自定义资源 3. 交互归一4. IDE多设备预览…

(58)LMS自适应滤波算法与系统辨识的MATLAB仿真

文章目录 前言一、LMS算法的基本步骤二、LMS算法的一些主要应用1. 通信系统2. 信号分离与增强3. 控制系统4. 生物医学信号处理5. 机器学习与模式识别6. 其他应用 三、LMS算法用于系统辨识的MATLAB仿真四、仿真结果 前言 LMS&#xff08;Least Mean Squares&#xff0c;最小均方…

bootstrap应用1——计算n从1-100000的每个整数,第j个观测在自助法样本里的概率。

计算n从1-100000的每个整数&#xff0c;第j个观测在自助法样本里的概率。 pr function(n) return(1 - (1 - 1/n)^n) x 1:10000 plot(x, pr(x))

AI-基本概念-向量、矩阵、张量

1 需求 需求&#xff1a;Tensor、NumPy 区别 需求&#xff1a;向量、矩阵、张量 区别 2 接口 3 示例 4 参考资料 【PyTorch】PyTorch基础知识——张量_pytorch张量-CSDN博客

【设计模式】策略模式定义及其实现代码示例

文章目录 一、策略模式1.1 策略模式的定义1.2 策略模式的参与者1.3 策略模式的优点1.4 策略模式的缺点1.5 策略模式的使用场景 二、策略模式简单实现2.1 案例描述2.2 实现代码 三、策略模式的代码优化3.1 优化思路3.2 抽象策略接口3.3 上下文3.4 具体策略实现类3.5 测试 参考资…

2025年PMP考试的3A好考吗?

确实&#xff0c;PMP正式抛弃第六版用第七版教材了&#xff0c;但是考纲还是跟24年一样的&#xff0c;情景题多&#xff0c;考的比之前灵活&#xff0c;但是 3A 的人也不少&#xff0c;按照机构的计划来学习并没有很难&#xff0c;给大家说说我的备考经历吧&#xff0c;希望对你…

VScode + PlatformIO 了解

​Visual Studio Code Visual Studio Code&#xff08;简称 VS Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件以扩展的方式支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构功能&#xff0c;并且内置了工具和 Git 版本…

完美日记营销模式对开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的启示

摘要&#xff1a;本文通过分析完美日记在营销中利用社会基础设施升级红利、网红与新流量平台、KOL 和私域流量等策略取得成功的案例&#xff0c;探讨其对开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序在营销推广、用户获取与留存、提升复购率等方面的启示&#xff0c;为商城…

Failed to install Visual Studio Code update

当关闭vsCode的时候&#xff0c;出现了下面的报错&#xff1a; 可能是之前将vscode文件换了位置导致的&#xff0c;并且vscode在桌面的图标也变成了下面这个&#xff1a; 解决方法&#xff1a; 找到上图路径的log文件并打开&#xff1a; 搜索电脑中的Code.exe文件 并粘贴到上…

python在word的页脚插入页码

1、插入简易页码 import win32com.client as win32 from win32com.client import constants import osdoc_app win32.gencache.EnsureDispatch(Word.Application)#打开word应用程序 doc_app.Visible Truedoc doc_app.Documents.Add() footer doc.Sections(1).Footers(cons…

Rust 力扣 - 73. 矩阵置零

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用两个变量记录矩阵初始状态的第一行与第一列是否存在0 然后我们遍历矩阵&#xff08;跳过第一行与第一列&#xff09;&#xff0c;如果矩阵中元素为0则将该元素映射到矩阵第一行与矩阵第一列的位置置为0…

Python | Leetcode Python题解之第537题复数乘法

题目&#xff1a; 题解&#xff1a; class Solution:def complexNumberMultiply(self, num1: str, num2: str) -> str:real1, imag1 map(int, num1[:-1].split())real2, imag2 map(int, num2[:-1].split())return f{real1 * real2 - imag1 * imag2}{real1 * imag2 imag1…

tauri开发中如果取消了默认的菜单项,复制黏贴撤销等功能也就没有了,解决办法

取消默认的菜单项&#xff1a;清除tauri默认的菜单项&#xff0c;让顶部的菜单menu不显示-CSDN博客 就是通过配置空菜单&#xff0c;让菜单不显示&#xff0c;但是这个引发的问题就是复制黏贴撤销等功能也就没有了&#xff0c;解决办法&#xff1a; 新增加编辑下的子菜单&…

STM32F103C8T6学习笔记3--按键控制LED灯

1、实验内容 S4、S5分别接PB12和PB13&#xff0c;实验要求&#xff0c;按下S4&#xff0c;D1亮&#xff0c;D2灭&#xff1b;按下S5&#xff0c;D2亮&#xff0c;D1灭。 由于按键学习的是GPIO口的输入功能&#xff0c;和输出功能的配置略有区别。本次通过按键触发相应功能没有…

微服务核心——网关路由

目录 前言 一、登录存在的问题归纳 二、*微服务网关整体方案 三、认识微服务网关 四、网关鉴权实现 五、OpenFeign微服务间用户标识信息传递实现 六、微服务网关知识追问巩固 前言 本篇文章具体讲解微服务中网关的实现逻辑、用于解决什么样的问题。其中标题中标注* 涉…