【计网】从零开始认识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…...
漫谈编程小白如何成为大神:夯实基础,开启通神之路
在当今数字化时代,编程已成为一项基本技能,对于大学新生而言,掌握编程能力不仅能够为学术研究提供支持,还能为未来的职业生涯开辟广阔天地。然而,面对琳琅满目的编程语言和学习资源,新生们往往会感到迷茫和…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...