麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 網絡協議 > 正文

圖解TCP/IP協議 幫助大家輕松理解三次握手

2020-10-24 11:52:09
字體:
來源:轉載
供稿:網友

本文通過兩個圖來梳理TCP-IP協議相關知識。TCP通信過程包括三個步驟:建立TCP連接通道,傳輸數據,斷開TCP連接通道。如圖1所示,給出了TCP通信過程的示意圖。

圖1 TCP 三次握手四次揮手

圖1主要包括三部分:建立連接、傳輸數據、斷開連接

1)建立TCP連接很簡單,通過三次握手便可建立連接。

2)建立好連接后,開始傳輸數據。TCP數據傳輸牽涉到的概念很多:超時重傳、快速重傳、流量控制、擁塞控制等等。

3)斷開連接的過程也很簡單,通過四次握手完成斷開連接的過程。

三次握手建立連接:

第一次握手:客戶端發送syn包(seq=x)到服務器,并進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也發送一個SYN包(seq=y),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=y+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。

 握手過程中傳送的包里不包含數據,三次握手完畢后,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。

傳輸數據過程:

a.超時重傳

超時重傳機制用來保證TCP傳輸的可靠性。每次發送數據包時,發送的數據報都有seq號,接收端收到數據后,會回復ack進行確認,表示某一seq號數據已經收到。發送方在發送了某個seq包后,等待一段時間,如果沒有收到對應的ack回復,就會認為報文丟失,會重傳這個數據包。

b.快速重傳

接受數據一方發現有數據包丟掉了。就會發送ack報文告訴發送端重傳丟失的報文。如果發送端連續收到標號相同的ack包,則會觸發客戶端的快速重傳。比較超時重傳和快速重傳,可以發現超時重傳是發送端在傻等超時,然后觸發重傳;而快速重傳則是接收端主動告訴發送端數據沒收到,然后觸發發送端重傳。

c.流量控制

這里主要說TCP滑動窗流量控制。TCP頭里有一個字段叫Window,又叫Advertised-Window,這個字段是接收端告訴發送端自己還有多少緩沖區可以接收數據。于是發送端就可以根據這個接收端的處理能力來發送數據,而不會導致接收端處理不過來。 滑動窗可以是提高TCP傳輸效率的一種機制。

d.擁塞控制

滑動窗用來做流量控制。流量控制只關注發送端和接受端自身的狀況,而沒有考慮整個網絡的通信情況。擁塞控制,則是基于整個網絡來考慮的。考慮一下這樣的場景:某一時刻網絡上的延時突然增加,那么,TCP對這個事做出的應對只有重傳數據,但是,重傳會導致網絡的負擔更重,于是會導致更大的延遲以及更多的丟包,于是,這個情況就會進入惡性循環被不斷地放大。試想一下,如果一個網絡內有成千上萬的TCP連接都這么行事,那么馬上就會形成“網絡風暴”,TCP這個協議就會拖垮整個網絡。為此,TCP引入了擁塞控制策略。擁塞策略算法主要包括:慢啟動,擁塞避免,擁塞發生,快速恢復。

四次握手斷開連接:

第一次揮手:主動關閉方發送一個FIN,用來關閉主動方到被動關閉方的數據傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發數據了(當然,在fin包之前發送出去的數據,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些數據),但此時主動關閉方還可以接受數據。

第二次揮手:被動關閉方收到FIN包后,發送一個ACK給對方,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號)。

第三次揮手:被動關閉方發送一個FIN,用來關閉被動關閉方到主動關閉方的數據傳送,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發數據了。

第四次揮手:主動關閉方收到FIN后,發送一個ACK給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

圖2給出了TCP通信過程中的狀態轉移圖,理解此圖是我們理解TCP-IP協議的關鍵。

圖2  TCP狀態轉移圖

狀態圖詳細解讀:

1.CLOSED:起始點,在超時或者連接關閉時候進入此狀態。

2.LISTEN:服務端在等待連接過來時候的狀態,服務端為此要調用socket,bind,listen函數,就能進入此狀態。此稱為應用程序被動打開(等待客戶端來連接)。

3.SYN_SENT:客戶端發起連接,發送SYN給服務器端。如果服務器端不能連接,則直接進入CLOSED狀態。

4.SYN_RCVD:跟3對應,服務器端接受客戶端的SYN請求,服務器端由LISTEN狀態進入SYN_RCVD狀態。同時服務器端要回應一個ACK,同時發送一個SYN給客戶端;另外一種情況,客戶端在發起SYN的同時接收到服務器端得SYN請求,客戶端就會由SYN_SENT到SYN_RCVD狀態。

5.ESTABLISHED:服務器端和客戶端在完成3次握手進入狀態,說明已經可以開始傳輸數據了。

以上是建立連接時服務器端和客戶端產生的狀態轉移說明。相對來說比較簡單明了,如果你對三次握手比較熟悉,建立連接時的狀態轉移還是很容易理解。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人午夜免费观看 | 综合网天天色 | 久久久久久久久久久久久九 | 国产精品久久久在线观看 | 国产午夜免费视频 | 97中文字幕第一一一页 | 毛片大全免费看 | 一级黄色淫片 | 国产高潮好爽好大受不了了 | 国内精品视频饥渴少妇在线播放 | 久久精品视频首页 | 91在线视频福利 | 国产精品剧情一区二区在线观看 | 国产精品9191 | 成人免费看毛片 | 桥本有菜免费av一区二区三区 | 国产一级午夜 | 国产小视频在线 | 91精品国产综合久久久欧美 | 国产精品视频yy9299一区 | 精品国产一区二区三区久久久蜜 | 一区二区久久精品66国产精品 | 日韩视频精品一区 | 九九热免费精品 | 国产精品视频一区二区三区四区国 | 成人国产免费观看 | 日韩大片在线永久观看视频网站免费 | 91羞羞 | 欧美性生活区 | 国产免费人做人爱午夜视频 | fc2成人免费人成在线观看播放 | 视频在线亚洲 | 亚洲精品 在线播放 | 国产精品久久久久影院老司 | 午夜视频免费在线观看 | 在线a毛片| 视频一区 中文字幕 | 免费国产在线精品 | 爱操视频 | 欧美成人免费电影 | 毛片118极品美女写真 |