運輸連線具有三個階段:連線建立、資料傳送以及連線釋放。運輸連線管理就是對連線建立以及連線釋放過程的管控,使得其能正常執行,達到這些目的:使通訊雙方能夠確知對方的存在、可以允許通訊雙方協商一些引數(最大報文段長度、最大視窗大小等等)、能夠對運輸實體資源進行分配(快取大小等)。tcp連線的建立採用客戶-伺服器模式:主動發起連線建立的應用程序叫做客戶,被動等待連線建立的應用程序叫做伺服器。
連線建立階段:
第一次握手:客戶端的應用程序主動開啟,並向客戶端發出請求報文段。其首部中:syn=1,seq=x。
第二次握手:伺服器應用程序被動開啟。若同意客戶端的請求,則發回確認報文,其首部中:syn=1,ack=1,ack=x+1,seq=y。
第三次握手:客戶端收到確認報文之後,通知上層應用程序連線已建立,並向伺服器發出確認報文,其首部:ack=1,ack=y+1。當伺服器收到客戶端的確認報文之後,也通知其上層應用程序連線已建立。
在這個過程中,通訊雙方的狀態如下圖,其中closed:關閉狀態、listen:收聽狀態、syn-sent:同步已傳送、syn-rcvd:同步收到、estab-lished:連線已建立。
至此,tcp連線就建立了,客戶端和伺服器可以愉快地玩耍了。只要通訊雙方沒有一方發出連線釋放的請求,連線就將一直保持。
連線釋放階段:
第一次揮手:資料傳輸結束以後,客戶端的應用程序發出連線釋放報文段,並停止傳送資料,其首部:fin=1,seq=u。
第二次揮手:伺服器端收到連線釋放報文段之後,發出確認報文,其首部:ack=u+1,seq=v。此時本次連線就進入了半關閉狀態,客戶端不再向伺服器傳送資料。而伺服器端仍會繼續傳送。
第三次揮手:若伺服器已經沒有要向客戶端傳送的資料,其應用程序就通知伺服器釋放tcp連線。這個階段伺服器所發出的最後乙個報文的首部應為:fin=1,ack=1,seq=w,ack=u+1。
第四次揮手:客戶端收到連線釋放報文段之後,必須發出確認:ack=1,seq=u+1,ack=w+1。 再經過2msl(最長報文端壽命)後,本次tcp連線真正結束,通訊雙方完成了他們的告別。
在這個過程中,通訊雙方的狀態如下圖,其中:estab-lished:連線建立狀態、fin-wait-1:終止等待1狀態、fin-wait-2:終止等待2狀態、close-wait:關閉等待狀態、last-ack:最後確認狀態、time-wait:時間等待狀態、closed:關閉狀態
TCP三次握手四次揮手過程
tcp三次握手四次揮手過程 三次握手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線 第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認。第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時...
TCP三次握手 四次揮手過程
tcp是面向位元組流的可靠協議,傳輸的資料單元叫報文段,報文段包括 首部和資料。序號 本報文段傳送的資料的第乙個位元組的序號 確認ack 連線請求報文段的ack 0,建立連線後ack 1 ack 1時確認號有效,ack 0時確認號無效 同步syn 當syn 1,ack 0這是連線請求報文段,若對方同...
TCP三次握手和四次揮手過程
三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...