三次握手:
首先客戶端發(fā)送連接請求報文
服務(wù)器接受連接后恢復(fù)ACK報文,并為這次連接分配資源
客戶端接收到ACK報文好后也向服務(wù)器發(fā)送ACK報文,并分配資源
四次揮手:
當客戶端沒有需要向服務(wù)器發(fā)送的數(shù)據(jù)時,首先向服務(wù)器發(fā)送FIN報文,表示自己發(fā)送數(shù)據(jù)完畢,服務(wù)器可以繼續(xù)發(fā)送數(shù)據(jù)
服務(wù)器發(fā)送ACK報文,表示知道了,如果有,繼續(xù)發(fā)送數(shù)據(jù)
服務(wù)器發(fā)送數(shù)據(jù)完畢,向客戶端發(fā)送FIN報文
客戶端接受后發(fā)送ACK報文,并進入計時等待狀態(tài),
為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報文段生存時間)才能返回到CLOSE狀態(tài)?
答:雖然按道理,四個報文都發(fā)送完畢,我們可以直接進入CLOSE狀態(tài)了,但是我們必須假象網(wǎng)絡(luò)是不可靠的,有可以最后一個ACK丟失。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報文。