參照:http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html
在TCP/IP協定中,TCP協定提供可靠的連接配接服務,采用三次握手建立一個連接配接。 (這個狀态隻是一個虛拟的“連接配接”)
三次握手的目的是連接配接伺服器指定端口,建立TCP連接配接,并同步連接配接雙方的序列号和确認号并交換 TCP 視窗大小資訊.在socket程式設計中,用戶端執行connect()時。将觸發三次握手。
第一次握手:建立連接配接時,用戶端發送syn包(ISN=j)到伺服器,并進入SYN_SEND狀态,等待伺服器确認; (将SYN标志位置1;seq=ISN)
第二次握手:伺服器收到syn包,必須确認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=1),即SYN+ACK包,此時伺服器進入SYN_RECV狀态;(ack=j+1;加1是因為SYN占了1位,與此同時,FIN也占了1位)
第三次握手:用戶端收到伺服器的SYN+ACK包,向伺服器發送确認包ACK(ack=k+1),此包發送完畢,用戶端和伺服器進入ESTABLISHED狀态,完成三次握手。 完成三次握手,用戶端與伺服器開始傳送資料.

第一次握手:
用戶端發送一個TCP的SYN标志位置1的包指明客戶打算連接配接的伺服器的端口,以及初始序号X,儲存在標頭的序列号(Sequence Number)字段裡。
第二次握手:
伺服器發回确認包(ACK)應答。即SYN标志位和ACK标志位均為1同時,将确認序号(Acknowledgement Number)設定為客戶的I S N加1以.即X+1。
第三次握手:
用戶端再次發送确認包(ACK) SYN标志位為0,ACK标志位為1.并且把伺服器發來ACK的序号字段+1,放在确定字段中發送給對方.并且在資料段放寫ISN的+1
TCP 四次揮手
TCP的連接配接的拆除需要發送四個包,是以稱為四次揮手(four-way handshake)。用戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可産生揮手操作。