理解三次握手和四次揮手

TCP(Transmission Control Protocol)網絡傳輸控制協議,是一種面向鏈接的、可靠的、基於字節流的傳輸層通訊協議,數據傳輸前創建鏈接的工做要通過「三次握手」,數據傳輸後斷開鏈接的工做要通過「四次揮手」。

工做過程linux

理解三次握手和四次揮手理解三次握手和四次揮手

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

三次握手:網絡

(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之間能夠開始傳輸數據了。blog

附加(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請求由於隊列滿而被丟棄,從而引發網絡堵塞甚至系統癱瘓。get

檢測: SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式很是簡單,即當Server上有大量半鏈接狀態且源IP地址是隨機的,則能夠判定遭到SYN攻擊了。windows下打開cmd,輸入命令:」netstat -n -p TCP「,查看是否有大量的」SYN_RECEIVED「狀態。cmd

四次揮手:io

(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狀態。table

相關文章
相關標籤/搜索