1 tcp協議是提供端到端資料傳輸的非常可靠的協議,其內部的重傳機制、序列號和確認號機制、滑動視窗機制等都可以保證這一點,所以丟包現象的問題不在於tcp協議,它是無辜的,否則它和udp協議又有何區別。
2 tcp協議一般由作業系統實現(如:windows、linux等),基於tcp協議傳輸資料時,傳送方和接收方都有乙個快取區,在網路良好(注意是良好或者說是理想情況下)的前提下,傳送方寫入傳送快取區的資料一定能到達接受方的快取區。
3 因為實際的網路環境十分複雜,時好時壞,時快時慢,tcp協議對網路中斷的情況反應是非常遲鈍的,在網路已經中斷的情況下,傳送方仍有可能向傳送快取區寫資料,當然已經寫入到傳送快取區的資料是不可能到達接受方的,而且當傳送方發現網路已經中斷了,為了盡快**資源,已經寫入傳送快取區的資料肯定是丟棄的(丟包現象發生了)。
4 現在應該已經知道,基於tcp傳輸資料發生丟包現象的問題在於應用層而不在於tcp層了,那如何解決呢?非常簡單,上述已經提到過,增加接收回執機制即可,即使緩衝區中的資料被作業系統丟棄了,我們仍可感知資料沒有到達對方,仍可重發完成。
5 最後提一點,tcp層的 keep-alive機制是為了保持連線,在連線中斷時及時通知上層發生中斷異常,其不應替代應用層的心跳機制。
網路程式設計(TCP協議)
tcp協議,傳輸控制協議 英語 transmission control protocol,縮寫為 tcp 是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,由ietf的rfc 793定義。tcp通訊需要經過建立連線 資料傳送 終止連線三個步驟。tcp通訊模型中,在通訊開始之前,一定要先建立相...
Java網路程式設計 基於TCP協議的網路程式設計(三)
增加聊天室功能 1.可以看到是誰發的訊息。2.實現私聊功能。實現方法 對於第乙個功能,可以使用map集合來儲存使用者資訊 第二個功能可以在客戶端傳送不同訊息時,對這些訊息進行處理,比如在訊息內容前後新增一些特殊字元,通過這些特殊字元來判斷。實現 特殊字元類 public inte ce chatro...
基於TCP協議的網路程式設計 socket程式設計 1
1.1.網路位元組序 記憶體中的多位元組資料相對於記憶體位址有大端和小端之分,磁碟檔案中的多位元組資料相對於檔案中的偏移位址也有大端小端之分。網路資料流同樣有大端小端之分,那麼如何定義網路資料流的位址呢?傳送主機通常將傳送緩衝區中的資料按記憶體位址從低到高的順序發出,接收主機把從網路上接到的位元組依...