注:我主要關心的是數據有效性,而不是真實性,即我不在乎,如果數據被損壞,由於傳輸錯誤,但不太關心,如果惡意用戶試圖改變並重新發送包到原來的預期黨(像MITM攻擊)。使用java套接字時是否保證數據有效性?
我最近在構建基於TCP(特別是使用Java的Socket
和ServerSocket
)的網絡協議,我遇到了一個小問題,關於如何可靠的數據可以從A點使用TCP傳輸到B點。
我現在主要關心的是在自定義數據包結構的有效負載(可能是標頭)數據中是否包含SHA-2
散列。通過一些研究,我看到TCP確實有自己的ECC,但我也聽說它不是特別「強」。
由於Java的Socket
基於掀起了TCP的建築,我的問題是:
是否
Socket
類保證有效的(未損壞/丟失)的數據(至少我不確定性需要包含我自己的數據校驗和)?難道Java本身(無論通過java代碼基礎設施)提供額外的驗證(通過純老TCP)數據其通過TCP連接發送的時候?
所以你說它完全不需要添加校驗和到我的協議規範? (我讀過以前鏈接的文章的那一部分...) – initramfs
是的,更多校驗和是浪費時間和帶寬。 –