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

Linux网络协议栈深度解析:从数据封装到子网划分的底层架构

知识点5

1、封装和解封装的流程

封装数据报文:发送数据

解封装数据报文:接收报文

以后我们的网络编程过程中,只需要告知IP与端口号,链路层的MAC地址 有协议栈帮我们提供。

2、链路层报文格式(mac报文)

IEEE802是无线网卡

以太网是有线网卡

无线网卡被接收后,首部数据也会转换为有线网卡(以太网)的格式

这里我们分析一下 以太网 网卡的数据格式

首部:14Byte:6Byte目标mac地址,6Byte源mac地址,2Byte类型

类型:判断去处,上图中有详细介绍(结合下图)

3、IP,TCP,UDP报文格式

其中ICMP IGMP在中间层,但设有中间层的话层次会增多,因此将其归属于网络层

IP报文的数据部分:从传输层接收到的数据

IP报文组成:数据+报头

知识点6【应用层协议开发流程】

我们是在应用层进行开发,需要经过传输层,传输层就两种协议:TCP与UDP

如果实在网络层开发,利用ICMP,跳过端口,直接通过IP进行操作。

链路层类似。

注意:开发位置上方自己组包,下方由协议栈帮忙组包

因此在这里 我们在应用层组包,自应用层开始,无需自己组包,便利。

但是之后我们会从链路层开始操作,组包过程会变得复杂,带来的好处是 可以自行组我们想要形式的数据

1、面向连接(TCP)

电话系统服务模式的抽象

每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程

本质上,连接是一个管道,收发数据不但顺序一致,而且内容相同

保证数据传输的可靠性

2、面向无连接(UDP)

邮件系统服务模式的抽象

无需建立连接

每个分组都携带完整的目的地址

不能保证分组的先后顺序 不进行分组出错的恢复和重传 不保证数据传输的可靠性

知识点7【应用层协议开发架构】

1、C/S架构 client/server

客户端服务器模型

QQ LOL 微信都是C/S架构

客户端、服务器都需要用户去实现。客户端和服务器同等重要。

服务器:被客户端连接

1、服务器必须指定在固定的端口等待客户端的连接

2、客户端的连接到来,必须启动新的线程/进程 服务 客户端(形成并发服务器)

原因:如果任务1需要执行10min,如果不建立新的线程,任务2 就只能等待,一次只能执行一个任务。而一个任务一个进程,多任务一起执行。

3、服务完记得关闭和客户端连接

客户端:主动连接服务器

1、客户端端口无需固定,只需给服务器发出请求

2、获取完请求,关闭连接(关闭顺序不确定,根据服务不同,可能是客户端先关闭连接,也可能是服务器先关闭连接)

2、B/S架构 browser/server

浏览器服务器模型

WebQQ 浏览器版QQ,网页游戏都是B/S模型

重心都是服务器上。浏览器是其他公司设计的。好处是便于移动

知识点8【划分网段】

现代技术

VLAN技术:虚拟局域网划分

解释:就是交换机,交换机有很多端口,交换机就可以指定端口的网段。注意交换机是有层的概念的。

现在的划分网段技术是VLAN是比较简单的。

传统技术 ~重点

我们要讲的是传统划分网络的方式

解释一下上图:

10.9.11.0/24 需要一个网卡,因为只有网卡才能接网线。

选择我们的目标是将其划分为6个子网

6个子网就需要6个网卡。可见一共需要7个网卡(1 + 6)

那么如何划分子网呢?

通过牺牲主机位,划分子网

牺牲的主机位的位数x 与 划分子网的数量y 的关系

2^x > y

对应会造成掩码的改变,掩码的改变 就是多了x个1,又因为掩码的1,0需要连续,大家就能推出掩码了。(图中的27 就是表示划分后的掩码)

子网的数量为跨分 网段的个数。如上子网的个数是8,但是我们只需要6个

每个网段都有自己的IP范围,如上图

6个网卡 分别属于 哪个子网需要人为规定了

6个子网 只需要从8个网段中选择6个。需要看我们网卡的IP是什么,根据6个网卡的IP选择对应的网段

网卡的地址一般设置为网段中的最大和最小(网关),如上图都是选择的 每个网段的最小有效的IP地址

  • 注意

    有效IP 主机ID 全0 全1不能使用

    主机ID全0:网段地址

    主机ID全1:广播地址

我们可以观察到,划分的子网越多,主机数目就越少。

总结

  • 子网数目决定可用的独立网段数量
  • 子网划分的本质是通过调整子网掩码,将一个大网段拆分为多个小网段
  • 子网数目与网段数目一一对应,每个子网拥有唯一的网络地址和广播地址。

结束

今日 博客内容承接上篇博客,大家请有序观看,希望大家能够有所收获

代码重在练习!

代码重在练习!

代码重在练习!

今天的分享就到此结束了,希望对你有所帮助,如果你喜欢我的分享,请点赞收藏夹关注,谢谢大家!!!

相关文章:

  • 第二篇:linux之Xshell使用及相关linux操作
  • 「数据可视化 D3系列」入门第六章:比例尺的使用
  • 数据结构-栈
  • WebSocket 实现数据实时推送原理
  • Spine-Leaf 与 传统三层架构:全面对比与解析
  • 深入浅出 NVIDIA CUDA 架构与并行计算技术
  • 燕山大学计算机网络之Java实现TCP数据包结构设计与收发
  • ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之ADC按键 ADC Button)
  • 在 MoonBit 中引入 Elm 架构:用简单原则打造健壮的 Web 应用
  • Day22-前端Web案例——登录退出项目打包部署
  • eventBus 事件中心管理组件间的通信
  • 4.17学习总结
  • 极狐GitLab 功能标志详解
  • 基于GTID的主从复制
  • ASP.NET Core中SqlSugar基本使用
  • MySQL主从复制实战指南(基于二进制日志)
  • Spring框架学习(上)
  • 2025年探秘特种设备安全管理 A 证:守护安全的关键凭证​
  • 深度学习-Torch框架-2
  • 【vue项目el-tree跨树批量拖拽】
  • 乌克兰谈判代表团由12人组成,乌防长率领
  • 联合国报告:全球经济前景恶化,面临高度不确定性
  • 上海黄浦江挡潮闸工程建设指挥部成立,组成人员名单公布
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 香港根据《维护国家安全条例》订立附属法例