建立TCP需要三次握手才能建立,而斷開連接則需要四次握手。整個過程如下圖所示:
一、三次握手(建立連接)
1.客戶端發出段1,SYN位表示連接請求。序號是1000,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這個序號要加1,這樣在接收端可以根據序號排出數據包的正確順序,也可以發現丟包的情況,另外,規定SYN位和FIN位也要佔一個序號,這次雖然沒發數據,但是由於發了SYN位,因此下次再發送應該用序號1001。mss表示最大段尺寸, 如果一個段太大,封裝成幀後超過了鏈路層的最大幀長度,就必須在IP 層分片,爲了避 免這種情況,客戶端聲明自己的最大段尺寸,建議服務器端發來的段不要超過這個長度。
2.服務器發出段2,也帶有SYN位,同時置ACK位表示確認,確認序號是1001,表示“我接收到序號1000及其以前所有的段,請你下次發送序號爲1001的段”,也就是應答了客戶端 的連接請求,同時也給客戶端發出一個連接請求,同時聲明最大尺寸爲1024。
3.客戶端發出段3,對服務器的連接請求進行應答,確認序號是8001。
假設不採用“三次握手”,那麼只要server發出確認,新的連接就建立了。由於現在client並沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送數據。但server卻以爲新的運輸連接已經建立,並一直等待client發來數據。這樣,server的很多資源就白白浪費掉了。主要目的防止server端一直等待,浪費資源。
二、四次揮手(斷開連接)
1.客戶端發出段7,FIN位表示關閉連接的請求。
2.服務器發出段8,應答客戶端的關閉連接請求。
3.服務器發出段9,其中也包含FIN位,向客戶端發送關閉連接請求。
4.客戶端發出段10,應答服務器的關閉連接請求。