1. 程式人生 > >TCP協議如何來保證傳輸的可靠性

TCP協議如何來保證傳輸的可靠性

TCP提供一種面向連線的、可靠的位元組流服務。 
     面向連線:意味著兩個使用TCP的應用(通常是一個客戶和一個伺服器)在彼此交換資料之前必須先建立一個TCP連線。在一個TCP連線中,僅有兩方進行彼此通訊。廣播和多播不能用於TCP。 
 TCP通過下列方式來提供可靠性:
1、應用資料被分割成TCP認為最適合傳送的資料塊。這和UDP完全不同,應用程式產生的資料報長度將保持不變。                                                                  (將資料截斷為合理的長度)
2、當TCP發出一個段後,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。                         
(超時重發)
3、當TCP收到發自TCP連線另一端的資料,它將傳送一個確認。這個確認不是立即傳送,通常將推遲幾分之一秒 。                                                                 (對於收到的請求,給出確認響應) (之所以推遲,可能是要對包做完整校驗)
4、 TCP將保持它首部和資料的檢驗和。這是一個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段。 (校驗出包有錯,丟棄報文段,不給出響應,TCP傳送資料端,超時時會重發資料)
5、既然TCP報文段作為IP資料報來傳輸,而IP資料報的到達可能會失序,因此TCP報文段的到達也可能會失序。如果必要,TCP將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。 
(對失序資料進行重新排序,然後才交給應用層) 6、既然IP資料報會發生重複,TCP的接收端必須丟棄重複的資料。(對於重複資料,能夠丟棄重複資料) 7、TCP還能提供流量控制。TCP連線的每一方都有固定大小的緩衝空間。TCP的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。
(TCP可以進行流量控制,防止較快主機致使較慢主機的緩衝區溢位)TCP使用的流量控制協議是可變大小的滑動視窗協議。 位元組流服務:: 兩個應用程式通過TCP連線交換8bit位元組構成的位元組流。TCP不在位元組流中插入記錄識別符號。我們將這稱為位元組流服務(bytestreamservice)。 TCP對位元組流的內容不作任何解釋:: TCP對位元組流的內容不作任何解釋。TCP不知道傳輸的資料位元組流是二進位制資料,還是ASCII字元、EBCDIC字元或者其他型別資料。對位元組流的解釋由TCP連線雙方的應用層解釋。