三次揮手:
????1.客戶(hù)端主動(dòng)向服務(wù)器發(fā)送SYN=1贾虽,seq = x(確認(rèn)號(hào)4字節(jié))
????2. 服務(wù)器發(fā)送SYN=1足绅,seq = y (確認(rèn)號(hào))摩泪,ACK = 1笆焰,ack= x+1;
回復(fù)四個(gè)信息见坑,以確認(rèn)收到請(qǐng)求嚷掠。
? ? 3.客戶(hù)端再次發(fā)送請(qǐng)求 ACK = 1,ack= x+1
? ? 其中有一個(gè)經(jīng)典的問(wèn)題:為什么需要等待客戶(hù)端回復(fù)第三次消息呢荞驴?
原因是:服務(wù)器無(wú)法判斷接收到的請(qǐng)求是否在網(wǎng)絡(luò)滯留不皆,需要客戶(hù)端在發(fā)送一次請(qǐng)求,以防浪費(fèi)資源熊楼。
四次揮手:
? ? 1.客戶(hù)端發(fā)送報(bào)文段? FIN?
? ? 2.服務(wù)器收到后回應(yīng)報(bào)文段 ack =? m+1霹娄,表示同意斷開(kāi)連接。發(fā)送剩下的數(shù)據(jù)鲫骗。
? ? 3.然后發(fā)送 FIN 碼犬耻,等待回應(yīng)。
? ? 4.客戶(hù)端收到FIN 碼后执泰,發(fā)送ACK 碼枕磁,等待2個(gè)最長(zhǎng)報(bào)文時(shí)間后關(guān)閉連接。
? ? 5.服務(wù)器收到最后的ACK碼后關(guān)閉連接坦胶。
?其中有兩個(gè)經(jīng)典的問(wèn)題:為什么客戶(hù)端最后還要等待2MSL透典?
因?yàn)椋悍乐狗?wù)器因網(wǎng)絡(luò)原因沒(méi)有收到最后的ACK碼晴楔,所以等待2MSL顿苇,或許服務(wù)器沒(méi)有收到最后的ACK碼,重新再發(fā)FIN碼税弃。
為什么建立連接是三次握手纪岁,關(guān)閉連接確是四次揮手呢?
因?yàn)椋悍?wù)器的ACK碼和FIN碼是分開(kāi)發(fā)送的则果,期間還有數(shù)據(jù)傳輸?shù)摹?/p>