TCP連接的三次握手
是眾所周知的矫俺,就是一個(gè)連接序號(hào)和應(yīng)答序號(hào)在客戶端和服務(wù)端的傳遞戏羽,然后再明確一點(diǎn)是三次握手只是為了保證連接的可靠性桩卵,并不能保證數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
第一次握手:傳遞SYN =1闷盔,seq=x ,ACK=0 到服務(wù)端能真。
第二次握手: 服務(wù)端接收返回ack=x+1.seq=y到客戶端赁严,收到信息發(fā)送消息后進(jìn)入ESTABLISHED狀態(tài)。
第三次握手:客戶端發(fā)送 ack =y+1 SYN=0 ACK=1到服務(wù)端粉铐,服務(wù)端收到信息疼约,進(jìn)入ESTABLISHED狀態(tài)。
自此 客戶端和服務(wù)端都知道對(duì)方可以正確的傳遞數(shù)據(jù)到自己這秦躯。
這邊會(huì)有個(gè)提問忆谓?
為什么二次握手不夠?
通俗的講:二次握手踱承,服務(wù)端不知道能不能發(fā)送信息到客戶端倡缠,不符合雙向通信哨免,而且不可靠的。
進(jìn)一步說(shuō):二次握手昙沦,當(dāng)請(qǐng)求到服務(wù)端琢唾,服務(wù)端就進(jìn)入ESTABLISHED狀態(tài)。當(dāng)有一個(gè)請(qǐng)求在路上耽擱了盾饮,在正常的請(qǐng)求結(jié)束之后采桃,發(fā)送到了服務(wù)端,服務(wù)端進(jìn)入ESTABLISHED狀態(tài)丘损,但是客戶端已經(jīng)CLOSED狀態(tài)普办,服務(wù)端等待發(fā)送信息,持續(xù)占有資源徘钥。
三次握手的目的:知道了雙方這會(huì)都可以發(fā)送數(shù)據(jù)
四次揮手
:
二次揮手結(jié)束一個(gè)單向連接衔蹲。
第一次揮手:發(fā)送FIN=1 seq=u到服務(wù)端 ,客戶端進(jìn)入WAIT-1階段
第二次揮手:發(fā)送ACK=1 seq=v ack=u+1 呈础,服務(wù)端進(jìn)入CLOSE-WAIT階段舆驶,客戶端收到進(jìn)入WAIT-2階段,斷開單向連接而钞,連接釋放沙廉。
第三次揮手:服務(wù)端FIN=1,seq=w臼节,ack = u+1,服務(wù)端進(jìn)入LAST_ACK階段撬陵,客戶端收到TIME_WAIT階段。
第四次揮手:客戶端發(fā)送 ACK=1 seq =u+1 ack=w+1 客戶端進(jìn)入CLOSED狀態(tài)网缝,服務(wù)端收到進(jìn)入CLOSED狀態(tài)袱结。
為什么不是三次揮手呢?
三次揮手:第二次揮手需要發(fā)送FIN 標(biāo)識(shí)沒有數(shù)據(jù)要發(fā)送了途凫,但是這個(gè)保證不了。四次揮手的主要目的:是為了知道雙方都不能發(fā)送數(shù)據(jù)了
溢吻。