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:广播地址
我们可以观察到,划分的子网越多,主机数目就越少。
总结
- 子网数目决定可用的独立网段数量。
- 子网划分的本质是通过调整子网掩码,将一个大网段拆分为多个小网段。
- 子网数目与网段数目一一对应,每个子网拥有唯一的网络地址和广播地址。
结束
今日 博客内容承接上篇博客,大家请有序观看,希望大家能够有所收获
代码重在练习!
代码重在练习!
代码重在练习!
今天的分享就到此结束了,希望对你有所帮助,如果你喜欢我的分享,请点赞收藏夹关注,谢谢大家!!!