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

tcpip協(xié)議 tcpip協(xié)議棧( 三 )


TCP 與 UDP 的區(qū)別相當(dāng)大 。它充分地實(shí)現(xiàn)了數(shù)據(jù)傳輸時(shí)各種控制功能,可以進(jìn)行丟包時(shí)的重發(fā)控制,還可以對(duì)次序亂掉的分包進(jìn)行順序控制 。而這些在 UDP 中都沒(méi)有 。此外,TCP 作為一種面向有連接的協(xié)議 , 只有在確認(rèn)通信對(duì)端存在時(shí)才會(huì)發(fā)送數(shù)據(jù) , 從而可以控制通信流量的浪費(fèi) 。根據(jù) TCP 的這些機(jī)制,在 IP 這種無(wú)連接的網(wǎng)絡(luò)上也能夠?qū)崿F(xiàn)高可靠性的通信( 主要通過(guò)檢驗(yàn)和、序列號(hào)、確認(rèn)應(yīng)答、重發(fā)控制、連接管理以及窗口控制等機(jī)制實(shí)現(xiàn)) 。3.1 三次握手(重點(diǎn))
TCP 提供面向有連接的通信傳輸 。面向有連接是指在數(shù)據(jù)通信開(kāi)始之前先做好兩端之間的準(zhǔn)備工作 。所謂三次握手是指建立一個(gè) TCP 連接時(shí)需要客戶(hù)端和服務(wù)器端總共發(fā)送三個(gè)包以確認(rèn)連接的建立 。在socket編程中,這一過(guò)程由客戶(hù)端執(zhí)行connect來(lái)觸發(fā) 。下面來(lái)看看三次握手的流程圖:

三次握手
第一次握手:客戶(hù)端將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=J , 并將該數(shù)據(jù)包發(fā)送給服務(wù)器端,客戶(hù)端進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器端確認(rèn) 。第二次握手:服務(wù)器端收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道客戶(hù)端請(qǐng)求建立連接,服務(wù)器端將標(biāo)志位SYN和ACK都置為1 , ack=J+1,隨機(jī)產(chǎn)生一個(gè)值seq=K,并將該數(shù)據(jù)包發(fā)送給客戶(hù)端以確認(rèn)連接請(qǐng)求,服務(wù)器端進(jìn)入SYN_RCVD狀態(tài) 。第三次握手:客戶(hù)端收到確認(rèn)后 , 檢查ack是否為J+1 , ACK是否為1,如果正確則將標(biāo)志位ACK置為1,ack=K+1,并將該數(shù)據(jù)包發(fā)送給服務(wù)器端,服務(wù)器端檢查ack是否為K+1 , ACK是否為1,如果正確則連接建立成功,客戶(hù)端和服務(wù)器端進(jìn)入ESTABLISHED狀態(tài),完成三次握手,隨后客戶(hù)端與服務(wù)器端之間可以開(kāi)始傳輸數(shù)據(jù)了 。3.2 四次揮手(重點(diǎn))
四次揮手即終止TCP連接 , 就是指斷開(kāi)一個(gè)TCP連接時(shí) , 需要客戶(hù)端和服務(wù)端總共發(fā)送4個(gè)包以確認(rèn)連接的斷開(kāi) 。在socket編程中,這一過(guò)程由客戶(hù)端或服務(wù)端任一方執(zhí)行close來(lái)觸發(fā) 。由于TCP連接是全雙工的,因此,每個(gè)方向都必須要單獨(dú)進(jìn)行關(guān)閉,這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后 , 發(fā)送一個(gè)FIN來(lái)終止這一方向的連接,收到一個(gè)FIN只是意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng)了,即不會(huì)再收到數(shù)據(jù)了,但是在這個(gè)TCP連接上仍然能夠發(fā)送數(shù)據(jù),直到這一方向也發(fā)送了FIN 。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉 , 而另一方則執(zhí)行被動(dòng)關(guān)閉 。下面來(lái)看看四次揮手的流程圖:

四次揮手
中斷連接端可以是客戶(hù)端 , 也可以是服務(wù)器端 。第一次揮手:客戶(hù)端發(fā)送一個(gè)FIN=M,用來(lái)關(guān)閉客戶(hù)端到服務(wù)器端的數(shù)據(jù)傳送,客戶(hù)端進(jìn)入FIN_WAIT_1狀態(tài) 。意思是說(shuō)"我客戶(hù)端沒(méi)有數(shù)據(jù)要發(fā)給你了",但是如果你服務(wù)器端還有數(shù)據(jù)沒(méi)有發(fā)送完成,則不必急著關(guān)閉連接,可以繼續(xù)發(fā)送數(shù)據(jù) 。第二次揮手:服務(wù)器端收到FIN后,先發(fā)送ack=M+1 , 告訴客戶(hù)端 , 你的請(qǐng)求我收到了,但是我還沒(méi)準(zhǔn)備好,請(qǐng)繼續(xù)你等我的消息 。這個(gè)時(shí)候客戶(hù)端就進(jìn)入FIN_WAIT_2 狀態(tài),繼續(xù)等待服務(wù)器端的FIN報(bào)文 。第三次揮手:當(dāng)服務(wù)器端確定數(shù)據(jù)已發(fā)送完成,則向客戶(hù)端發(fā)送FIN=N報(bào)文,告訴客戶(hù)端,好了,我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接了 。服務(wù)器端進(jìn)入LAST_ACK狀態(tài) 。第四次揮手:客戶(hù)端收到FIN=N報(bào)文后,就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò),怕服務(wù)器端不知道要關(guān)閉,所以發(fā)送ack=N+1后進(jìn)入TIME_WAIT狀態(tài),如果Server端沒(méi)有收到ACK則可以重傳 。服務(wù)器端收到ACK后 , 就知道可以斷開(kāi)連接了 。客戶(hù)端等待了2MSL后依然沒(méi)有收到回復(fù) , 則證明服務(wù)器端已正常關(guān)閉,那好,我客戶(hù)端也可以關(guān)閉連接了 。最終完成了四次握手 。上面是一方主動(dòng)關(guān)閉 , 另一方被動(dòng)關(guān)閉的情況 , 實(shí)際中還會(huì)出現(xiàn)同時(shí)發(fā)起主動(dòng)關(guān)閉的情況,

推薦閱讀