国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
TCP協(xié)議的建立與釋放及TCP的有限狀態(tài)基

http://9195095.blog.51cto.com/9185095/1774460

2016

一、TCP的鏈接建立(三次握手)

如下圖所示:假定最初兩端的TCP進程都處于關閉狀態(tài)。下圖中,client主動打開鏈接,server被動打開鏈接

    

創(chuàng)建過程:

    ①、server的TCP服務器進程先創(chuàng)建傳輸控制塊TCB(存儲了每一個鏈接中的重要信息),準備接受client進程的連接請求。然后服務器進程就處于LISTEN(收聽)狀態(tài),等待客戶的連接請求。如有,作出響應。

    ②、client的TCP客戶進程也是首先創(chuàng)建傳輸控制模塊TCB,然后向server發(fā)出連接請求報文段,這時首部中的同步位SYN =1,同時選擇一個初始序號 seq =1000,TCP規(guī)定,SYN報文段不能攜帶數據,但要消耗一個序號。這時,TCP客戶進程進入SYN-SENT(同步以發(fā)送)狀態(tài)。mss表示最大段尺寸,

如果一個段太大,封裝成幀后超過了鏈路層的最大幀長度,就必須在IP 層分片,為了避免這種情況,客戶端聲明自己的最大段尺寸,建議服務器端發(fā)來的段不要超過這個長度。

    ③、server收到連接請求報文段后,如同意建立連接,則向client發(fā)送確認。在確認報文段中應把SYN 為和ACK 位都置1,確認號是ack =1001,同時也為自己選擇一個初始序號seq=8000。這個報文段也不能攜帶數據,但同樣要消耗一個序號。這時TCP服務器進程進入SYN-RCVD(同步收到)狀態(tài)。

    ④、TCP客戶進程收到server的確認后,還要向server給出確認,確認報文段ACK 置1,確認號ack =8001,而自己序號為seq=1002,TCP的標準規(guī)定,ACK 報文段可以攜帶數據。但如果不攜帶數據則不消耗序號,這種情況下,下一個數據報文段的序號仍是seq =1002.這時,TCP連接已經建立,client進去ESTABLISHED(已建立連接)狀態(tài)。

    ⑤、當servers收到client的確認后,也進入ESTABLISHED狀態(tài)。

****************為什么client還要發(fā)送一次確認呢?主要是為了防止已失效的連接請求報文段突然又傳送到了server,因而產生錯誤。**********************

二、TCP的連接釋放(四次揮手)

如下圖所示:

釋放連接過程:

    ①、數據傳輸結束后,通信的雙方都可釋放連接?,F在client和server都處于ESTABLISHED狀態(tài)。client的應用進程先向其TCP發(fā)出連接釋放,并停止再發(fā)送數據,主動關閉TCP連接。client把連接釋放報文段首部的FIN置1,其序號 seq=1021,它等于前面已傳送過的數據的最后一個字節(jié)的序號加1.這是client進入FIN-WAIT-1(終止等待1)狀態(tài),等待server的確認。TCP規(guī)定,FIN報文段即使不攜帶數據,它也消耗一個序號。

    ②、server收到連接釋放報文段后即發(fā)出確認,確認號是ack=1022,然后server就進入CLOSE-WAIT(關閉等待)狀態(tài)。TCP服務器進程這時應通過高層應用進程,而從client到server這個方向的連接就釋放了,這時的TCP連接處于半關閉(half-close)狀態(tài),即client已經沒有數據要發(fā)送了,但server若發(fā)送數據,client仍要接收。也就是說server到client這個方向的連接并未關閉。

    ③、client收到來自server的確認后,就進入FIN-WAIT-2(終止等待2)狀態(tài),等待server發(fā)出的連接釋放報文段。若server已經沒有要向client發(fā)送的數據,其應用進程就通知TCP 釋放連接。這是B發(fā)出的連接釋放報文段必須使FIN=1 。現假定server的序號為8011.這是server就進入LAST-ACK(最后確認狀態(tài)),等待client的確認。

    ④、client在收到server的連接釋放報文段后,必須對此發(fā)出確認,在確認報文段中把ACK置1 ,序號為8012,然后進入到TIME-WAIT(時間等待)狀態(tài)。這時候TCP連接還沒有釋放掉。必須經過時間等待計時器設置的時間2MSL后,client才進入到CLOSE狀態(tài)。時間MSL叫做最長報文段壽命,建議設置為2分鐘。

    ⑤、server接收到了client發(fā)出的確認,就進入CLOSED狀態(tài)。

**************為什么client在TIME-WAIT狀態(tài)必須等待2MSL時間呢?**********

    第一,為了保證client發(fā)送的最后一個ACK報文段能夠到達server。

    第二,防止“已失效的連接請求報文段”出現在本連接中。

三、TCP有限狀態(tài)基

    

每個方框中的大寫英文字符串是TCP標準所使用的TCP連接狀態(tài)名。狀態(tài)之間的箭頭表示可能發(fā)生的狀態(tài)變遷。箭頭旁邊的字,表明引起這種變遷的原因,或表明發(fā)生狀態(tài)變遷后又出現什么動作。圖中三種不同的箭頭表示的意義不同,粗實箭頭表示對客戶進程的正常變遷,粗虛箭頭表示對服務器進程的正常變遷。另外一種細線箭頭表示異常變遷。

    ①、CLOSED 狀態(tài)時初始狀態(tài)。

    ②、LISTEN:被動打開,服務器端的 狀態(tài)變?yōu)長ISTEN(監(jiān)聽)

    ③、SYN-RECVD:服務器端收到SYN后,狀態(tài)為SYN;發(fā)送SYN ACK;

    ④、SYN_SENTY:應用程序發(fā)送SYN后,狀態(tài)為SYN_SENT;

    ⑤、ESTABLISHED:當連接已經建立,客戶端進入ESTABLISHED狀態(tài),服務器端收到客戶端的確認后,服務器端也進入ESTABLISHED狀態(tài)。

     ⑥、FIN_WAIT_1:應用程序端發(fā)送FIN,準備斷開TCP連接

    ⑦、CLOSE_WAIT:服務器端在收到FIN后,發(fā)送ACK,狀態(tài)為CLOSE_WAIT

    ⑧、FIN_WAIT_2:當客戶端收到來自服務器端的確認后,就進入FIN_WAIT_2.

    ⑨、LAST_ACK:當服務器端沒有要向客戶端發(fā)送的數據,其應用進程就通知TCP釋放連接。服務器端重復上次已發(fā)送過得確認號。這時服務器端就進入LAST_ACK狀態(tài)。

    10、TIME_WAIT:客戶端收到服務器端的連接釋放報文段后,對此發(fā)出確認,然后客戶端就進入了TIME_WAIT狀態(tài)。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
TCP/IP三次握手與四次揮手
網絡基礎、TCP/IP 三次握手和四次揮手
三次握手
拜托面試不要再問我TCP三次握手與四次揮手了
TCP協(xié)議:三次握手,四次揮手
TCP協(xié)議中的三次握手和四次握手(圖解)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服