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...