【網路協議】TCP協議簡介

蘭亭風雨發表於2014-06-18

    本文只是對TCP協議做個簡要的介紹。

    TCP協議,即傳輸控制協議,與UDP協議同處於傳輸層,同樣使用相同的網路層,但TCP提供了一種可靠的、面向連線的資料傳輸服務,它會在兩個使用TCP的應用之間建立一個TCP連線,在該連線上進行資料的傳輸。

    TCP通過以下方式提供可靠性:

    1、應用程式被分割成TCP認為最合適傳送的資料塊。這點與UDP完全不同,應用程式產生的UDP資料包長度將保持不變,加上IP首部後,才會進行IP分片。

    2、當TCP發出一個報文段後,它會啟動一個定時器,等待目的端發確認收到這個報文段,如果沒能及時收到該確認資訊,則將重發這個報文段。

    3、當TCP接收端收到傳送端發來的TCP報文段時,它將傳送一個確認,這個確認不是立即傳送的,通常會推遲幾分之一秒。

    4、TCP將保持它首部和資料的校驗和。這是一個端到端的校驗和,如果收到的報文段的校驗和有差錯,TCP將丟棄該報文段,同時不傳送確認收到的訊息,從而使傳送端超時重發。

    5、TCP能提供流量控制。TCP連線的每一方都有固定大小的緩衝空間,TCP的接受端只允許另一端傳送接收端緩衝區所能接納的資料,這將防止較快主機致使較慢主機的緩衝區溢位。

    6、由於TCP報文段作為IP資料包來傳輸,IP資料包的到達可能會失序,因此TCP報文段的到達也可能失序,如果必要,TCP將對收到的資料進行重排序,將收到的資料以正確的順序交給應用層。

    7、由於IP資料包有可能發生重複,TCP的接收端必須丟棄重複的資料。

    從上面幾點可以看出,TCP協議保持可靠性的方式就是超時重傳,這種方式很好,雖然TCP也可以通過向源主機傳送各種各樣的ICMP報文或者來處理這些,但這也是不可靠的,試想,如果ICMP報文在傳送回來的過程中丟失了,很明顯這種方式就不可靠了。最可靠的方式就是隻要得不到確認,就重新傳送資料,直到得到確認為止。

    

相關文章