導讀 TCP(Transmission Control Protocol)網絡傳輸控制協議,是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,數據傳輸前建立連接的工作要經過“三次握手”,數據傳輸后斷開連接的工作要經過“四次揮手”。
工作過程

從圖上可以得出6個標志位,分別是:
1)、SYN(synchronous):建立聯機;
2)、ACK(acknowledgement):確認;
3)、PSH(push):傳輸;
4)、FIN(finish):結束;
5)、RST(reset):重置;
6)、URG(urgent):緊急。

三次握手:

(1)、第一次握手:Client將標志位SYN置為1,并將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認;
(2)、第二次握手:Server收到數據包后由標志位SYN=1知道Client請求建立連接,Server將標志位SYN和ACK都置為1,并將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態;
(3)、第三次握手:Client收到確認后,檢查ACK是否為1,如果正確則將標志位ACK置為1,并將該數據包發送給Server,Server檢查ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨后Client與Server之間可以開始傳輸數據了。

附加(SYN網絡攻擊)

原理:?在三次握手過程中,Server發送SYN-ACK之后,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處于SYN_RCVD狀態,當收到ACK后,Server轉入ESTABLISHED狀態。SYN攻擊就是Client在短時間內偽造大量不存在的IP地址,并向Server不斷地發送SYN包,Server回復確認包,并等待Client的確認,由于源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間占用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網絡堵塞甚至系統癱瘓。

檢測:?SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態且源IP地址是隨機的,則可以斷定遭到SYN攻擊了。windows下打開cmd,輸入命令:”netstat -n -p TCP“,查看是否有大量的”SYN_RECEIVED“狀態。

四次揮手:

(1)、第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態;
(2)、第二次揮手:Server收到FIN后,發送一個ACK給Client,Server進入CLOSE_WAIT狀態;
(3)、第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態;
(4)、第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,Server進入CLOSED狀態。

原文來自:https://my.oschina.net/powerli/blog/2250432

本文地址:http://www.52437949.com/%e7%90%86%e8%a7%a3%e4%b8%89%e6%ac%a1%e6%8f%a1%e6%89%8b%e5%92%8c%e5%9b%9b%e6%ac%a1%e6%8c%a5%e6%89%8b.html編輯:郝大發,審核員:逄增寶