本系列想从这几个方向聊
1. 整套系统它的受众业务,为何要探讨和学习
2. 网络协议栈开发基础知识,各模块角色的定位,为什么要设计这几个模块
3. 如何进行设计框架、工作线程模式、各模块如何高效协作
本系列讨和可学习的知识点
基础模块定位
线程竞争处理
负载均衡设计
工作模式设计
快慢的分离
为什么开启本系列文章
应用层网络协议栈的开发,它是一套通用的解决网络需求的系统,网络需求指的是对网络数据的监控、审计、研判、提取、防护、可视等;具体比如现在要对一个公司,整个高校,一个地区互联网出入口流量做一个检查,检查该地区是否有人使用QQ传输非法文件,监测公司是否有人上班摸鱼,高校是否有人考试作弊(基于网络作弊手段),电脑或服务器是否被黑客攻击,被攻击了后的防护措施,这些都在网络协议栈的业务范畴中。
本系统对比交换机和路由器的业务,它们同样处理网络流量,但是交换机和路由器只是处理网络的二、三层,再往上的内容不再做进一步处理了。
学习和探讨应用层网络协议栈的开发的目的有:
· 其一是普及网络协议栈产品开发,帮助新手或为入行,并想从事网络产品类研发的同学尽快入行,了解开发需要的基础知识,行业的业务面知识;
· 其二深层次探讨,系统设计,实现方式,算法的优缺点,通用性,专用性的一些技术细节,学习并改进。
大白话说模块 与系统:
模块的意义
上篇对整套系统的各个模块进行了定义,明确了其职能;它们各司其职,但又是相互协助,正如手脚眼鼻嘴,共同组成了一个完整系统,系统中它们是协作的;得益于相互协助,人能够捕猎,打或者逃,很好的生存在地球上。
那模块的意义在于各司其职,各尽其责。
系统的意义
再细看,每个模块它有其输入和输出,对输入信息处理,输出给需求者使用;你想,输入从哪地方获取,输出送到哪地方,那模块间是需要交流的,对一个系统来说这是要设计好的,否则模块无法运作起来。
给与每个模块合理的任务,让其各尽其责,稳定有序运作起来,这是系统的意义。
设计原则
上面说到模块意义在于各司其职,各尽其责,那么:
定义好每个模块的功能这是第一要事,要明确每个模块提供什么功能,要说得清写的明,不能含糊不清;
第二要事,职责定义好,检查下定义的模块是否身兼数职,多则惑少则得,一个模块需要的是专精,出问题人人都会去找专家,不是去查百科全书,多了就不伦不类,多了第一要事就没做好;
第三要事,好,现在做到了小而精且功能明确,那现在是专家了,要生意好,大家都来找你,接下来要做的就是形象和沟通;形象就是模块的封装,接口要简洁易用,命名和功能需要标准化,需要风格统一;沟通就是具体的输入和输出,输入输出需要通用,兼容性,通达各国语言,不能只会和本地人讲方言。
基础篇就结束了,不知道这样的风格描述,还有是否能帮助大家了解相关知识,入门网络协议栈的开发,欢迎大家提意见!
下章就想系类的说具体的模块设计和实现了,欢迎大家探讨!