计算机网络笔记再战——理解几个经典的协议4
目录
IP——网际协议
IP地址
1. A类地址
2. B类地址
3. C类地址
4. D类地址(组播地址)
5. E类地址(保留地址)
特殊地址与私有地址
广播地址
IP多播
子网掩码
传统分类与CIDR/VLSM的对比
路由控制
默认路由
主机路由
环回地址
IP包的分发重组
IPv6
地址空间扩展
地址类型
自动配置
报头简化
安全性
服务质量(QoS)
移动性
过渡机制
IP——网际协议
我们终于来到了第一个严肃介绍的IP协议。他是一个经典的网络层协议,他控制了数据链路层在抽象的设备概念中的传递,也就是说,我们现在可以让数据链路层安心的传递,至于具体如何在设备之间如何按照调度流通,是IP层的事情。
我们常说的IP地址就是网络层的地址,到这里,我们使用一个IP地址来标识一个远程的目标:

在互联网内部,我们揭开这团迷雾,就是一系列用来进行转发的路由器设备:

也就是说,我们的数据包实际上就是让路由器进行一系列的转发,根据路由器的指示一步一步的到达目的地的终点!每一个路由器查看的就是包的目的地址,查询我们的路由控制表,来决定一个包到底往哪里去!
需要注意的是——IP是一个无连接的协议,或者说,它并不会跟对面打招呼说“我要传递了”才去传递,这一层次上使用IP协议的设备,对于来到的数据会立马进行转发出去。
IP地址
现在,我们来谈IP地址,对于IPv4地址,一共有32位。虽然现在来看,32位地址远远不够用了,但是我们仍然使用了子网划分办法来对IP地址的作用域进行了一定的约束(比如说看到192大头的肯定就是本地私有网的地址,绝对没办法到公网上流通一个道理)
IPv4地址是有分类的,原本,他们的分类是基于网络规模和用途设计的,分为A、B、C、D、E五类,每类通过地址的前几位比特区分
1. A类地址
-
范围:
0.0.0.0到127.255.255.255 -
二进制前缀:第一位为
0(即0xxxxxxx)。 -
结构:
-
网络部分:第一个字节(8位),但实际可用网络号为
1.0.0.0至126.0.0.0(排除0.x.x.x和127.x.x.x保留段)。 -
主机部分:后三个字节(24位),支持每个网络约1677万台主机((2^{24} - 2))。
-
-
默认子网掩码:
255.0.0.0。 -
用途:适用于超大型网络(如ISP)。
特殊保留地址:
-
127.0.0.0/8:环回地址(如127.0.0.1为本机)。 -
0.0.0.0:表示默认路由或无效地址。
2. B类地址
-
范围:
128.0.0.0到191.255.255.255 -
二进制前缀:前两位为
10(即10xxxxxx)。 -
结构:
-
网络部分:前两个字节(16位),实际网络号为
128.0.0.0至191.255.0.0,共 (2^{14} = 16384) 个网络。 -
主机部分:后两个字节(16位),支持每个网络65534台主机((2^{16} - 2))。
-
-
默认子网掩码:
255.255.0.0。 -
用途:适合中型企业或机构。
3. C类地址
-
范围:
192.0.0.0到223.255.255.255 -
二进制前缀:前三位为
110(即110xxxxx)。 -
结构:
-
网络部分:前三个字节(24位),共 (2^{21} ≈ 209万) 个网络。
-
主机部分:最后一个字节(8位),支持每个网络254台主机((2^{8} - 2))。
-
-
默认子网掩码:
255.255.255.0。 -
用途:适合小型网络(如家庭或办公室)。
4. D类地址(组播地址)
-
范围:
224.0.0.0到239.255.255.255 -
二进制前缀:前四位为
1110(即1110xxxx)。 -
用途:用于组播通信(如视频会议、流媒体),不分配给单个设备。
-
示例:
-
224.0.0.1:所有主机组播地址。 -
224.0.0.2:所有路由器组播地址。
-
5. E类地址(保留地址)
-
范围:
240.0.0.0到255.255.255.255 -
二进制前缀:前四位为
1111(即1111xxxx)。 -
用途:保留用于实验或未来扩展,不用于常规网络。
特殊地址与私有地址
-
私有地址(不可在公网路由):
-
A类:
10.0.0.0/8 -
B类:
172.16.0.0/12(172.16.0.0至172.31.255.255) -
C类:
192.168.0.0/16
-
-
自动配置地址(APIPA):
169.254.0.0/16(DHCP失败时使用)。 -
受限广播地址:
255.255.255.255。 -
网络/广播地址:主机位全0为网络地址,全1为广播地址(如
192.168.1.0为网络地址,192.168.1.255为广播地址)。
广播地址
当然,还有一类地址是广播地址,这样的地址是将主机地址部分全部写1,比如说对于B类的172.20子网下,我们会把余下的部分全部置一,得到172.20.255.255,这个地址就是将信息发送到整个子网中的所有设备。
IP多播
IP多播(IP Multicast)是一种网络通信方式,允许一个发送者将数据包同时传输给多个接收者,而不是像单播(Unicast)那样一对一传输,或广播(Broadcast)那样发送给所有设备。多播通过高效利用网络资源,特别适合一对多或多对多的通信场景。

子网掩码
这个技术的提出是基于网络分类的退出而诞生的。我们现在的IP地址是需要两个部分的东西的——一个是IP地址,另一个就是子网掩码!我们需要一个子网掩码来决定哪一些位是主机位

CIDR进一步激进的推广了上面的做法,也就是彻底的取消了网络的分类(这就是为什么偷懒使用AI帮我写了,因为已经几乎不用了),我们使用子网掩码来动态的使用一个IP来隐藏一个巨大的网络(发送到了一个IP,这个IP往往表达一个门关,这个门关接受到信息后转发给内部的路由器再展开检查主机代码)这样的技术就是VLSM。
传统分类与CIDR/VLSM的对比
| 特性 | 传统分类(A、B、C类) | CIDR/VLSM |
|---|---|---|
| 地址分配 | 固定网络和主机划分 | 灵活的网络和主机划分 |
| 掩码长度 | 固定(A类:/8,B类:/16,C类:/24) | 可变长度(任意前缀长度) |
| 地址利用率 | 低(容易浪费地址) | 高(根据需求分配) |
| 路由表大小 | 大(无法聚合) | 小(支持路由聚合) |
| 适用场景 | 早期网络 | 现代网络(IPv4和IPv6) |
路由控制
刚刚我们谈到了路由的办法,这里就是一个样例图,说明我们的包是如何传递和转发的。

常见的路由有这些:
默认路由
我们指定一个默认的设备作为未匹配的设备作为标识——比如说代表的就是0.0.0.0/0,也就是一个没有设备的IP,意味着我们实际上没有命中设备
主机路由
也就是让IP地址所有位都参与路由
环回地址
127.0.0.1,这个就是表达自己的IP地址(下次谁说查出来你的IP是127.0.0.1的直接哈哈大笑就完事了)
IP包的分发重组
我们知道通信是异步的,特化的,所以,IP作为一个宏观抽象,就必须介入屏蔽底层的抽象,现在我们的IP包分发都是分为若干带有分片标识的IP包。这里,分片的大小控制就是用了路由MTU发现的功能——也就是说,我们进行对路由器最大可以传递的单位大小进行一个试探。做法是:
-
先不分片,直接赌我们的网络可以直接发送一整个包,对于接不住的网络会直接丢弃,发送一个ICMP包返回告知目的地不可达
-
然后,逐步依次递减大小的对IP包分片,直到我们的目标设备不发回来目的不可达的ICMP包,我们认为就是最大的MTU(Max Transmit Unit)
-
之后,每当出现了目的地不可达的时候,我们进一步分片试探,动态的调整我们的包分片。
IPv6
IPv6(Internet Protocol version 6)是下一代互联网协议,旨在解决IPv4地址耗尽问题,并提供更多的改进和功能。IPv6的设计不仅扩展了地址空间,还引入了许多新的特性,以支持现代互联网的需求。
地址空间扩展
IPv6最显著的改进是其巨大的地址空间。IPv6地址长度为128位,相比IPv4的32位地址,IPv6提供了约3.4×10^38个唯一地址。这一扩展确保了未来几十年甚至更长时间内,互联网设备的增长需求能够得到满足。IPv6地址通常以八组四位十六进制数表示,例如2001:0db8:85a3:0000:0000:8a2e:0370:7334。为了简化表示,前导零可以省略,连续的零组可以用双冒号::代替,但双冒号只能使用一次。
地址类型
IPv6定义了三种主要的地址类型:单播地址、组播地址和任播地址。单播地址用于标识单个接口,数据包会被发送到该接口。组播地址用于标识一组接口,数据包会被发送到该组的所有接口。任播地址也用于标识一组接口,但数据包只会被发送到该组中最近的一个接口。IPv6取消了广播地址,取而代之的是更加灵活的组播地址。
自动配置
IPv6引入了无状态地址自动配置(SLAAC),允许设备在没有DHCP服务器的情况下自动配置自己的IPv6地址。设备通过接收路由器发送的路由器通告(RA)消息,结合自己的接口标识符(通常基于MAC地址),生成全球唯一的IPv6地址。此外,IPv6也支持有状态地址配置(DHCPv6),适用于需要更精确控制地址分配的场景。
报头简化
IPv6的报头结构相比IPv4更加简洁和高效。IPv6报头固定为40字节,包含8个字段,而IPv4报头长度可变,包含13个字段。IPv6报头的简化减少了路由器处理数据包的开销,提高了转发效率。此外,IPv6将可选字段移到了扩展报头中,使得路由器在处理数据包时只需查看基本报头,进一步提高了性能。
安全性
IPv6在设计时考虑了安全性,IPsec(Internet Protocol Security)成为IPv6的强制组成部分。IPsec提供了数据加密、认证和完整性保护,确保通信的安全性和隐私性。虽然IPsec也可以在IPv4中使用,但在IPv6中它是内置的,更容易部署和使用。
服务质量(QoS)
IPv6引入了流量类别和流标签字段,支持更好的服务质量(QoS)管理。流量类别字段用于标识数据包的优先级,流标签字段用于标识特定流的数据包,使得网络设备能够对不同类型的流量进行区别处理,确保关键应用的低延迟和高带宽需求。
移动性
IPv6对移动设备的支持更加友好。移动IPv6(MIPv6)允许设备在改变网络连接点时保持持续的IP连接,而无需中断正在进行的通信。这对于移动互联网和物联网设备尤为重要,确保了无缝的网络体验。
过渡机制
由于IPv6与IPv4不兼容,过渡期间需要采用多种机制确保两种协议的共存和互通。常见的过渡技术包括双栈(Dual Stack)、隧道(Tunneling)和协议转换(NAT64)。双栈允许设备同时运行IPv4和IPv6协议栈,隧道技术将IPv6数据包封装在IPv4数据包中传输,NAT64则允许IPv6设备与IPv4设备通信。
相关文章:
计算机网络笔记再战——理解几个经典的协议4
目录 IP——网际协议 IP地址 1. A类地址 2. B类地址 3. C类地址 4. D类地址(组播地址) 5. E类地址(保留地址) 特殊地址与私有地址 广播地址 IP多播 子网掩码 传统分类与CIDR/VLSM的对比 路由控制 默认路由 主机路由…...
Java CountDownLatch 用法和源码解析
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
深度学习在文本情感分析中的应用
引言 情感分析是自然语言处理(NLP)中的一个重要任务,旨在识别和提取文本中的主观信息。随着深度学习技术的发展,我们可以使用深度学习模型来提高情感分析的准确性和效率。本文将介绍如何使用深度学习进行文本情感分析,…...
C++编码规范(六)关于C++标准库STL在使用中的一些规范和建议
C 标准库STL是 C 编程语言的重要组成部分,为开发者提供了丰富的功能和工具,极大地提高了开发效率和代码的可移植性。 其主要包括:标准容器库,输入 / 输出流库,算法库,迭代器库,字符串库…...
两种文件类型(pdf/图片)打印A4半张纸方法
环境:windows10、Adobe Reader XI v11.0.23 Pdf: 1.把内容由横排变为纵排: 2.点击打印按钮: 3.选择打印页范围和多页: 4.内容打印在纸张上部 图片: 1.右键图片点击打印: 2.选择打印类型: 3.打印配置&am…...
Vue3状态管理: Pinia使用技巧与最佳实践
Vue3状态管理: Pinia使用技巧与最佳实践 随着Web应用复杂度的提升,前端状态管理变得愈发重要。而在Vue3中,Pinia作为一种全新的状态管理工具,为我们提供了更加灵活和强大的状态管理解决方案。本文将从Pinia的基本概念入手,深入探讨…...
stm32点灯 GPIO的输出模式
目录 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置( 默认不变)HSI 高速内部时钟8Mhz 5.项目配置 6.代码 延时1s循环LED亮灭 1.选择RCC时钟 2.SYS 选择调试模式 SW 3.GPIO 配置 4.时钟树配置( 默认不变)…...
K8S运行时切换-从Docker到Containerd的切换实战
1. 切换的原因 性能提升:Containerd通过减少抽象层提升了整体性能。 安全性增强:它提供了更直接的系统调用,减少了潜在的安全风险。 简化架构:Containerd拥有更简洁的设计,使得维护和故障排除更为容易。 官方支持趋…...
腾讯会议win7二维码展示不出来
问题:win64更新后二维码展示不出来,手机等登陆都不行 安装所在位置创建文档命名TBSDEBUG并去掉后缀...
swift 专题三 swift 规范一
一、Swift编码命名规范 对类、结构体、枚举和协议等类型的命名应该采用大驼峰法,如 SplitViewController。 文件名采用大驼峰法,如BlockOperation.swift。 对于扩展文件,有时扩展定义在一个独立的文件中,用“原始类型名 扩展名…...
WPS计算机二级•幻灯片放映与会议
听说这是目录哦 放映PPT时常用的快捷技巧🥬设置放映模式🥕演讲备注的添加和隐藏🫚在PPT中插入附件并放映时打开🫛隐藏幻灯片 不被放映和打印🍄🟫演讲计时模式🥦能量站😚 放映PPT时…...
联想拯救者开机进入bios
如果你的联想拯救者(Lenovo Legion)笔记本电脑开机后直接进入 BIOS 设置界面,可能是以下原因之一导致的。以下是解决方法: 1. 检查启动顺序 进入 BIOS 后,找到 Boot(启动)选项卡。检查启动顺序…...
云原生周刊:K8s引领潮流
开源项目推荐 KWOK KWOK(Kubernetes WithOut Kubelet)是一个开源项目,旨在提供一个轻量级的 K8s 集群模拟环境,允许用户在不依赖真实节点的情况下,本地模拟整个 K8s 集群。它通过模拟 Kubelet 和其他集群组件的行为&…...
FBX SDK的使用:基础知识
Windows环境配置 FBX SDK安装后,目录下有三个文件夹: include 头文件lib 编译的二进制库,根据你项目的配置去包含相应的库samples 官方使用案列 动态链接 libfbxsdk.dll, libfbxsdk.lib是动态库,需要在配置属性->C/C->预…...
计算机网络笔记再战——理解几个经典的协议6——TCP与UDP
目录 先说端口号 TCP 使用序号保证顺序性和应答来保证有效性 超时重传机制 TCP窗口机制 UDP 路由协议 协议分类:IGP和EGP 几个经典的路由算法 RIP OSPF 链路状态数据库(LSDB) LSA(Link State Advertisement࿰…...
Android 单例模式:实现可复用数据存储
引言 在 Java 开发中,我们经常会遇到需要在整个应用程序中共享数据的场景。例如,配置信息、缓存数据等,这些数据需要在不同的模块或类中被访问和使用。为了确保数据的一致性和避免重复创建,我们可以使用单例模式来实现一个可复用的…...
【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制
【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制 一. 数据同步 在之前的学习中有了副本Replica的概念,解决了数据备份的问题。我们还需要面临一个设计难题即:如何处理分区中Leader与Follwer节点数据同步不匹配问题所带来的风险,这也是保证数据高可用的…...
【Linux】curl命令详解
【Linux】curl命令详解 【一】curl命令介绍【1】curl命令简介【2】curl命令的基本语法【3】常用的curl命令选项【4】常用的curl命令参数 【二】curl命令示例用法【1】下载文件【2】发送 POST 请求【3】发送请求时附加头部信息【4】请求方法【5】指定用户名和密码进行身份验证【…...
创建模态框和非模态框
主要的精简代码就这些 #include <QDialog>// 创建模态框 QDialog dialog(this); // 添加各种部件 // ... // 因为创建在栈上面,所以需要阻止程序继续运行 dialog.exec();// 非模态框 QDialog dialog new Dialog(this); // 添加各种部件 // ... dialog.show(…...
电商用户画像数据可视化分析
电商用户画像数据可视化分析 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&am…...
Vue3.5常用特性整理
Vue3.5 发布已近半年,抽空整理下常用的新增/改动特性 响应式 Props 解构 Vue3.5 中 Props 正式支持解构了,并添加了响应式跟踪 设置默认值 使用 JavaScript 原生的默认值语法声明 props 默认值 以前 const props withDefaults(defineProps<{ co…...
Android Studio:Application 和 Activity的区别
Application 和 Activity 是 Android 中非常重要的两个组件,它们分别负责不同的生命周期管理和应用的不同层次的操作。 Application 是应用级别的生命周期管理,它在整个应用运行时只有一个实例,负责应用的全局初始化和资源管理。Activity 是…...
深入解析“Self-Contained”——从技术到日常的全方位应用
深入解析“Self-Contained”——从技术到日常的全方位应用 一、引言 在阅读技术文档、编程指南或产品说明时,你可能经常看到 self-contained 这个短语。例如: Our end goal is a self-contained project containing two parts. https://howistart.org/p…...
2024年12月 Scratch 图形化(一级)真题解析 中国电子学会全国青少年软件编程等级考试
202412 Scratch 图形化(一级)真题解析 中国电子学会全国青少年软件编程等级考试 一、单选题(共25题,共50分) 第 1 题 点击下列哪个按钮,可以将红框处的程序放大?( ) A. B. C. D. 标…...
llama.cpp GGML Quantization Type
llama.cpp GGML Quantization Type 1. GGML Quantization Type2. static const struct ggml_type_traits type_traits[GGML_TYPE_COUNT]3. Q#_K_M and Q#_KReferences 什么神仙妖魔,不过是他们禁锢异族命运的枷锁! GGUF https://huggingface.co/docs/hu…...
【深度学习框架】MXNet(Apache MXNet)
MXNet(Apache MXNet)是一个 高性能、可扩展 的 开源深度学习框架,支持 多种编程语言(如 Python、R、Scala、C 和 Julia),并能在 CPU、GPU 以及分布式集群 上高效运行。MXNet 是亚马逊 AWS 官方支持的深度学…...
游戏引擎学习第87天
当直接使用内存时,可能会发生一些奇怪的事情 在直接操作内存时,一些意外的情况可能会发生。由于内存实际上只是一个大块的空间,开发者可以完全控制它,而不像高级语言那样必须遵守许多规则,因此很容易发生错误。在一个…...
【物联网】ARM核常用指令(详解):数据传送、计算、位运算、比较、跳转、内存访问、CPSR/SPSR
文章目录 指令格式(重点)1. 立即数2. 寄存器位移 一、数据传送指令1. MOV指令2. MVN指令3. LDR指令 二、数据计算指令1. ADD指令1. SUB指令1. MUL指令 三、位运算指令1. AND指令2. ORR指令3. EOR指令4. BIC指令 四、比较指令五、跳转指令1. B/BL指令2. l…...
Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器
一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外,还有一个小众的市场,那就是多媒体展厅场景,这个场景目前处于垄断地位的软件是HirenderS3,做的非常早而且非常全面,都是通用的需求&…...
VSCode源码分析参考资料
VSCode Architecture Analysis - Electron Project Cross-Platform Best Practices 中文版 VSCode 架构分析 - Electron 项目跨平台最佳实践 Sihan Li博客上的vscode源码分析系列:分析了微服务架构、事件体系、资源管理、配置系统等 文召博客上的vscode 源码解析…...
