同事C與同事K為了爭升遷順位,起了心結,因為一個系統監控程式引爆了起來,被監控
端是同事K負責的視訊伺服器,監控程式卻是同事C撰寫的,使用Java開socket連到
service的port看是否活著,可是誤判率極高,並在視訊伺服器留下許多垃圾訊息。同
事K也沒有去修正,但卻在公司擴大這個事端,中傷了同事C。我知道程式出了甚麼事,
但我要出手嗎?
---
網路通訊概論這門課開在大學二年級,是我唯一修過的網路相關課程,網路跟通訊是截
然不同的領域,1990年代,具圖型使用者界面的網頁瀏覽器無意間被發明,網際網路開
始大紅大紫,計算機概論中就使用了大量篇幅在介紹各個layer的不同,那時甚麼叫做
bridge?甚麼叫做router?甚麼叫做switch?實在有聽沒有懂,唯一可以摸到的網路設
備,就是自己的網路卡跟RG58那台同軸電纜集線裝置。
網際網路那麼盛行,不能免俗的,我也修了網路通訊概論,這門課已經比計算機網路教
的簡單多了。其中教到七層架構、token ring、FDDI、Ethernet。當時真的是用死背
的,我連課本都沒買,背的我真的不行,後來比較懂網路時,是去管理IPTV Server
Farm的兩部大門神時,中間差了有10年。這門課比較特別的是,好像不教一下
programming,不算是資訊系。期末project是交一個berkeley socket寫出來的通訊程
式。
是的,這門課學到的socket programming技巧影響我很深,出了社會,到了我們公司
後,別處我不知道,我發覺在我們公司會Unix Programming的很少,會socket
programming的更少,不會socket programming表示,framework沒有高階api讓你呼
叫,事情就做不下去了。
同事C與同事K為了爭升遷順位,滿有心結的,因為一個系統監控程式引爆了起來,被監
控端是同事K負責的視訊伺服器,監控程式卻是同事C撰寫的,使用Java開socket連到
service的port看是否活著,可是誤判率極高,並在視訊伺服器留下許多垃圾訊息。是
的!同事C只是去看Port有沒有Daemon運作,但若Daemon裝死,整個Daemon要正常運作
的條件很多,首先DB要正常,主機的資源也要夠,但他這隻Java程式的作用只有Port
Scan,然後因為TCP連線沒有依照RTSP的規定關閉,每掃描一次,都在主機留下一個錯
誤訊息。
我首先我使用ethereal去抓取視訊伺服器跟用戶端的通話內容,然後我去找RTSP(Real
Time Streamming Protocol)的RFC來看,使用大二學的到的berkeley socket,在一台
Linux主機使用C語言重寫監控程式,依照RTSP規定送出封包,完整模擬用戶端行為,判
斷主機丟回的錯誤訊息,最後呼叫之前以經開發好的傳送簡訊API、傳送郵件API。正確
率提升到接近100%,主機上也沒了垃圾訊息,開發前後只花了兩天。後來這隻Code交接
給新人時,他使用C#重寫,不知道為甚麼寫了一個月。我想framework有沒有提供api,
對他而言可能是個很大的issue。
另外,socket programming的應用還有三例,將於研究所課程Network Programming與
Internet Technology中分享。其中包含使用舊型機上盒實作MPEG2協定分析儀,這是一
個大型研究案。
沒有留言:
張貼留言