TCP IP詳解學習筆記 6 TCP協議概述

2021-07-02 05:45:20 字數 3505 閱讀 2323

終於看到了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協議三次握手過程分析

tcp(transmission control protocol) 傳輸控制協議

tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線:

位碼即tcp標誌位,有6種標示:syn(synchronous建立聯機) ack(acknowledgement 確認) psh(push傳送) fin(finish結束) rst(reset重置) urg(urgent緊急)

sequence number(順序號碼) acknowledge number(確認號碼)

第一次握手:主機a傳送位碼為syn=1,隨機產生seq number=1234567的資料報到伺服器,主機b由syn=1知道,a要求建立聯機;

第二次握手:主機b收到請求後要確認聯機資訊,向a傳送ack number=(主機a的seq+1),syn=1,ack=1,隨機產生seq=7654321的包

第三次握手:主機a收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,主機a會再傳送ack number=(主機b的seq+1),ack=1,主機b收到後確認seq值與ack=1則連線建立成功。

完成三次握手,主機a與主機b開始傳送資料。

在tcp/ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態; 第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。 完成三次握手,客戶端與伺服器開始傳送資料.

例項:ip 192.168.1.116.3337 > 192.168.1.123.7788: s 3626544836:3626544836

ip 192.168.1.123.7788 > 192.168.1.116.3337: s 1739326486:1739326486 ack 3626544837

ip 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116傳送位碼syn=1,隨機產生seq number=3626544836的資料報到192.168.1.123,192.168.1.123由syn=1知道192.168.1.116要求建立聯機;

第二次握手:192.168.1.123收到請求後要確認聯機資訊,向192.168.1.116傳送ack number=3626544837,syn=1,ack=1,隨機產生seq=1739326486的包;

第三次握手:192.168.1.116收到後檢查ack number是否正確,即第一次傳送的seq number+1,以及位碼ack是否為1,若正確,192.168.1.116會再傳送ack number=1739326487,ack=1,192.168.1.123收到後確認seq=seq+1,ack=1則連線建立成功。

**:

乙個三次握手的過程(圖1,圖2)

(圖1)

(圖2)

第一次握手的標誌位(圖3)

我們可以看到標誌位裡面只有個同步位,也就是在做請求(syn)

第二次握手的標誌位(圖4)

我們可以看到標誌位裡面有個確認位和同步位,也就是在做應答(syn + ack)

(圖4)

第三次握手的標誌位(圖5)

我們可以看到標誌位裡面只有個確認位,也就是再做再次確認(ack)

(圖5)

乙個完整的三次握手也就是 請求—應答—再次確認

tcp ip詳解學習 tcp

1。tcp連線的建立與終止 建立過程 1 客戶端請求建立連線。ack 0 syn 1 sequence number isn client acknowledgement number null options mss 2 服務段確認連線。ack 1 syn 1 sequence number is...

TCP IP學習筆記 TCP

tcp協議提供可靠的資料流服務,有以下5個特徵 1.面向資料流 2.虛電路連線 3.有緩衝的傳輸 4.無結構的資料流 5.全雙工連線 tcp使用確認 重傳來保障可靠性,採用滑動視窗機制來保障傳輸效率和進行流量控制 tcp報文段格式 6位code bit 其中視窗是16bit的捎帶視窗通告 tcp報文...

TCP IP詳解學習筆記 TCP(傳輸控制協議)

1.概述 tcp提供了一種可靠的面向連線的位元組流運輸層服務。tcp將使用者資料打包成報文段,它傳送後啟動乙個定時器,另一端收到的資料進行確認,對失序的資料重新排序,丟棄重複資料,tcp提供端到端的流量控制,並計算和驗證乙個強制性的端到端的檢驗和。許多流行的應用程式如 telnet,rlogin,f...