网络层 IP协议【计算机网络】【协议格式 || 分片 || 网段划分 || 子网掩码】
博客主页:花果山~程序猿-CSDN博客
文章分栏:Linux_花果山~程序猿的博客-CSDN博客
关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!
目录
一,前提
二,IP协议格式
三,IP数据包分片
三,网段划分
1.子网掩码
网段的理解
例子
2. NAT技术
私有IP与公有IP
NAT工作原理示例
私有ip访问外部网站(内部到外部)
外部网站响应(外部到内部)
3. 路由
嗨!收到一张超美的图,愿你每天都能顺心!
一,前提
在学习网络层之前,我们可以回顾一下上一层——传输层,这里以TCP协议为例,TCP业绩叫传输控制协议,需要保证报文传递的可靠性,将应用层下达的数据进行拆分,形成一个个TCP段(通过序列号保证可靠传输和有序接收,通过确认,检测,重传等机制),然后再向网络层进行交付,而在接收机器上传输层等待下层向上交付,这个中间的过程传输层则不关心。
传输层保证的是数据的可靠性,以及数据丢失重传等策略,网络层功能又什么? (为了避免误导,这里用AI回答)
网络层,主要职责是负责数据包在网络中的传输和路由选择,它是实现不同网络之间互联的基础。
二,IP协议格式
属性讲解
三,IP数据包分片
第二层属性比较特殊,在了解这些之前,我们首先理解一下分片概念。
我们知道一个IP数据包支持6.5w字节,这里提前透露数据链路层的知识,数据链路层每次传输字节数是有限制的,假设只支持1500字节,那么IP数据包就需要分片,同时需要多次传递。(对于分片的策略有这个功能,但并不推荐,原因可以查查资料)
进行分片后就容易出现问题,如下面问题:
1. 在接收方网络层进行组装时,如何保证数据片的是同一份IP报文,顺序,以及完整性?
首先我们先认识一下这三个属性信息:
- 16位标识(id): 标识唯一主机发送的报文。如果IP报文在数据链路层被分片了, 那么每一个片里面的这个id都是相同的。——保证分片为同一份IP数据包
- 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此, 除了最后一个报文之外, 其他报文的长度必须是8的整数倍(否则报文就不连续了)。
- 3位标志字段:
- 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到)。
- 第二位置为1表示禁止分片, 这时候如果报文长度超过MTU, IP模块就会丢弃报文.
- 第三位表示"更多分片", 如果分片了的话, 最后一个分片置为1, 其他是0。类似于一个结束标记。
三,网段划分
我们知道IPv4最大可以容纳42亿台主机,同时我们知道IPv4也即将面临地址不够用的情况,面对不够用的情况,人们想出了子网掩码,私有IP&公网IP的方式来缓解IP地址的枯竭。
首先我们得有一个全球的视角,IP地址有32位,每个国家也都需要IP地址资源,从左侧开始(255.255.255.255),假设美国拿1开头的IP,中国拿2开头的IP资源,国家以这样的方式来划分IP资源,然后在国内再进行划分(以中国为例),河北省拿21...开头的ip,河南拿22...开头的ip,通过这样的方式将IP地址划分,知道单个主机,这样就会形成两个部分,也就是要说的 IP 地址有两个部分:网络号 + 主机号
网络号 : 保证相互连接的两个网段具有不同的标识 ;主机号 : 同一网段内 , 主机之间具有相同的网络号 , 但是必须有不同的主机号 ;关于网段定义,我们后面聊完私有IP,公网IP后说。
- 有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.
- 一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器.
在曾经也有一些如何设置主机号和网络号方案,如下:
但这方案的弊端也很明显,大部分的企业或者组织更愿意选择B类的方案,导致B类方案地址缺乏,更重要的是并不是所有企业分配到的IP地址都能被使用,因此缺少一种动态分配网络号与主机号的占比的方案,称为CIDR(Classless Interdomain Routing),由此子网掩码出现。
1.子网掩码
网段的理解
这些IP地址共享相同的网络部分,意味着它们位于同一个逻辑网络或者可以无需通过路由器直接相互通信的网络部分。
更具体地说,当一个大的IP地址空间被划分为若干小的、可管理的部分时,每一个这样的部分就称为一个网段。这个划分过程通常是通过应用一个子网掩码来实现的,子网掩码决定哪些位表示网络部分,哪些位表示主机部分。
例子
假设我们有一个IP地址 192.168.1.10
和子网掩码 255.255.255.0
。
- IP地址
192.168.1.10
转换为二进制是11000000.10101000.00000001.00001010
- 子网掩码
255.255.255.0
转换为二进制是11111111.11111111.11111111.00000000
通过与运算,我们可以确定网络部分:
11000000.10101000.00000001.00000000
(即192.168.1.0
)
所以,网段指的是所有具有相同前三部分(网络部分)的IP地址集合,也就是所有形如 192.168.1.x
的地址(其中x代表可能的主机号部分,范围通常是1到254)。在这个例子中,192.168.1.0
到 192.168.1.255
就构成了一个网段,所有这些地址都在同一个逻辑网络中,理论上可以直接互相通信,不需要路由器来进行跨网段的路由。
可IPv4的地址仍旧不够用,CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然
- 动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;(上限没有提高,只是提高了利用率)
- IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及(有一部分原因是NAT技术大大缓解了IPv4的地址缺失);
- NAT技术(后面会重点介绍);
2. NAT技术
NAT(Network Address Translation,网络地址转换)技术通过允许一个私有网络内的多个设备共享一个或少数几个公有IP地址访问互联网,从而有效缓解了IPv4地址的紧缺问题。这里通过一个简化例子来说明NAT的工作原理:
私有IP与公有IP
首先,了解一下概念:
- 私有IP地址(局域网):这些地址在RFC 1918中定义,用于内部网络,不能直接在互联网上路由。常见的私有IP地址段包括:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。
- 公有IP地址(全球级的广域网):全球唯一的IP地址,可以直接在互联网上路由,但数量有限(多为一些大型跨国企业)。
NAT工作原理示例
假设有一个小型企业网络,内部有三台电脑,它们的私有IP地址分别为:
- 电脑A: 192.168.1.10
- 电脑B: 192.168.1.11
- 电脑C: 192.168.1.12
这个企业只有一个公有IP地址,例如:203.0.113.42,由路由器管理并用于外部通信。
私有ip访问外部网站(内部到外部)
- 电脑A请求访问互联网:电脑A想要访问一个外部网站,它发送的数据包源IP是其私有IP(192.168.1.10)。
- 路由器进行NAT转换:路由器接收到这个数据包后,使用NAPT(Network Address Port Translation,网络地址端口转换)技术,将数据包的源IP地址替换为公有IP地址(203.0.113.42),同时记录下这个转换关系(源私有IP、源端口到公有IP、新的端口号)。
- 数据包转发:修改后的数据包,现在拥有公有IP地址和一个新的端口号,被路由器转发到互联网上。(这里我们可以联想在学习mysql时,云服务器向公网开放时,要选择接收任一源IP的请求连接,你不会知道那个路由器会为你转发)
外部网站响应(外部到内部)
- 外部响应:当外部服务器响应时,它将数据包发送到公有IP地址(203.0.113.42)和之前路由器分配的新端口号。
- 路由器转换回私有IP:路由器根据之前的转换记录,识别出这个数据包是给电脑A的,然后将目标IP地址和端口号转换回电脑A的私有IP地址(192.168.1.10)和原来的端口号,再将数据包转发给电脑A。
通过这种方式,NAT技术使得企业网络内的多台设备可以共享同一个公有IP地址访问互联网,极大地节省了公有IP地址的消耗,缓解了IPv4地址的紧缺问题。同时,由于私有IP地址对互联网是隐藏的,这也增加了网络的安全性。
3. 路由
![](https://img-blog.csdnimg.cn/direct/9e6f83e4b0b0406a8a7f2b03fb9bccf8.png)
本质上是数据结构上图论部分,感谢兴趣的可以订阅我的高阶数据结构专栏,这里就了解一下。
高阶数据结构_花果山~程序猿的博客-CSDN博客
结语
本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获,请动动你发财的小手点个免费的赞,你的点赞和关注永远是博主创作的动力源泉。
相关文章:
![](https://img-blog.csdnimg.cn/direct/9e6f83e4b0b0406a8a7f2b03fb9bccf8.png)
网络层 IP协议【计算机网络】【协议格式 || 分片 || 网段划分 || 子网掩码】
博客主页:花果山~程序猿-CSDN博客 文章分栏:Linux_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一,前提 二&…...
![](https://img-blog.csdnimg.cn/direct/ee690ab510204494b3d171365cbb89ad.png)
Python学习笔记14:进阶篇(三)。类的终结篇,类的导入和模块的导入。
前言 这篇文章属于类知识的最后一篇,带一点点其他知识,学习内容来自于Python crash course。 关注我私信发送Python crash course,分享一份中文版PDF。 类的导入 在学习的时候,包括之前,我都是在一个文件中把所有代…...
![](https://www.ngui.cc/images/no-images.jpg)
C++ lambda表达式举例
C lambda表达式 Lambda表达式是一种简洁的方式来创建匿名函数,可以直接在函数调用的地方定义,主要用于简化代码。 Lambda表达式的基本语法如下: [capture](parameters) -> return_type {// function body };示例1:基本用法 …...
![](https://www.ngui.cc/images/no-images.jpg)
持续总结中!2024年面试必问 20 道设计模式面试题(五)
上一篇地址:持续总结中!2024年面试必问 20 道设计模式面试题(四)-CSDN博客 九、请解释代理模式(Proxy Pattern)及其类型。 代理模式(Proxy Pattern)是一种结构设计模式,…...
![](https://img-blog.csdnimg.cn/img_convert/076ecda07a4015305953549c8d73c388.png)
嵌入式面经111题答案汇总(含技术答疑)_嵌入式项目源码分享
111道嵌入式面试题答案汇总专栏链接(承诺免费技术答疑) --> 《嵌入式/C面试题解析大全》 1、简介 本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业工作经验,整理超全面111道嵌入式面试…...
![](https://img-blog.csdnimg.cn/img_convert/64b4acc5b9fd54de320522a486117847.gif)
鸿蒙开发通信与连接:【@ohos.connectedTag (有源标签)】
有源标签 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import connectedTag from ohos.connectedTag;connectedTag.init init(): boolean 初始化有源标签芯片。 需要权限&#…...
![](https://www.ngui.cc/images/no-images.jpg)
在线编程工具
1.C语言在线编程 https://www.jyshare.com/compile/11/ 2.java在线编程 https://www.w3cschool.cn/tryrun/runcode1?langjava 3.Python在线编程 https://www.python123.io/index/playground/python?ivk_sa1024320u...
![](https://img-blog.csdnimg.cn/direct/8380c8c294a04b508433106b944e5411.png)
NSSCTF中的[WUSTCTF 2020]朴实无华、[FSCTF 2023]源码!启动! 、[LitCTF 2023]Flag点击就送! 以及相关知识点
目录 [WUSTCTF 2020]朴实无华 [FSCTF 2023]源码!启动! [LitCTF 2023]Flag点击就送! 相关知识点 1.intval 绕过 绕过的方式: 2.session伪造攻击 [WUSTCTF 2020]朴实无华 1.进入页面几乎没什么可用的信息,所以想到使用dis…...
![](https://img-blog.csdnimg.cn/direct/4ec9b82204744a9bacfab400d95e5b15.png)
Vue49-props属性
一、当同一个组件标签被使用多次 因为data属性写的是函数形式! 二、需求:老王也想用<Student>组件,但是需要动态把老王想要的值传进来。 2-1、使用props属性接收参数 使用props属性,接收的这三个参数,是被保存在…...
![](https://img-blog.csdnimg.cn/direct/efc5862ce25848179ef251948960c5aa.png)
CVE-2020-1957 漏洞复现
先声明一下,免杀还是会更的,不过中间可能会穿插一下渗透的内容!!! 踩坑点: 在一开始翻阅了CSDN之后,发现不同文章之间存在出入,于是最后去了CVE的官方文档,和参考一些国…...
![](https://img-blog.csdnimg.cn/img_convert/c8aec51305027aa2ce362cec39ea7ef1.jpeg)
网工内推 | 中国电信、香港宽频系统工程师,CCIE认证优先,最高年薪25w
01 中国电信股份有限公司浙江分公司 🔷招聘岗位:系统架构师 🔷岗位职责: 1、做好客户网络和信息安全产品的解决方案支撑、交付及后续运营维护,做好相关产数项目的支撑。 2、根据信息安全管理要求,负责客户…...
![](https://img-blog.csdnimg.cn/direct/ad4d1236df0941f09853cd4523d19ae0.png)
LLVM后端 td文件 tablegen 模式匹配 寄存器 指令集 calling convention
目录 一、寄存器 1.1 寄存器定义 1.2 寄存器分类 二、指令集 2.1 指令集定义 2.2 模式匹配 2.2.1 PatFrags与PatFrag 2.2.2 OutPatFrag 2.2.3 PatLeaf 2.2.4 ImmLeaf 2.2.5 IntImmLeaf和FPImmLeaf 2.2.6 Pat 2.2.7 ComplexPattern 2.3 指令合法化 2.3.1 Promote…...
![](https://www.ngui.cc/images/no-images.jpg)
嵌入式交叉编译:frp
参考 LINUX FRP下载编译_linux编译frpc-CSDN博客 编译 make -f Makefile.cross-compiles 检查 $ make -f Makefile.cross-compiles Build darwin-amd64... Build darwin-amd64 done Build darwin-arm64... Build darwin-arm64 done Build freebsd-amd64... Build freebsd-…...
![](https://img-blog.csdnimg.cn/direct/dffb8e3f5d2842518e0fe54bc13c87cc.png)
SpringBoot实现的大文件上传
前言 大文件分片上传和断点续传是为了解决在网络传输过程中可能遇到的问题,以提高文件传输的效率和稳定性。 首先,大文件分片上传是将大文件分割成较小的片段进行上传。这样做的好处是可以减少单个文件的传输时间,因为较小的文件片段更容易快…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python高级编程】用 Matplotlib 绘制迷人的图表
用 Matplotlib 绘制迷人的图表 引言 Matplotlib 是 Python 中广泛使用的绘图库,用于创建各种图表和可视化。本文将逐步指导您使用 Matplotlib 绘制基本图表,包括折线图、条形图和散点图。 安装 Matplotlib 使用 pip 安装 Matplotlib: pi…...
![](https://img-blog.csdnimg.cn/direct/6df8beed84aa41759db7ec303c59a7ba.png)
【UML用户指南】-19-对基本行为建模-用例图
目录 1、组成结构 2、表示法 3、一般用法 3.1、对主题的语境建模 3.2、对主题的需求建模 4、常用建模技术 4.1、对系统的语境建模 4.1.1、设计过程 4.2、对系统的需求建模 4.2.1、设计过程: 5、正向工程 UML 中的用例图是对系统的动态方面建模的 5 种图之…...
![](https://img-blog.csdnimg.cn/direct/c70f90da4ac246b7b989866fef090be9.png)
mysql密码过期的修改(Your password has expired. ..)
参考文章:mysql密码过期的修改方法(your password has expired)_我是知青-RuoYi 若依 (csdn.net) 问题:Your password has expired. To log inyou must change it using a clientthat supports expired passwords. 解决方式&…...
![](https://img-blog.csdnimg.cn/direct/dd48efa1069e463496c1bbde35d0cd71.png)
vivado SLR
描述 超级逻辑区(SLR)是包含在堆叠硅中的单个FPGA芯片 互连(SSI)设备。堆叠式硅互连(SSI)技术使用无源硅 具有微凸块和硅通孔(TSV)的内插器,用于组合多个FPGA管芯 切片&a…...
![](https://www.ngui.cc/images/no-images.jpg)
【CSS】深入了解圆角属性border-radius
border-radius 是 CSS 中的一个非常有用的属性,它允许你创建具有圆角边框的元素。这个属性可以应用于一个元素的四个角,或者分别应用于每个角。下面我们将深入了解 border-radius 的使用方法和一些高级技巧。 基本用法 你可以通过为 border-radius 指定…...
![](https://img-blog.csdnimg.cn/img_convert/e44f56811ea35d77f4570fdc22d20a1b.png)
LabVIEW与C#的区别及重新开发自动测试程序的可行性分析
LabVIEW和C#是两种广泛使用的编程语言,各自有不同的应用领域和特点。本文将详细比较LabVIEW与C#在自动测试程序开发中的区别,并分析将已完成的LabVIEW自动测试程序重新用C#开发的合理性。本文帮助评估这种转换的必要性和潜在影响。 LabVIEW与C#的区别 开…...
![](https://img-blog.csdnimg.cn/direct/0d62b298fb6e4fc984c248735c616423.png#pic_center)
人工智能—美国加利福尼亚州房价预测实战
引言 在当今快速发展的房地产市场中,房价预测已成为一个至关重要的领域。它不仅关系到投资者的决策,也直接影响到普通购房者的生活质量。特别是在美国加利福尼亚州,这个以其高房价和房地产市场的波动性而闻名的地方,准确的房价预…...
![](https://img-blog.csdnimg.cn/direct/725391d0d4b34250ab1ff9c38d7bad20.png)
python pandas处理股票量化数据:笔记2
有一个同学用我的推荐链接注册了tushare社区帐号https://tushare.pro/register?reg671815,现在有了170分积分。目前使用数据的频率受限制。不过可以在调试期间通过python控制台获取数据,将数据保存在本地以后使用不用高频率访问tushare数据接口…...
![](https://www.ngui.cc/images/no-images.jpg)
enum库
Python enum 模块教程 enum 是 Python 3.4 引入的一个模块,用于定义枚举类型。枚举类型是一种特殊的数据类型,由一组命名的值组成,这些值称为枚举成员。使用 enum 可以提高代码的可读性和可维护性,特别是在处理一组相关的常量值时…...
![](https://img-blog.csdnimg.cn/direct/1461b848003c4d3687bd6434f1014bab.png)
【CT】LeetCode手撕—141. 环形链表
目录 题目1- 思路2- 实现⭐141. 环形链表——题解思路 3- ACM实现 题目 原题连接:141. 环形链表 1- 思路 模式识别 模式1:判断链表的环 ——> 快慢指针 思路 快指针 ——> 走两步慢指针 ——> 走一步判断环:若快慢相遇则有环&a…...
![](https://www.ngui.cc/images/no-images.jpg)
python,自定义token生成
1、使用的包PyJWT来实现token生成 安装:pip install PyJWT2.8.0 2、使用例子: import jwt import time pip install pyJWT2.8.0 SECRET_KEY %^ES*E&Ryurehuie9*7^%$#$EDFGHUYTRE#$%^&%$##$RTYGHIK DEFAULT_EXP 7 * 24 * 60def create_token(…...
![](https://img-blog.csdnimg.cn/img_convert/ffa3957ebfec0bbbb40d174f735299b2.jpeg)
小米SU7遇冷,下一代全新车型被官方意外曝光
不知道大伙儿有没有发现,最近小米 SU7 热度好像突然之间就淡了不少? 作为小米首款车型,SU7 自上市以来一直承载着新能源轿车领域流量标杆这样一个存在。 发售 24 小时订单量破 8 万,2 个月后累计交付破 2 万台。 看得出来限制它…...
![](https://www.ngui.cc/images/no-images.jpg)
JavaScript 函数与事件
1. JavaScript自定义函数 语法: function 函数名(参数列表){ 方法体; } 在函数被调用时,一个 arguments 对象就会被创建,它只能使用在函数体中,以数组的形式来管理函数的实际…...
![](https://www.ngui.cc/images/no-images.jpg)
Qt 焦点系统关键点总结
1.1 焦点窗口 指的是当前时刻拥有键盘输入的窗口。 Qt提供了如下接口,用于设置窗口是否是”可获取焦点“窗口: void QWidget::setFocusPolicy(Qt::FocusPolicy policy); Qt::FocusPolicy Qt::TabFocus 与焦点链相关,详解见下一…...
![](https://img-blog.csdnimg.cn/direct/6b37dae5a18349e69877fea2109788bd.png)
SpringBoot+Maven项目的配置构建
文章目录 1、application.properties2、pom.xml 1、application.properties 也可使用yml yaml #静态资源 spring.mvc.static-path-pattern/images/** #上传文件大小设置 spring.http.multipart.max-file-size10MB spring.http.multipart.max-request-size10MBspring.mvc.path…...
![](https://img-blog.csdnimg.cn/direct/527db47f9e8743d08831c59f56766400.png)
c#调用c++dll方法
添加dll文件到debug目录,c#生成的exe的相同目录 就可以直接使用了,放在构造函数里面测试...
![](https://img-blog.csdnimg.cn/20190112232114660.png)
网站开发公司创业/飓风seo刷排名软件
信号量概述 信号量广泛用于进程或线程间的同步和互斥,信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。 编程时可根据操作信号量值的结果判断是否对公共资源具有访问的权限,当信号量值大于 0 时,则可以访问&…...
40个靠谱免费网站/友情链接购买
出自:云技术尊敬的微盟商户:截止到3月1日晚8点,在腾讯云团队协助下,经过7*24小时的努力,我们数据已经全面找回,由于此次数据量规模非常大,为了保证数据一致性和线上体验,我们将于3月…...
![](https://img-blog.csdnimg.cn/864c2f9d8a8543baa2d4c87094982e23.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54Ot6KGA5ZCK6L2m5bC-fg==,size_20,color_FFFFFF,t_70,g_se,x_16)
wordpress批量管理/在线外链
注意事项: 1、被数字[1]标注的垃圾回收器组合在jdk8的时候已被废弃,在jdk9的时候已被删除 2、被数字[2]标注的垃圾回收器组合在jdk14的时候已被删除 3、CMS垃圾回收器在jdk14的时候已被删除 4、CMS在满足某个条件下会被自动替换为Serial Old...
![](/images/no-images.jpg)
教育校园网站建设方案/推广效果最好的平台
做软件到一定层次了,就要考虑到设计了,设计了很久,就是不系统,系统的设计需要一个记录,记录就用文档,那么对项目所有包括技术上的设计都记录下来,我们就可以理解为软件的概要设计了。 在需求明确…...
![](/images/no-images.jpg)
做网销好的网站/西安网站建设优化
离开学校已经两年,进入一个行业坚持两年,这两年的时间里,好像我的每一次努力都没有达到我想要的期望。更没有得到我想要的结果。BOSS说我笨,人笨就要多勤快。我承认自己不聪明,但是也不至于笨到他想像的程度。总是出现…...
聊城开发网站建设/百度广告代运营公司
文章目录1 安装latex环境2 编辑伪代码部分内容来源于https://www.linuxidc.com/Linux/2012-08/67714.htm 1 安装latex环境 sudo apt-get install texlive-full sudo apt-get install texmaker2 编辑伪代码 统计序列中降序元素对数 \documentclass{article} \usepackage{alg…...