終於看到了tcp協議,這是tcp/ip詳解裡面最重要也是最精彩的部分,要花大力氣來讀。前面的tftp和bootp都是一些簡單的協議,就不寫筆記了,寫起來也沒啥東西。
tcp和udp處在同一層---運輸層,但是tcp和udp最不同的地方是,tcp提供了一種可靠的資料傳輸服務,tcp是面向連線的,也就是說,利用tcp通訊的兩台主機首先要經歷乙個「撥打**」的過程,等到通訊準備結束才開始傳輸資料,最後結束通話。所以tcp要比udp可靠的多,udp是把資料直接發出去,而不管對方是不是在收信,就算是udp無法送達,也不會產生icmp差錯報文,這一經時重申了很多遍了。
把tcp保證可靠性的簡單工作原理摘抄如下
應用資料被分割成tcp認為最適合傳送的資料塊。這和udp完全不同,應用程式產生的 資料報長度將保持不變。由tcp傳遞給ip的資訊單位稱為報文段或段(segment)(參見圖1 - 7)。在1 8.4節我們將看到tcp如何確定報文段的長度。
當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能 及時收到乙個確認,將重發這個報文段。在第21章我們將了解tcp協議中自適應的超時 及重傳策略。
當tcp收到發自tcp連線另一端的資料,它將傳送乙個確認。這個確認不是立即傳送,通常將推遲幾分之一秒,這將在1 9.3節討論。
tcp將保持它首部和資料的檢驗和。這是乙個端到端的檢驗和,目的是檢測資料在傳輸 過程中的任何變化。如果收到段的檢驗和有差錯,t p將丟棄這個報文段和不確認收到此報文段(希望發端超時並重發)。
既然tcp報文段作為ip資料報來傳輸,而ip資料報的到達可能會失序,因此tcp報文段 的到達也可能會失序。如果必要,tcp將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。
tcp還能提供流量控制。tcp連線的每一方都有固定大小的緩衝空間。tcp的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。
從這段話中可以看到,tcp中保持可靠性的方式就是超時重發,這是有道理的,雖然tcp也可以用各種各樣的icmp報文來處理這些,但是這也不是可靠的,最可靠的方式就是只要不得到確認,就重新傳送資料報,直到得到對方的確認為止。
tcp的首部和udp首部一樣,都有傳送埠號和接收埠號。但是顯然,tcp的首部資訊要比udp的多,可以看到,tcp協議提供了傳送和確認所需要的所有必要的資訊。這在p171-173有詳細地介紹。可以想象乙個tcp資料的傳送應該是如下的乙個過程。
雙方建立連線
傳送方給接受方tcp資料報,然後等待對方的確認tcp資料報,如果沒有,就重新發,如果有,就傳送下乙個資料報。
接受方等待傳送方的資料報,如果得到資料報並檢驗無誤,就傳送ack(確認)資料報,並等待下乙個tcp資料報的到來。直到接收到fin(傳送完成資料報)
中止連線
可以想見,為了建立乙個tcp連線,系統可能會建立乙個新的程序(最差也是乙個執行緒),來進行資料的傳送
作者 一塊積木
TCP IP詳解學習筆記 9 TCP協議概述
終於看到了tcp協議,這是tcp ip詳解裡面最重要也是最精彩的部分,要花大力氣來讀。前面的tftp和bootp都是一些簡單的協議,就不寫筆記了,寫起來也沒啥東西。tcp和udp處在同一層 運輸層,但是tcp和udp最不同的地方是,tcp提供了一種可靠的資料傳輸服務,tcp是面向連線的,也就是說,利...
TCP IP詳解 學習筆記 9 TCP協議概述
終於看到了tcp協議,這是tcp ip詳解裡面最重要也是最精彩的部分,要花大力氣來讀。前面的tftp和bootp都是一些簡單的協議,就不寫筆記了,寫起來也沒啥東西。tcp和udp處在同一層 運輸層,但是tcp和udp最不同的地方是,tcp提供了一種可靠的資料傳輸服務,tcp是面向連線的,也就是說,利...
TCP IP詳解學習筆記 9 TCP協議概述
本文 終於看到了tcp協議,這是tcp ip詳解裡面最重要也是最精彩的部分,要花大力氣來讀。前面的tftp和bootp都是一些簡單的協議,就不寫筆記了,寫起來也沒啥東西。tcp和udp處在同一層 運輸層,但是tcp和udp最不同的地方是,tcp提供了一種可靠的資料傳輸服務,tcp是面向連線的,也就是...