使用TCP作爲網絡協議,我在每條消息的大小(以及可能的校驗和?)之前加上前綴,然後再通過線路發送消息。我想知道,計算和傳輸消息的校驗和是否有意義,以確保消息將被傳遞(如果以及何時將被傳遞)不變,例如,由於一些網絡錯誤。目前,我在發送消息本身之前發送消息的4字節大小+ 2字節校驗和(CRC-16)。另一個端點正確標識預期的消息長度,讀取它並驗證校驗和。我知道TCP具有內部數據包驗證機制,並且我有強烈的感覺,認爲我在應用程序級別的消息驗證是多餘的,但我不確定並需要您的建議,然後才能做出決定。使用TCP時,我需要使用校驗和來保護消息嗎?
我正在開發客戶端 - 服務器應用程序,每天都有數以萬計的潛在服務器連接。即使任何消息中的單個受損字節都可能導致整個不正確的消息鏈交換,這是不可接受的(幾乎所有客戶端 - 服務器應用程序都具有相同的要求,是不是)。所以我想確定 - 我可以放心地信任TCP的內部可靠性,還是提供自己的校驗和驗證機制更好?而我正在談論的是小的兩字節校驗和(CRC-16),我不是在談論數字簽名消息等。(並且系統是使用套接字在.Net(C#)中開發的,如果這有什麼區別的話) 。
如何簡單地通過SSL發送一切?這樣你就可以同時獲得安全和防止意外更改。 – CodesInChaos
爲什麼不使用WCF並停止擔心低級別的協議細節。 –
有時候WCF不是一種選擇,當它是時 - 它通常是首選的方法。但是這次我對套接字解決方案很感興趣。 –