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

2021-07-11 09:57:33 字數 4210 閱讀 1740

1.概述

tcp提供了一種可靠的面向連線的位元組流運輸層服務。

tcp將使用者資料打包成報文段,它傳送後啟動乙個定時器,另一端收到的資料進行確認,對失序的資料重新排序,丟棄重複資料,tcp提供端到端的流量控制,並計算和驗證乙個強制性的端到端的檢驗和。

許多流行的應用程式如:telnet, rlogin, ftp,smtp 都使用tcp。

tcp面向流的概念

2.tcp首部

tcp報文段的首部格式如圖所示:

各自段的含義:

首部長度:最大60位元組

保留:6bit, 均為0.

緊急urg:當urg=1時,表示報文段中有緊急資料,應盡快傳送,而不要按照原來的排隊順序傳送,與「緊急指標」字段配合使用。

確認位元ack:只有當ack = 1時確認號才有效。

推送位元psh:當傳送端psh=1時,並立即建立乙個報文段傳送出去,接收tcp收到psh為1的報文段後,不在等到整個快取都填滿後在向上交付,而是盡快的交付給應用程序。

復位位元(rst):復位位元也稱重建位元或重置位元。當rst=1時,表明tcp連線中出現嚴重差錯,必須釋放連線,然後在重新建立連線。

同步位元syn:在建立連線是用來同步序號。syn=1, ack=0表示乙個連線請求報文段。syn=1,ack=1表示同意建立連線。

終止位元fin:用來釋放乙個連線。fin=1時,表明此報文段的傳送端的資料已經傳送完畢,並要求釋放運輸連線。

視窗:用來控制對方傳送的資料量。單位為位元組。tcp連線的一端根據設定的快取空間大小確定自己的接收視窗大小。然後通知發放已確定的傳送視窗上限。

檢驗和:檢驗和字段檢驗的範圍包括首部和資料這兩部分

緊急指標:緊急指標在urg=1時才有效,它指出本報文段中的緊急資料的位元組數。

選項:長度可變,最長可達40位元組

3.最大報文長度mss

mss預設值為536位元組。注:mss=tcp報文段長度-tcp首部長度

4.tcp連線的建立

設主機b執行乙個伺服器程序,它先發出乙個被動開啟命令,告訴它的tcp要準備接收客戶程序的連續請求,然後服務程序就處於聽的狀態。不斷檢測是否有客戶程序發起連續請求,如有,作出響應。設客戶程序執行在主機a中,他先向自己的tcp發出主動開啟的命令,表明要向某個ip位址的某個埠建立運輸連線,過程如下:

1)主機a的tcp向主機b的tcp發出連線請求報文段,其首部中的同步位元syn應置1,同時選擇乙個序號x,表明在後面傳送資料時的第乙個資料位元組的序號是x。

2)主機b的tcp收到連線請求報文段後,如同意,則發揮確認。在確認報文段中應將syn置為1,確認號應為x+1,同時也為自己選擇乙個序號y

3)主機a的tcp收到此報文段後,還要向b給出確認,其確認號為y+1

4)主機a的tcp通知上層應用程序,連線已經建立,當主機b的tcp收到主機a的確認後,也通知上層應用程序,連線建立。

closed : 程序處於關閉狀態。

syn-sent : 客戶程序進入同步已傳送狀態。

estab-lishend : 程序已經入已建立連線狀態,之後可以傳送資料了。

listen : 伺服器程序處於收聽狀態。

syn-rcvd : 伺服器程序進入同步收到狀態。

5.tcp連線的釋放

在資料傳輸完畢之後,通訊雙方都可以發出釋放連線的請求。釋放連線的過程為如上圖所示:

1)資料傳輸結束後,主機a的應用程序先向其tcp發出釋放連線請求,不在傳送資料。tcp通知對方要釋放從a到b的連線,將發往主機b的tcp報文段首部的終止位元fin置為1,序號u等於已傳送資料的最後乙個位元組的序號加1。

2)主機b的tcp收到釋放連線通知後發出確認,其序號為u+1,同時通知應用程序,這樣a到b的連線就釋放了,連線處於半關閉狀態。主機b不在接受主機a發來的資料;但主機b還向a傳送資料,主機a若正確接收資料仍需要傳送確認。

3)在主機b向主機a的資料傳送結束後,其應用程序就通知tcp釋放連線。主機b發出的連線釋放報文段必須將終止位元置為1,並使其序號w等於前面已經傳送過的資料的最後乙個位元組的序號加 1,還必須重複上次已傳送過的ack=u+1。

4)主機a對主機b的連線釋放報文段發出確認,將ack置為1,ack=w+1, seq=u+1。這樣才把從b到a的反方向連線釋放掉,主機a的tcp再向其應用程序報告,整個連線已經全部釋放。

estab-lishend : 程序已經入已建立連線狀態,可以傳送資料。

fin-wait1 : 客戶端程序進入終止等待1的狀態。

fin-wait2 : 客戶端程序進入終止等待2的狀態。

time-wait: 客戶端程序進入時間等待(伺服器的重傳)的狀態。

closed : 程序處於關閉狀態。

closed-wait: 伺服器程序進入關閉等待狀態。

last-ack: 伺服器進行最後一次關閉確認。

注意兩個狀態:

<1> closed-wait: 伺服器程序進入關閉等待狀態。

伺服器等待關閉狀態:伺服器接收到客戶端關閉連線的請求,而自身還未想客戶端傳送關閉連線請求的這段時間。

通常情況下,close_wait狀態的持續時間應該很短,但是如果伺服器有很多資料需要傳輸或讀寫時,就不能關閉連線,此時就會出現連線長時間處於close_wait狀態的情況。

<2> time-wait: 客戶端程序進入時間等待(伺服器的重傳)的狀態。

《客戶端完全關閉狀態》:客戶端收到伺服器斷開連線的請求後,會向伺服器確認收到分組,表示自己已經收到,你可以關閉連線了。但是該確認分組可能由於網路問題收不到,而出現重傳的情況。所以客戶端必須要等待一會。此時客戶端等待完全關閉的時間就為time-wait時期。

6.注意的問題

需要三次握手(

還要再傳送一次確認)的原因:

連線的建立和釋放所要求的步驟可以用乙個有限狀態機來表達,該狀態機有11種狀態。每一種狀態中都存在一些合法的事件,當合法事件發生的時候,可能需要採取某個動作。當其他事件發生的時候,則報告乙個錯誤。

狀 態描 述

closed

關閉狀態,沒有連線活動或正在進行

listen

監聽狀態,伺服器正在等待連線進入

syn rcvd

收到乙個連線請求,尚未確認

syn sent

已經發出連線請求,等待確認

established

連線建立,正常資料傳輸狀態

fin wait 1

(主動關閉)已經傳送關閉請求,等待確認

fin wait 2

(主動關閉)收到對方關閉確認,等待對方關閉請求

timed wait

完成雙向關閉,等待所有分組死掉

closing

雙方同時嘗試關閉,等待對方確認

close wait

(被動關閉)收到對方關閉請求,已經確認

last ack

(被動關閉)等待最後乙個關閉確認,並等待所有分組死掉

tcp建立與釋放的變遷如圖所示:

伺服器程序變遷的過程(粗虛線)

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詳解學習筆記

ospf 開房最短路徑優先 ospf是一種鏈路狀態協議,在鏈路狀態協議中,路由器並不與其相鄰的路由交換距離資訊。而採用的是每個路由器主動地測試與相鄰路由器鏈路的狀態,並將這些資訊傳送給它的相鄰路由器,而鄰居路由器將這些資訊在自治系統中傳播出去。每個路由器接收到這些鏈路狀態資訊後,並建立起完整的路由表...