T C P是一個面向鏈接的協議。不管哪一方向另外一方發送數據以前,都必須先在雙方之間創建一條鏈接。 socket
RST:復位鏈接,將鏈接重置,通常用在異常關閉測試
發送第一個S Y N的一端將執行主動打開(active open),另外一端執行被動打開( passive open),blog
創建鏈接超時,經測試爲,1,2,4,8,16,32,隊列
四次揮手的時候,兩個方向的斷開是獨立的,每一個方向發送一個FIN,對方回覆一個ACK,但同時,TCP規定ACK能夠捎帶在其餘數據包當中,因此你看到的主動斷開鏈接一方本應收到的ACK,是被對方的FIN包捎帶過來的,就變成了三個包。並非全部的狀況下都是這樣,典型的一種狀況是,主動斷開的一方發送FIN以後,被動一方仍然有數據要繼續發送,就會先ACK這個FIN,而後繼續發送數據(在此過程當中主動斷開一方仍然會繼續ACK這些數據),直到數據發送完畢以後再發送FIN並接收對方的ACKit
T C P提供了鏈接的一端在結束它的發送後還能接收來自另外一端數據的能力。這就是所謂的半關閉。正如咱們早些時候提到的只有不多的應用程序使用它。若是應用程序不調用c l o s e而調用s h u t d o w n,且第2個參數值爲1,則插口的A P I支持半關閉。io
半關閉的一個例子,就是Unix的 rsh(1) 在另外一個系統上執行命令,輸入和輸出都是TCP鏈接。請求
T I M E _ WA I T狀態也稱爲 2 M S L等待狀態。程序
一個T C P鏈接由一個 4元組惟一肯定:本地 I P地址、本地端口號、遠端 I P地址和遠端端口
號。不管什麼時候關閉一個鏈接,一端必須保持這個鏈接,咱們看到 T I M E _ WA I T狀態將處理這個
問題。處理的原則是執行主動打開的一端在進入這個狀態時要保持的時間爲 T C P實現中規定
的M S L值的兩倍。im
異常終止一個鏈接d3
一方關閉後,Connection reset by peer: socket write error
異常關閉一方,發送RST復位鏈接,另外一方若是進行操做報上面的錯誤
一個同時打開的鏈接須要交換 4個報文段,比正常的三次握手多一個。
呼入鏈接請求隊列
正等待鏈接請求的一端有一個固定長度的鏈接隊列,該隊列中的鏈接已被 T C P接受(即三次握手已經完成),但尚未被應用層所接受。注意區分 T C P接受一個鏈接是將其放入這個隊列,而應用層接受鏈接是將其從該隊列中移出,測試50,多的鏈接將超時或者拒絕