应用层网络协议栈设计-聊基础(二)

85 阅读4分钟

本系列想从这几个方向聊

1. 整套系统它的受众业务,为何要探讨和学习

2. 网络协议栈开发基础知识,各模块角色的定位,为什么要设计这几个模块

3. 如何进行设计框架、工作线程模式、各模块如何高效协作

本系列讨和可学习的知识点

基础模块定位

线程竞争处理

负载均衡设计

工作模式设计

快慢的分离


为什么开启本系列文章

应用层网络协议栈的开发,它是一套通用的解决网络需求的系统,网络需求指的是对网络数据的监控、审计、研判、提取、防护、可视等;具体比如现在要对一个公司,整个高校,一个地区互联网出入口流量做一个检查,检查该地区是否有人使用QQ传输非法文件,监测公司是否有人上班摸鱼,高校是否有人考试作弊(基于网络作弊手段),电脑或服务器是否被黑客攻击,被攻击了后的防护措施,这些都在网络协议栈的业务范畴中。

本系统对比交换机和路由器的业务,它们同样处理网络流量,但是交换机和路由器只是处理网络的二、三层,再往上的内容不再做进一步处理了。

学习和探讨应用层网络协议栈的开发的目的有:

· 其一是普及网络协议栈产品开发,帮助新手或为入行,并想从事网络产品类研发的同学尽快入行,了解开发需要的基础知识,行业的业务面知识;

· 其二深层次探讨,系统设计,实现方式,算法的优缺点,通用性,专用性的一些技术细节,学习并改进。

 

大白话说模块 与系统

模块的意义

上篇对整套系统的各个模块进行了定义,明确了其职能;它们各司其职,但又是相互协助,正如手脚眼鼻嘴,共同组成了一个完整系统,系统中它们是协作的;得益于相互协助,人能够捕猎,打或者逃,很好的生存在地球上。

那模块的意义在于各司其职,各尽其责。

系统的意义

再细看,每个模块它有其输入和输出,对输入信息处理,输出给需求者使用;你想,输入从哪地方获取,输出送到哪地方,那模块间是需要交流的,对一个系统来说这是要设计好的,否则模块无法运作起来。

给与每个模块合理的任务,让其各尽其责,稳定有序运作起来,这是系统的意义。

设计原则

上面说到模块意义在于各司其职,各尽其责,那么:

定义好每个模块的功能这是第一要事,要明确每个模块提供什么功能,要说得清写的明,不能含糊不清;

第二要事,职责定义好,检查下定义的模块是否身兼数职,多则惑少则得,一个模块需要的是专精,出问题人人都会去找专家,不是去查百科全书,多了就不伦不类,多了第一要事就没做好;

第三要事,好,现在做到了小而精且功能明确,那现在是专家了,要生意好,大家都来找你,接下来要做的就是形象和沟通;形象就是模块的封装,接口要简洁易用,命名和功能需要标准化,需要风格统一;沟通就是具体的输入和输出,输入输出需要通用,兼容性,通达各国语言,不能只会和本地人讲方言。

 

基础篇就结束了,不知道这样的风格描述,还有是否能帮助大家了解相关知识,入门网络协议栈的开发,欢迎大家提意见!

下章就想系类的说具体的模块设计和实现了,欢迎大家探讨!