简述tcp协议三报文握手过程_TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而斷開(kāi)連接則需要四次握手。整個(gè)過(guò)程如下圖所示:
先來(lái)看看如何建立連接的。
首先Client端發(fā)送連接請(qǐng)求報(bào)文,Server段接受連接后回復(fù)ACK報(bào)文,并為這次連接分配資源。Client端接收到ACK報(bào)文后也向Server段發(fā)生ACK報(bào)文,并分配資源,這樣TCP連接就建立了。
那如何斷開(kāi)連接呢?簡(jiǎn)單的過(guò)程如下:
【注意】中斷連接端可以是Client端,也可以是Server端,所以準(zhǔn)確的說(shuō)應(yīng)該是一方關(guān)閉,別一方被動(dòng)關(guān)閉.
假設(shè)Client端發(fā)起中斷連接請(qǐng)求,也就是發(fā)送FIN報(bào)文。Server端接到FIN報(bào)文后,意思是說(shuō)"我Client端沒(méi)有數(shù)據(jù)要發(fā)給你了",但是如果你還有數(shù)據(jù)沒(méi)有發(fā)送完成,則不必急著關(guān)閉Socket,可以繼續(xù)發(fā)送數(shù)據(jù)。所以你先發(fā)送ACK,"告訴Client端,你的請(qǐng)求我收到了,但是我還沒(méi)準(zhǔn)備好,請(qǐng)繼續(xù)你等我的消息"。這個(gè)時(shí)候Client端就進(jìn)入FIN_WAIT狀態(tài),繼續(xù)等待Server端的FIN報(bào)文。當(dāng)Server端確定數(shù)據(jù)已發(fā)送完成,則向Client端發(fā)送FIN報(bào)文,"告訴Client端,好了,我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接了"。Client端收到FIN報(bào)文后,"就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò),怕Server端不知道要關(guān)閉,所以發(fā)送ACK后進(jìn)入TIME_WAIT狀態(tài),如果Server端沒(méi)有收到ACK則可以重傳。“,Server端收到ACK后,"就知道可以斷開(kāi)連接了"。Client端等待了2MSL后依然沒(méi)有收到回復(fù),則證明Server端已正常關(guān)閉,那好,我Client端也可以關(guān)閉連接了。Ok,TCP連接就這樣關(guān)閉了!
整個(gè)過(guò)程Client端所經(jīng)歷的狀態(tài)如下:
而Server端所經(jīng)歷的過(guò)程如下:
【注意】 在TIME_WAIT狀態(tài)中,如果TCP client端最后一次發(fā)送的ACK丟失了,它將重新發(fā)送。TIME_WAIT狀態(tài)中所需要的時(shí)間是依賴于實(shí)現(xiàn)方法的。典型的值為30秒、1分鐘和2分鐘。等待之后連接正式關(guān)閉,并且所有的資源(包括端口號(hào))都被釋放。
【問(wèn)題1】為什么連接的時(shí)候是三次握手,關(guān)閉的時(shí)候卻是四次握手?
答:因?yàn)楫?dāng)Server端收到Client端的SYN連接請(qǐng)求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文。其中ACK報(bào)文是用來(lái)應(yīng)答的,SYN報(bào)文是用來(lái)同步的。但是關(guān)閉連接時(shí),當(dāng)Server端收到FIN報(bào)文時(shí),很可能并不會(huì)立即關(guān)閉SOCKET,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴Client端,"你發(fā)的FIN報(bào)文我收到了"。只有等到我Server端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文,因此不能一起發(fā)送。故需要四步握手。
【問(wèn)題2】為什么TIME_WAIT狀態(tài)需要經(jīng)過(guò)2MSL(最大報(bào)文段生存時(shí)間)才能返回到CLOSE狀態(tài)?
答:雖然按道理,四個(gè)報(bào)文都發(fā)送完畢,我們可以直接進(jìn)入CLOSE狀態(tài)了,但是我們必須假象網(wǎng)絡(luò)是不可靠的,有可以最后一個(gè)ACK丟失。所以TIME_WAIT狀態(tài)就是用來(lái)重發(fā)可能丟失的ACK報(bào)文。
總結(jié)
以上是生活随笔為你收集整理的简述tcp协议三报文握手过程_TCP协议中的三次握手和四次挥手(图解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 广汽埃安固态电池 2026 年率先在昊铂
- 下一篇: 分析师:特斯拉取消推出Cybertruc