【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
从零开始认识IP协议
- 1 网络层协议
- 1.1 初步认识IP协议
- 1.2 初步理解IP地址
- 2 IP协议报头
- 3 初步理解网段划分
1 网络层协议
1.1 初步认识IP协议
我们已经熟悉了传输层中的UDP和TCP协议,接下来我们来接触网络层的协议:
网络层在计算机网络中的意义主要体现在它提供了一个可靠、高效且透明的数据传输机制,使得不同网络之间能够互联互通,并为上层应用提供了稳定的服务。这是实现全球互联网和现代通信基础设施的关键所在。
那么网络层是如何进行数据传输的呢?通过网络层协议,这里介绍IP协议:
IP协议下,主要包含两部分:
- 主机: 配有 IP 地址, 但是不进行路由控制的设备;
- 路由器: 即配有 IP 地址, 又能进行路由控制;
- 节点: 主机和路由器的统称;以后主机和路由器都使用节点说明!
在上图中,主机B向将数据传送给主机C,那么就会面临一个路径选择的问题!根据目的IP要进一个路径选择,选取最合适的路径传输信息!**IP提供了一种能力,将数据从主机B跨网络送至主机C的能力!**这里举个例子:
小马是学霸级别的学生,平时不怎么学习,但是考试经常考到第一名。这次的省联考要到了,小马竟然开始认真复习了,大家都认为小马有能力考到省第一。这种能力是一种观点,小马有很大的概率做成这件事情!
小马的父亲大马是学校的教务处主任,如果今天我们希望每次考试都考第一名,那么光靠小马一个人肯定是无法保证每次都是第一名的。当小马在一次月考中没有考到第一名,大马立刻重新就安排一个新考试!重新进行考试!直到小马考到第一名!
在这个例子中,主任父亲和学霸小马就能保证小马一定可以考到第一名!小马提供了考到第一名的能力;大马提供了保证第一名的策略。再看IP协议中,IP协议就提供了将数据从主机B发送到主机C的能力!传输层的TCP协议通过将数据从主机B发送到主机C的策略!
所以IP协议只提供一种能力,TCP协议通过可靠的通信策略!
1.2 初步理解IP地址
IP地址是XXX.YYY.ZZZ.AAA
的风格的点分十进制!
ip = 网络号 + 主机号。
网络中的一台主机,一定是属于一个子网的,在一个子网中的设备的IP地址是很类似的!唐僧取经的故事中,唐僧的目的地是西天大雷音寺
,首先是在西天,其次是在大雷音寺!这个西天就可以理解为子网,找到子网之后,就要寻找大雷音寺在哪里了!
2 IP协议报头
IP协议的报头是也是要进行分用和分离,IP协议的标准长度是20字节,通过对报文的前20字节进行选取就能分离报头和数据。我们来看IP协议的报头结构和TCP是很类似的!
- 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4
报文到达目标主机之后,可以根据4位首部长度确定IP报头结构,也就可以进行报头和数据的分离!
接下来我们来谈4位板本这个字段,IP协议中有:
- IPV4 :使用4字节表示一个IP地址,一般默认都是这个版本。
- IPV6:使用16字节表示一个IP地址
在网络刚刚诞生的时候使用的是IPV4,只有4字节。网络发展到今天,4字节的IP地址已经不够使用了!解决方案有NAT,最好的解决方案是IPV6,使用16字节表示IP地址!所以也就说明IPV4和IPv6并不兼容。并且由于操作系统,路由器以及一些硬件大部分都是按照IPV4版本设计的,所以目前不能一下子全都更换位IPv6版本。
-
8 位服务类型(Type Of Service): 3 位优先权字段(已经弃用),4 位 TOS 字段,和1位保留字段(必须置为 0)。4 位 TOS 分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突, 只能选择一个 。对于 ssh/telnet 这样的应用程序, 最小延时比较重要;对于 ftp 这样的程序, 最大吞吐量比较重要。
-
4位首部长度表示IP头部的长度,以32位字(4字节)为单位计算。因此,TCP头部的最大长度为15 * 4 = 60字节。
-
16位总长度(Total Length)是表示整个IP数据包的长度(包括头部和数据),以字节为单位。
-
8位协议(Protocol)指示数据部分使用的协议(例如TCP、UDP、ICMP等)。
-
32位源IP地址(Source IP Address):IPv6版本是128位,表示发送数据包的源主机IP地址。
-
32位目的IP地址(Destination IP Address):IPv6版本是128位,表示接收数据包的目的主机IP地址。
IP协议可以通过报头识别到报头的长度和整个数据包的长度,这个是与TCP协议报头结构不同的!IP协议报头中包含了目的IP和源IP以及协议号,TCP协议中包含了源端口和目的端口。**这5部分结合,组成“西天大雷音寺”,可以准确的找到目标进程!**源IP,源端口,目的IP,目的端口,协议号五元组标识一个网络通信!
3 初步理解网段划分
网段划分是计算机网络中一个十分重要的概念!一定要理解清楚!今天初步了解一下网段划分!
IPV4版本中IP地址是一个有限的资源,存在竞争关系!必须经过合理的划分来分配给不同的国家区域!
IP 地址分为两个部分, 网络号和主机号:
- 网络号: 保证相互连接的两个网段具有不同的标识;
- 主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号!
在同一个网络中,主机的IP地址是一致的,所以区分不同主机的方式是通过主机号来进行区分!我们的设备都是连接的对应的路由器,路由器一定有两个不同的网卡,既属于下层网络,也属于上层网络。是进行网络通信的中转站!所以一般路由器的主机号是1。
- 路由器有构建子网和路由的能力!在路由器的背面一般都标有路由器的IP地址!
我们可以访问这个地址,通过用户名和密码管理我们的路由器!平时手机电脑连接路由器时,就是在路由器中申请一个主机号!
通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的 IP 地址都不相同。
IP地址资源是有限的,对于国家,地区,大学…都想要对应的IP地址,所以就要对IP地址资源进行划分,划分的很简单:A类 ,非A类(B类,C类…),通过第一个比特位区分是否是A类。
- A类IP:0后的7位为网络号,一共 2 7 2^{7} 27个网络号, 2 24 2^{24} 224个主机号。
- B类IP:10后的14位为网络号,一共 2 14 2^{14} 214个网络号, 2 16 2^{16} 216个主机号。
- …
在互联网刚诞生的时候,这种划分方式是可以满足需求的,但是随着互联网的发展,这种划分方式使IP地址远远不够使用了!大多数组织都申请 B 类网络地址, 导致 B 类地址很快就分配完了, 而 A 类却浪费了大量地址;
例如,申请了一个 B 类地址,理论上一个子网内能允许 6 万 5 千多个主机,A 类 地址的子网内的主机数更多。然而实际网络架设中,不会存在一个子网内有这么多的情况。因此大量的 IP 地址都被浪费掉了!
这种划分方式就被丢弃了!于是就有了一个新的划分方式,称为 CIDR(Classless Interdomain Routing)。这种方案的依据是每个IP一定隶属于一个子网:
- 引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;
- 子网掩码也是一个 32 位的正整数。通常用一串 “0” 来结尾;
- 将 IP 地址和子网掩码进行 “按位与” 操作,得到的结果就是网络号;
- 网络号和主机号的划分与这个 IP 地址是 A 类、 B 类还是 C 类无关。
我们可以通过我们的电脑来查看一下:
子网掩码都是在路由器中配置好的!通过对报文的目的IP进行掩码操作,可以确定前往的网络号是多少!
相关文章:
【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
从零开始认识IP协议 1 网络层协议1.1 初步认识IP协议1.2 初步理解IP地址 2 IP协议报头3 初步理解网段划分 1 网络层协议 1.1 初步认识IP协议 我们已经熟悉了传输层中的UDP和TCP协议,接下来我们来接触网络层的协议: 网络层在计算机网络中的意义主要体现…...
大一物联网要不要转专业,转不了该怎么办?
有幸在2014年,踩中了物联网的风口,坏消息,牛马的我,一口汤都没喝上。 依稀记得,当时市场部老大,带我去上海参加电子展会,印象最深的,一些物联网云平台,靠着一份精美PPT&a…...
LeetCode题练习与总结:4的幂--342
一、题目描述 给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 4 的幂次方需满足:存在整数 x 使得 n 4^x 示例 1: 输入:n 16 输出&am…...
ubuntu GLEW could not be initialized : Unknown error
原因 某些ubuntu版本默认使用wayland协议,glew不支持 解决方法 1、编辑GDM3配置文件 sudo nano /etc/gdm3/custom.conf 2、修改配置文件 去掉#WaylandEnablefalse前的# 3、重启GDM3服务 sudo systemctl restart gdm3 修改后默认使用X11协议。...
51c~目标检测~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/12371248 #目标检测x1 又一个发现 都不知道是第几了 是一个高效的目标检测 动态候选较大程度提升检测精度 目标检测是一项基本的计算机视觉任务,用于对给定图像中的目标进行定位和分类。 论文地址:…...
前端工程化面试题
说一下模块化方案 模块化是为了解决代码的复用和组织问题,可以说有了模块化才让前端有了工程的概念,模块化要解决两大问题 代码隔离和依赖管理,从node.js最早发布的commonjs 到浏览器端的 AMD,CMD 规范以及兼容的 UMD 规范,再到现…...
【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…...
010Editor:十六进制编辑器
介绍 世界上最好的十六进制编辑器和出色的文本编辑器 010 Editor 是用于处理文本和二进制数据的终极工具包。 添加模板 模板库https://www.sweetscape.com/010editor/repository/templates/ 先下载一个ELF 模板 运行模板...
Vscode中Github Copilot无法使用
现象 Copilot侧边栏显示要登录,但是点击"github登录"没有反应与Copilot对话,报错如下: Unexpected token o, "[object Rea"... is not valid JSON解决方案 在网上怎么找都没找到类似的问题,最后发现是Vsco…...
<项目代码>YOLOv8表情识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
利用Msfvenom实现对Windows的远程控制
1.实验准备 kali安装 Apache2(如果尚未安装): sudo apt install apache2 启动 Apache2 服务: sudo systemctl start apache2确认 Apache2 的默认网页可以访问: 打开浏览器并访问 http://<你的Kali IP>ÿ…...
Java Iterator和for区别详解和常见问题及解决方式
在 Java 中,Iterator 是一个用于遍历集合元素的接口。它为访问集合中的元素提供了一种标准的方法,不管具体集合的实现如何。本文将详细讲解 Iterator 的使用、其与 for 循环的区别,以及在遍历集合时的删除操作可能带来的问题,并提…...
川渝地区软件工程考研择校分析
C哥专业提供——计软考研院校选择分析专业课备考指南规划 通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西…...
快捷键记忆
快捷键记忆 文章目录 快捷键记忆前言一、PotPlayer快捷键二、电脑快捷键总结 前言 提示:以下是本篇文章正文内容: 一些软件的快捷键经常忘记,写这篇文章的目的是帮助我忘记的时候来查看。 顺序实时更新: 一、PotPlayer快捷键 Po…...
Flutter鸿蒙next 状态管理高级使用:深入探讨 Provider
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
JMeter实战之——模拟登录
本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下: 一、登录过程 用户输入:用户在登录页面输入用户名和密码。发送请求&#x…...
智能台灯设计(一)原理图设计
1. 前言 作者最近突发奇想,想自己做一个小台灯,设想的功能有:带锂电池可充电、可以调节亮度,后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能,有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…...
数据库查询返回结果集及其元数据信息:ResultSet 和 ResultSetMetaData 深度解析
全文目录: 开篇语📌 目录🌟 前言📝 摘要📚 简介🔍 概述🧩 核心源码解读1️⃣ 创建数据库连接2️⃣ 执行查询获取结果集3️⃣ 读取查询数据4️⃣ 获取元数据信息 💻 案例分析…...
2.插入排序(斗地主起牌)
一、思想 扑克牌起牌 代码: 二、时间复杂度: 最好情况(已经排序好的):T O(N) 最坏情况(完全逆序):T O(N^2) 三、优劣: 严格的大小比较之后才进行错位插入&#x…...
漫谈编程小白如何成为大神:夯实基础,开启通神之路
在当今数字化时代,编程已成为一项基本技能,对于大学新生而言,掌握编程能力不仅能够为学术研究提供支持,还能为未来的职业生涯开辟广阔天地。然而,面对琳琅满目的编程语言和学习资源,新生们往往会感到迷茫和…...
基于机器学习的个性化电影推荐系统【源码+安装+讲解+售后+文档】
【1】系统介绍 研究背景 随着互联网技术的迅速发展,数字娱乐内容特别是电影和电视剧的数量急剧增加。用户在享受丰富内容的同时,也面临着选择困难的问题,即“信息过载”。传统的搜索和分类方法已经无法满足用户日益增长的个性化需求。与此同…...
企业如何配合好等级保护测评工作?
企业如何配合好等级保护测评工作,是一个涉及多方面因素的系统性任务。等级保护测评,简称等保测评,是中国对信息和信息系统安全的重要管理手段和评估制度。通过这一制度,企业可以全面了解其信息系统的安全状况,及时发现…...
Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency> 引入hutool 8.1版本的工具…...
【功能安全】汽车功能安全个人认证证书
目录 1、证书 2、课程信息 📖 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书,如下: 2、课程信息 一般上什么课程了,课程信息大概如下: 汽车功能安全工程师认证课 (3天&#…...
axios直接上传binary
axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary,平常我们很少使用,可能有的同学遇到这种情况不太会了,认为后端应该有个字段名来接收,或者使用 Formdata,但其实…...
量化交易API接口是什么?如何申请和应用?
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...
语义分割:YOLOv11的分割模型训练自己的数据集(从代码下载到实例测试)
文章目录 前言一、环境搭建二、构建数据集三、修改配置文件①数据集文件配置②模型文件配置 四、模型训练和测试模型训练模型验证模型推理 总结 前言 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改…...
Python爬虫:从入门到精通
Python爬虫:从入门到精通 在数字时代,信息就如同水源,源源不绝。然而,当你想要从海量的信息中汲取有价值的“水”,你会发现这并不是一件容易的事。这就是为什么网络爬虫出现了。它们帮助我们在网络的海洋中航行&#…...
Web组态软件
Web组态软件是近年来前端开发领域的一股新兴力量,它以其独特的魅力吸引着越来越多的开发者们。那么,Web组态软件到底是什么?它有哪些特点?我们又该如何选择和使用它呢?下面,就让我们一起探讨这些问题。 一…...
Java中为什么要私有化构造方法
为什么要私有化构造方法 要私有化的方法不是来描述一类事物的,创建没有任何意义 解决方案: 提示:这里填写该问题的具体解决方案: 为什么要将构造方法私有化? 问:如果要限制一个类对象产生,即&…...
班级网站建设/专业的网站建设公司
Ctrl/ 或 CtrlShift/注释(// 或者/*…*/ )ShiftF6重构-重命名CtrlX删除行CtrlD复制行CtrlG查找行CtrlShiftUp/Down代码向上/下移动。F2 或ShiftF2高亮错误或警告快速定位写代码,按Tab生成代码选中文本,按CtrlShiftF7高亮显示所有该…...
重庆定制型网站建设/seo怎样优化网站
第一步 安装必要的工具首先要安装必要的包。包有:libncurses5-dev(menuconfig需要的)和essentialsudo apt-get install build-essential bin86 kernel-packagesudo apt-get install libqt3-headers libqt3-mt-dev //sudo apt-get install makesudo apt-get install…...
自己做时时彩网站/手机制作网页
https://blog.csdn.net/z13615480737/article/details/78906598 使用yum,比较简单,不用考虑版本依赖问题转载于:https://www.cnblogs.com/a1304908180/p/10161299.html...
网站介绍视频怎么做/如何注册一个平台
1.sed简介sed是文本处理命令,因为其强大的功能而可称之为一种数据流编辑器。sed 对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk 有点像。sed 一次处理一行内容。处理时,把当前处理的…...
武汉网站服务/上海网络推广招聘
1、下载MongoDb https://www.mongodb.com/try/download/community 安装很简单、基本都是下一步。安装好需要进行环境变量的配置、在path里面吧对应的bin路径加入到里面D:\mongodb-win32-x86_64-2012plus-4.2.23\bin 2、集成 配置YML spring:data:mongodb:host: localhostport:…...
开发一个个人网站/最有效的推广学校的方式
[sizemedium]hibernatejsp执行数据库操作时插入一条记录,数据库里面却是两条(该记录一条空记录)解决:检查页面提交表单是是否进行了重复提交,或是进行了两次跳转[/size]...