1.為什么要三次握手直奋,而不是兩次检疫?
(1)B資源浪費(fèi)問(wèn)題(先發(fā)后至導(dǎo)致的)
a. A主動(dòng)和B建立TCP連接,A的第一個(gè)SYN=1消息擁塞鸵贬,超時(shí)后發(fā)出第二個(gè)SYN=1消息俗他;
b. B收到第二個(gè)SYN=1消息,響應(yīng)SYN=1阔逼、ACK=1消息兆衅,建立連接,傳輸數(shù)據(jù)嗜浮,然后斷開(kāi)羡亩;
c. 此時(shí),第一個(gè)SYN=1消息到達(dá)B危融,B響應(yīng)畏铆,發(fā)出SYN=1、ACK=1消息吉殃;
d. A會(huì)忽略這條響應(yīng)消息辞居,而B(niǎo)會(huì)以為連接建立成功了,造成B的資源浪費(fèi)蛋勺。
(2)可能的死鎖問(wèn)題
a. A主動(dòng)和B建立TCP連接瓦灶,A的SYN=1消息到達(dá)B,B響應(yīng)SYN=1抱完、ACK=1消息贼陶;
b. B響應(yīng)消息丟包了。此時(shí)B以為連接建立巧娱,A等待B的確認(rèn)碉怔;
c. B會(huì)開(kāi)始發(fā)送數(shù)據(jù)消息;A仍然等待確認(rèn)禁添、或者超時(shí)之后重新發(fā)送SYN=1消息眨层;
d. B認(rèn)為連接建立了,會(huì)忽略A的SYN消息上荡,狂發(fā)數(shù)據(jù);A認(rèn)為連接沒(méi)建立,會(huì)等待酪捡、或重發(fā)叁征。此時(shí)一定會(huì)有帶寬資源浪費(fèi),有可能死鎖逛薇。
2.斷開(kāi)連接捺疼,主動(dòng)方為何要等待2MSL?
a. A發(fā)FIN=1請(qǐng)求斷開(kāi)永罚,B響應(yīng)ACK=1確認(rèn)啤呼;
b. B繼續(xù)發(fā)送“剩余”數(shù)據(jù);
c. B發(fā)FIN=1呢袱、ACK=1斷開(kāi)官扣,A響應(yīng)ACK=1確認(rèn);
d. 如果主動(dòng)方A羞福,響應(yīng)之后立即CLOSED惕蹄,當(dāng)上步的“ACK=1消息”丟失,會(huì)導(dǎo)致B重發(fā)FIN=1治专、ACK=1消息卖陵,而A已經(jīng)不能接收了。
因此张峰,需要等一段泪蔫;目前約定的是等2*MSL(MSL=報(bào)文最大壽命=2min)。