協議棧開發學習總結


 

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等

 

終於寫完了~~真累,哎,中午了,吃飯去,呵呵~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM