当前位置: 首页 > backend >正文

子网划分核心原理 (网络原理1)

本章节将要讲解的是网络层协议:

        IP协议是网络层最核心的协议,它主要解决数据传输中主机到主机的问题,而TCP是解决进程到进程的问题。

  • IP = 目标网络+目标主机

        路由器负责把数据从一个子网(局域网)路由到另一个子网,传统路由器只具备网络层及以下的功能。当代路由器已经是小型计算机了。

基本概念:

  • 主机:配有IP地址,也要进⾏路由控制的设备;
  • 路由器:即配有IP地址,⼜能进⾏路由控制;
  • 节点:主机和路由器的统称;

 IP协议报头

内核源码:

struct iphdr {unsigned char	version : 4;unsigned char	ihl : 4;unsigned char	tos;unsigned short	tot_len;unsigned short	id;unsigned short	frag_off;unsigned char	ttl;unsigned char	protocol;unsigned short	chksum;IPADDR			src_addr;IPADDR			dst_addr;
};

4位版本:标识IP的版本,IPv4 的值为4,IPv6 的值为6

4位首部长度:表示报头的长度

        因为报头的选项长度是不确定的,所以报头长度就不是固定的,需要首部长度来标识报头的长度。

        首部长度:4bite位(0~15),基本单位是4字节,也就是说首部长度需要乘以4字节才是所表示的报头长度,所以它能表示的长度范围是[0*4,15*4]字节。如上图TCP报头至少是20字节,x*4 = 20,x=5;即首部长度范围[5,15]。tcp报头长度一定能整除4字节。

8位服务类型

        定义数据包的优先级和服务类型

16位总长度:整个数据包的长度,即报头+有效载荷

16位标识,3位标志,13位偏移分片有关,到后续文章分片技术进行讲解。

8位生存时间

        本质是计数器,数据包每经过一个路由器减 1,归零时丢弃。目的是防止因路由环路导致数据包无限循环(如 TTL=64 时最多经过 64 跳)。

8位协议

        标识上层协议类型(如 TCP、UDP、ICMP),接收方需知道将数据交给哪个上层协议处理(例如 6=TCP,17=UDP)。

16位首部校验和

        校验 IP 报头是否传输错误,确保报头字段(如目标 IP、协议类型)未被篡改或损坏。例如:电会产生磁场,会影响另一个线的流动,导致bite位反转,波峰变成波谷。

32位源/目的IP地址

        标识发送方和接收方的逻辑地址,互联网依赖 IP 地址寻址,确保数据包能路由到正确目标,源地址用于回复或错误报告(如 ICMP)。

选项字段

        扩展功能(如记录路由、时间戳),用于调试或特殊需求(现较少使用,因增加路由器处理负担)。

  • 注意:IP版本基本上都是IPV4,IPV4和IPV6不兼容。
  • 注意:IP不解决可靠性问题,但要保证交付的是正确的报文。

子网划分

        共识:网络本身是几十年发展的产物,在网络建设时,是经历了几十年的规划建设的!—— 网络是被设计过的。

        把一个局域网比作是学校,把主机比作是学生,IP比作是学号。我们拿着IP在网络中找到一个主机,和拿着学号在学校里找到一个学生差不多。我们并不是拿着学号去找学生一个一个比对,把所有人都遍历一遍,这样效率太低了。而是在学号上做特殊设计,比如

        学号 = 学院号 + 班级号 + 班级内序号

这样就只需要做三轮比对就能快速找到对应的学生。

数据如何在网络中找到对端主机呢?

举个例子,比如数统院李四捡到了学生证,学号是0625866,找到并归还给对应学生的过程如下:

        李四捡到学生证,发现学号开头是06,他知道绝对不是他们院的,但并不知道是那个院,只能交给学生会主席,学生会看到后知道是机械学院的,然后给隔壁学生会传,同样的一直传的机械学院,机械学生会看到是06开头后知道是给咱们院的,然后根据学号的后几位找到对应的学生张三。

  • 张三、李四:通信主机
  • 单个学院:局域网(内网,子网)
  • 整个学校:广域网(外网,公网)
  • 学院主席:路由器
  • 学号:IP地址;学号=院号+院内编号;IP=网络位+主机位
  • 张三->学生会主席:内网转发
  • 学生会主席->校群:公网转发
  • 划分学院:子网划分
  • 学校:运营商

        学校的各种机制:学院、院号、学号等等在我们没有上大学时已经设计过好了,等上大学直接给我分配学号。同样的当我们上网时会给主机分配IP,当我们退出网络,这个IP就会分配给其他人使用。

为什么要子网划分?

        快速高效的找到对应的主机通信。路由报文本质是查找主机,查找的本质:淘汰的过程。那么淘汰效率越高,查找效率就能越高。完成子网划分后可以根据网络号一次淘汰大量的主机,缩小查找范围,而不是一个一个的去遍历。

  • 注意:路由器即属于子网1也属于子网2。
  • 注意:在同一个子网内,网络号一定相同,主机号一定不同。
  • 注意:路由器至少要配两个IP(两张网卡)。
  • 注意:路由器IP的主机标识往往都是1。

分类划分法

        IP地址占4字节,也就是32个比特位,我们知道IP是由网络位和主机位组成的,所以需要区分出那些位是网络位,那些位是主机位。

最早期使用分类划分法进行划分,如下:

        整个IP分为三个部分,开头部分是用来区分该IP是属于哪一类,中间这一部分标识的是网络位,最后几位标识的是主机位。

为什么要分类?不同国家和地区对网络位和主机位的数量需求不同。

        IP地址是四字节,只能表示1到42亿左右,,而全球人口已经到了80.2亿IP成了一种稀缺资源。各个国家运营商都在抢,抢到后就可以构建自己的子网。

        以上是最早期的IP划分方式,有很多缺点,有的国家拿到了某一类IP,但可能网络位或主机位用不完,造成浪费等等。

该方式划分得太粗了,太浪费,所以有了新的划分方式。使用子网掩码。

子网掩码

子网掩码:以若干个1开头以0为结尾的数字。IP地址跟子网掩码进行按位与得到网络号。如下:

        子网掩码存在的意义?把网络划分得更细,更灵活。通过设定子网掩码中1的个数就能划分出网络位与主机位。

子网掩码和IP地址(网络号)要配置到路由器内部。

主机号0和全F已经作为特殊用途使用,真正标识主机的只有

        子网范围=2^(子网掩码中0的个数)-2

个。主机号为0,则IP表示网络号。如果为全F,表示广播地址(所有主机)。

  • 注意:两种划分方式不冲突,而是互补。
  • 注意:子网掩码的划分方式只是提高了利用率,没有提高上限。
  • 注意:因为IPv4稀缺,提出了IPv6,占16字节。中国在推广。其次现在NAT技术几乎已经解决了IPv4稀缺的问题。

关于NAT技术和分片技术,在下一期文章讲解。

非常感谢您能耐心读完这篇文章。倘若您从中有所收获,还望多多支持呀!74c0781738354c71be3d62e05688fecc.png

http://www.xdnf.cn/news/15906.html

相关文章:

  • [学习] Hilbert变换:从数学原理到物理意义的深度解析与仿真实验(完整实验代码)
  • 《通信原理》学习笔记——第五章
  • Spring 源码阅读(二) 核心概念解析 ApplicationContext、类型转化
  • 【PyTorch】图像二分类项目
  • 【JS逆向基础】数据库之mysql
  • 7.19-7.20 Java基础 | File类 I/O流学习笔记
  • pyhton基础【27】课后拓展
  • 【Linux】3. Shell语言
  • 深度相机的工作模式(以奥比中光深度相机为例)
  • SQL Server(2022)安装教程及使用_sqlserver下载安装图文
  • 《计算机网络》实验报告四 TCP协议分析
  • 0719代码调试记录
  • IsaacLab学习记录(四)
  • Milvus Dify 学习笔记
  • 题单【循环结构】
  • 基于单片机出租车计价器设计
  • 30天打牢数模基础-决策树讲解
  • 【C语言】字符串与字符函数详解(上)
  • C++ 并发 future, promise和async
  • 数位 dp
  • 「Java案例」利用方法打印乘法表
  • WPF学习笔记(28)Interaction.Triggers的意义与使用方式
  • dify创建OCR工作流
  • NX584NX559美光固态闪存NX561NW993
  • AI(学习笔记第六课) 使用langchain进行AI开发 load documents(csv和文件夹)
  • 开源社区贡献指南:如何通过Three.js插件开发提升企业技术影响力?
  • Windows批量修改文件属性方法
  • swift-关联性/范型
  • 每日算法刷题Day50:7.20:leetcode 栈8道题,用时2h30min
  • 深度学习方法生成抓取位姿与6D姿态估计的完整实现