1.網絡連接的建立:三次握手階段
客戶端(SYN i)——>服務器端(ACK i+1,SYN j)——>客戶端(SYN j+1)
2.網絡連接的斷開:四次握手階段
客戶端(FIN)——>服務器端(ACK)——>服務器端(FIN)——>客戶端(ACK)
在網絡連接建立和斷開過程中,客戶端和服務器端的狀態變化過程如下所示:
1.客戶端,CLOSED——>SYN_SENT——>ESTABLISHED——>FIN_WAIT1——>FIN_WAIT2——>TIME_WAIT(2MSL等待狀態)——>CLOSED
2.服務器端,CLOSED——>LISTEN——>SYN收到——>ESTABLISHED——>CLOSE_WAIT——>LAST_ACK——>CLOSED
在關閉網絡連接時,可使用shutdown函數或者close函數,closesocket,shutdown所進行的TCP行爲是一樣的,所不同的是函數部分,shutdown會確保 windows建立的數據傳輸隊列中的數據不被丟失,而closesocket會冒然的拋棄所有的數據,因此如果你願意closesocket完全可以取代shutdown,然而在數據交互十分複雜的網絡協議程序中,最好還是shutdown穩妥一些