TCP連線的建立和斷開

2021-09-22 08:51:32 字數 1828 閱讀 8044

1.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的確認後,也通知上層應用程序,連線建立。

2.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再向其應用程序報告,整個連線已經全部釋放。

3.注意的問題

4.tcp的有限狀態機

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

狀 態描 述closed

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

listen

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

syn rcvd

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

syn sent

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

established

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

fin wait 1

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

fin wait 2

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

timed wait

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

closing

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

close wait

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

last ack

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

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

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

TCP連線的建立和斷開

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

TCP連線建立與斷開

重點關注標記 三次握手確認建立雙向連線 男 我們談朋友吧!syn 女 談朋友,好的!syn ack 男 好的!ack ps 如男方後悔了另謀物件,沒有第三次確認,那麼女方就是單方面確認談朋友,建立了髒連線。四次揮手確認斷開連線 男 我們分手吧!fin 女 好的,等我收拾完東西發訊息給你 此時男不能再...

TCP建立連線與斷開連線的過程

在cs模式的tcp連線建立過程中,客戶端與伺服器端流程如下 客戶端流程 傳送請求 接收伺服器端確認 傳送對伺服器端確認的確認。伺服器端流程 接收客戶端的連線建立請求 傳送確認 接收客戶端傳送的對確認的確認。1 剛開始客戶端和服務端都處於closed狀態,服務端開始監聽某個埠,進入listen狀態。2...