並且,按照林鴻現在的設想,就算是所有中繼伺服器都被關停或者下線,也不會造成整個通訊網路的癱瘓,最多會影響到訊息傳送的即時性。
當網路中存在中繼伺服器的時候,客戶端會和中繼伺服器保持連線,以便獲知自己好友線上狀態,要傳送資訊的時候,也會先向中繼伺服器查詢整個拓撲結構,然後透過演算法計算,隨機找出一條最優路徑,透過這條最優路徑將訊息傳送到目的地。
而假設所有中繼伺服器都掛掉了,大家便無法確認好友是否線上,資料傳輸的時候,是一種廣播式的行為,即向全網廣播自己的訊息,在傳輸之前,還得確認下一個節點是否線上,然後再傳輸,最終總會到達自己傳送的目的。…;
不過這樣一來,通訊就失去了時效性,可能一條資訊傳送出去,快則幾秒鐘,慢則要好幾分鐘甚至上十分鐘對方才能夠收到,時間的長短和網路的拓撲結構有關。
這種結構,在安全方面也有保證。
一條資訊發出,會首先透過自身的軟體進行加密,然後再傳送到“中轉節點”中,那些節點都是匿名的,經過至少五次跳轉之後,完全查不到來源路徑,最終從“出口節點”對訊息進行解密,然後再傳遞到目標客戶端。
在整個流程中,唯一有可能被監聽的環節就在於最後的“出口節點”,假設有人正好在出口節點監控,則就可以截獲被髮送的訊息。
這個缺點林鴻也發現了,所以他在後來對圖紙進行整理的時候,再次進行了完善。
他想了一個解決方案,那就是訊息傳送之後,會加密成一個資料包,然後再對這個資料包進行分割,包的各部分透過幾條不同的路徑最終傳遞到目的地,這樣,就算某一個“出口節點”被監控了,他們截獲的內容也只有一部分,沒有截獲其他包的話,根本無法對整個包進行解密。
理論上,同時將所有包都截獲的可能性是趨近於零的,所以這樣一來,通訊安全得到了最大限度的保障。
林鴻設計的整個新的架構,不但實現了資訊傳遞的匿名性,而且消除了中心化的伺服器端,極大地提升了軟體的保密性和穩定性。
經過反覆完善和最佳化,林鴻覺得最終沒有問題之後,便開始著手進行程式碼編寫。
由於他對加密解密方面還不是很瞭解,所先將其他基本功能暫時實現,將加密解密放到了最後。
到天亮的時候,新版cqcq的原型便被編寫出來了,首先實現的功能非常簡單,只能傳遞文字版,並且還沒有對其進行加密。
今天是週一,林鴻的課不多,上午在十點多的時候就已經沒課,他便立刻奔向了學校圖書館。
今天來這裡有兩個問題需要解決。
一個是查詢一下,看看有沒有posix標準的書籍,另外就是學習一下加密解密演算法方面的內容。
由於林鴻是圖書館的常客,另外又是最近風頭正盛的sam小組成員,圖書館中的不少工作人員都對他非常熟悉了,見到他之後,紛紛和他打著招呼。
林鴻微笑著一一回應,這幾個月來,他算是徹底融入了拉丁學校的這個大集體當中。雖然這裡也存在著一些瑕疵,但是總體上還是讓人覺得比較舒服的,大家相互之間都比較友好,別人遇到什麼困難,也會熱心幫忙。
有一點林鴻感觸最深:這裡的學生和老師之間的關係完全是對等的,相互間說話,完全沒有國內的那種一個聆聽,另外一個不是訓話就是大講道理的那種常見情況。
林鴻來到電腦科學類區域,開始慢慢尋找自己所需要的內容。
“posix……加密演算法……”
林鴻口中唸叨著這兩個詞彙,在書架間一格格看過去。
走過幾個格子