协议栈开发学习总结

 

2008年5月30日 星期六晴

    近来一直很少些关于技术方面的文章,一来是被工作和生活所累,没有很多闲暇多余的时间,二来呢是觉得一直没有好的case,或则有好的case,但觉得目前在这个case方面,自己还不算很professional。今天心情不错,感觉也很好,就把我近一年来在“协议栈”开发方面的一些经验写下来,算是对自己这一阶段的一个终结,也希望能对后来者能有所帮助。

    首先,不要以为做协议栈开发很难(诚然,商用稳定的协议栈开发的确也不容易^_^),所以首先一定要有足够的信心,其次如果有前辈带你上手那就好很多,如果没有,自己一个人去“专研”,那么你做的首要的事情还是要有信心,不要有“惧怕”的思绪。好了,开始进入正题,如下:

 

一,阅读协议栈相关文档

    关于单个协议的定义,权威的自然是IETF(互联网工程任务推进组织)的"rfc"文档,虽然是一大堆的英文(呵呵,我英文也一般),开始不太看的明白,不过没关系,先去网络上用"baidu"或则"google"搜索一下关于你要做的这个协议的中文说明,虽然绝大数介绍都很肤浅,但这么做的在于去了解该协议的目的和用途,心中有个大的概念,而后在大致的阅读下该协议"rfc"文档的大体描述和结构。

    需要说明的是在大多数情况下,一个完整的协议栈都有好几个协议组成,所以也有1个或若干个"rfc"文档要去学习和了解,但切记不用把所有"rfc"文档都读的相当仔细和完全明白后再去做,我们的目的在于只把握协议栈的框架和大概信息。

    所以,这个阶段是基础准备阶段。

 

二,设计协议栈结构

    这个阶段也是最核心、最重要的一个阶段,可以说,开发成功与否的关键也全在这个阶段。我们在第一个阶段的基础上,明白了要开发的协议栈的功能及其相关协议后,我们就要来设计这个协议栈框架的实现,一般有注意如下几方面:

    1,功能性:这个很自然,如能实现功能还做什么

    2,可扩展:协议栈最好划分出内核和外围模块,利于将来扩展和维护

    3,模块独立:协议栈内核和外围模块尽量独立,减少耦合

这个阶段虽然说起来容易,但做起来去要看个人的能力和水平,包括代码的机构、风格、易维护、易移植、稳定、健壮性等等。所以,如果连基本程序都写不好,没有好的代码风格和没有把握大结构能力的,最好还是请别人帮忙。

注释:协议栈的设计要看协议栈的特点,比如有的协议栈是对称的(比如rtsp流控协议),有些是不对称的(比如http协议),各有各特点,所以在把握大结构的同时要针对各自的特点来设计。

 

三,编码开发

    框架完成后,开始丰满核心模块和构建基本的外围模块。通常这阶段需要搭建好开发环境,便测试便修改。

注释:很重要的工作,ethereal(抓包软件),做协议这个是一定要用熟的。

 

四,测试与维护

    基本上到这个阶段,协议栈的开发工作就OK了,剩下的就是测试、维护,调整代码,加强协议栈的稳定性和健壮性。

 

五,后记

    由于文字表达上的局限和本人水平的问题,上述只是简要描述了一下开发协议栈的一般常规步骤,算是对自己的一个总结,也希望对读者有所帮助,不当之处,请多包含。

 

个人已做过的协议栈(简要说明):

1, SIP

   会话发起协议,关联SDP/RTP/RTCP等协议

2, TR069

   终端网管协议,关联HTTP/SOAP/XML/TR-111(STUN NAT穿越)/TR-106(外围数据模型)

3, 流控

   多媒体流控协议,管理RTSP/RTP/SDP/MP2T等

 

终于写完了~~真累,哎,中午了,吃饭去,呵呵~~

posted on 2010-06-11 15:09  wolflion  阅读(12836)  评论(0编辑  收藏  举报

导航