TCP四次揮手的過(guò)程:

理解:
TCP是雙向通訊協(xié)議,客戶端發(fā)送FIN到服務(wù)端,告訴服務(wù)端,客戶端不會(huì)再發(fā)送數(shù)據(jù)了,但是服務(wù)端還有消息未發(fā)送完畢,為防止客戶端消息等待,服務(wù)端會(huì)首先發(fā)送ACK確認(rèn)字符到客戶端,并關(guān)閉消息接收服務(wù)。但是服務(wù)端會(huì)將剩余消息發(fā)送完畢,然后發(fā)送FIN到客戶端,告訴客戶端不會(huì)再發(fā)送消息,然后客戶端會(huì)回復(fù)ACK表示收到,并關(guān)閉服務(wù),當(dāng)服務(wù)端收到ACK后,驗(yàn)證正常則會(huì)關(guān)閉所有的服務(wù),TCP連接中斷完畢。
為什么建立連接是三次握手,而關(guān)閉連接卻是四次揮手呢?
這是因?yàn)榉?wù)端在LISTEN狀態(tài)下,收到客戶端發(fā)送的斷開(kāi)連接的FIN報(bào)文后,可能會(huì)有數(shù)據(jù)未發(fā)送完成,需要繼續(xù)發(fā)送,因此不能將確認(rèn)消息和請(qǐng)求關(guān)閉消息同時(shí)發(fā)送,而是會(huì)先關(guān)閉接收服務(wù)回復(fù)確認(rèn)消息,然后繼續(xù)發(fā)送未完消息到客戶端,直到發(fā)送結(jié)束,再發(fā)送請(qǐng)求關(guān)閉消息.