程式設計思想和網路協議處理?

最近發生了4件事1.JAVA程式設計思想2.最近在實現一個協議3.OpenSSL的心臟流血4.記憶體保護首先看一下網際網路協議的形成它不是一蹴而就從無到有的,而是站在了許多巨人和侏儒的肩上。1.網際網路通訊協議並非從頭開始設計的,完全是在電信網(電話通訊網)的基礎上設計的;然後看一下後來的面向物件思想對個體的分類以及描述,是一種進入文明社會的象徵,動物世界和原始人沒有描述,它們只有感官形成的觀念,文明社會的人類除了人本身還有描述,比如身份證,檔案,特徵描寫,....有人說這是柏拉圖的遺毒,但實際上,我們正是生活在柏拉圖的抽象的世界裡。struct A *a = ... b = (struct B*)a;正確嗎?實際上只有一種情況下這麼轉型才是安全的,取決於struct A的定義:struct A { struct B b; ... };看出什麼了嗎?這就是型別!在物件的世界程式設計,如果有一個變數,你可以用反射機制得到它的型別,得到該型別的所有特徵。在非物件的世界,大量的系統崩潰都是因為“不恰當的轉型”引發的,所有的程式碼絲毫沒有型別檢查機制,所有的東西都在記憶體裡,程式可以任意解釋記憶體裡資料的內容,實際上正確的做法是,內容的元資料,內容的型別資訊,描述資訊等也要和內容儲存在一起,正如我們的身份證要隨身攜帶一樣,按照嚴格的做法,如果我不能證明你的身份資訊,我甚至都不能證明自己是一個人,之所以人家覺得我起碼還是一個人,可能是因為對方覺得我和他長得差不多,但是這種方式是不嚴格的。最後看一下協議的處理對於網路資料包而言,你無法證明該資料包就是一個嚴格的IP資料包或者就是一個HTTP資料包,當然我不能如此苛刻的對待IP這種已經很完美的協議,幸運的是,由於繼承了電信信令協議的簡單性特徵,我們真的沒必要對IP太苛刻,換句話說,我們可以經過很少的檢測證明一段資料就是一個IP資料包,因為我們只需要判斷不多的幾個欄位符合IP協議頭的格式即可。但是對於應用協議,這種做法就不合適了。

相關問題答案