什么是三次握手
2016-01-18 10:30:05
16429
所謂三次握手(Three-way Handshake),是指建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)器總共發(fā)送3個(gè)包。
三次握手的目的是連接服務(wù)器指定端口,建立TCP連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào)并交換 TCP 窗口大小信息.在socket編程中,客戶端執(zhí)行connect()時(shí)。將觸發(fā)三次握手。
1.第一次握手:
客戶端發(fā)送一個(gè)TCP的SYN標(biāo)志位置1的包指明客戶打算連接的服務(wù)器的端口,以及初始序號(hào)X,保存在包頭的序列號(hào)(Sequence Number)字段里。
Client --> 置SYN標(biāo)志 序列號(hào) = x,確認(rèn)號(hào) = 0 ----> Server
2.第二次握手:
服務(wù)器發(fā)回確認(rèn)包(SYN/ACK)應(yīng)答。接收方收到這個(gè)段后,向發(fā)送者回發(fā)一個(gè)段。代碼位設(shè)置為SYN和ACK,序列號(hào)設(shè)置為y,確認(rèn)序列號(hào)設(shè)置為x+1。
Client <-- 置SYN標(biāo)志 置ACK標(biāo)志 序列號(hào) = y, 確認(rèn)號(hào) = x + 1 <-- Server
3.第三次握手.
客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1.并且把服務(wù)器發(fā)來(lái)ACK的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方.并且在數(shù)據(jù)段放寫(xiě)ISN的+1
Clinet --> 置ACK標(biāo)志 序列號(hào) = x + 1,確認(rèn)號(hào) = y + 1 --> Server
會(huì)員登錄
賬號(hào)登錄還沒(méi)有賬號(hào)?立即注冊(cè)