日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

tcpip是什么 tcpip協(xié)議通俗易懂( 二 )


SYN_RECV是指,服務(wù)端被動打開后,接收到了客戶端的SYN并且發(fā)送了ACK時的狀態(tài) 。再進(jìn)一步接收到客戶端的ACK就進(jìn)入ESTABLISHED狀態(tài) 。
第三次握手:客戶端收到服務(wù)端的 SYN+ACK(確認(rèn)符) 報文段;然后將 ACK 設(shè)置為 y+1,向服務(wù)端發(fā)送ACK報文段,這個報文段發(fā)送完畢后,客戶端和服務(wù)端都進(jìn)入ESTABLISHED(連接成功)狀態(tài),完成TCP 的三次握手 。
上面的解釋可能有點(diǎn)不好理解,用《圖解HTTP》中的一副插圖 幫助大家 。

tcpip是什么 tcpip協(xié)議通俗易懂


當(dāng)客戶端和服務(wù)端通過三次握手建立了 TCP 連接以后,當(dāng)數(shù)據(jù)傳送完畢,斷開連接就需要進(jìn)行TCP的四次揮手 。其四次揮手如下所示:
第一次揮手
客戶端設(shè)置seq和 ACK ,向服務(wù)器發(fā)送一個 FIN(終結(jié))報文段 。此時,客戶端進(jìn)入 FIN_WAIT_1 狀態(tài),表示客戶端沒有數(shù)據(jù)要發(fā)送給服務(wù)端了 。
第二次揮手
服務(wù)端收到了客戶端發(fā)送的 FIN 報文段,向客戶端回了一個 ACK 報文段 。
第三次揮手
服務(wù)端向客戶端發(fā)送FIN 報文段,請求關(guān)閉連接,同時服務(wù)端進(jìn)入 LAST_ACK 狀態(tài) 。
第四次揮手
客戶端收到服務(wù)端發(fā)送的 FIN 報文段后,向服務(wù)端發(fā)送 ACK 報文段,然后客戶端進(jìn)入 TIME_WAIT 狀態(tài) 。服務(wù)端收到客戶端的 ACK 報文段以后,就關(guān)閉連接 。此時,客戶端等待 2MSL(指一個片段在網(wǎng)絡(luò)中最大的存活時間)后依然沒有收到回復(fù),則說明服務(wù)端已經(jīng)正常關(guān)閉,這樣客戶端就可以關(guān)閉連接了 。
最后再看一下完整的過程:
tcpip是什么 tcpip協(xié)議通俗易懂


如果有大量的連接,每次在連接,關(guān)閉都要經(jīng)歷三次握手,四次揮手,這顯然會造成性能低下 。因此 。Http 有一種叫做 長連接(keepalive connections) 的機(jī)制 。它可以在傳輸數(shù)據(jù)后仍保持連接,當(dāng)客戶端需要再次獲取數(shù)據(jù)時,直接使用剛剛空閑下來的連接而無需再次握手 。
tcpip是什么 tcpip協(xié)議通俗易懂


一些問題匯總:
1. 為什么要三次握手?
為了防止已失效的連接請求報文突然又傳送到了服務(wù)端,因?yàn)楫a(chǎn)生錯誤 。
具體解釋: “已失效的連接請求報文段”產(chǎn)生情況:
client 發(fā)出的第一個連接請求報文段并沒有丟失,而是在某個網(wǎng)絡(luò)節(jié)點(diǎn)長時間滯留,因此導(dǎo)致延誤到連接釋放以后的某個時間才到達(dá) service 。如果沒有三次握手,那么此時server收到此失效的連接請求報文段,就誤認(rèn)為是 client再次發(fā)出的一個新的連接請求,于是向 client 發(fā)出確認(rèn)報文段,同意建立連接,而此時 client 并沒有發(fā)出建立連接的情況,因此并不會理會服務(wù)端的響應(yīng),而service將會一直等待client發(fā)送數(shù)據(jù),因此就會導(dǎo)致這條連接線路白白浪費(fèi) 。
如果此時變成兩次揮手行不行?
這個時候需要明白全雙工與半雙工,再進(jìn)行回答 。比如:
第一次握手: A給B打電話說,你可以聽到我說話嗎?
第二次握手: B收到了A的信息,然后對A說: 我可以聽得到你說話啊,你能聽得到我說話嗎?
第三次握手: A收到了B的信息,然后說可以的,我要給你發(fā)信息啦!
在三次握手之后,A和B都能確定這么一件事: 我說的話,你能聽到; 你說的話,我也能聽到 。**這樣,就可以開始正常通信了 。**如果是兩次,那將無法確定
2. 為什么要四次揮手?
TCP 協(xié)議是一種面向連接,可靠,基于字節(jié)流的傳輸層通信協(xié)議 。TCP 是全雙工模式(同一時刻可以同時發(fā)送和接收),這就意味著,當(dāng)主機(jī)1發(fā)出 FIN 報文段時,只是表示主機(jī)1已結(jié)沒有數(shù)據(jù)要發(fā)送了,主機(jī)1告訴主機(jī)2,它的數(shù)據(jù)已經(jīng)全部發(fā)送完畢;但是,這個時候主機(jī)1還是可以接受來自主機(jī)2的數(shù)據(jù);當(dāng)主機(jī)2返回 ACK報文段時,這個時候就表示主機(jī)2也沒有數(shù)據(jù)要發(fā)送了,就會告訴主機(jī)1,我也沒有數(shù)據(jù)要發(fā)送了,之后彼此就會中斷這次TCP連接 。

推薦閱讀