# TCP三次握手
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據。
# 端口掃描類型
## TCP connect掃描
全鏈接掃描,此掃描與每一個TCP端口進行3次握手通訊。成功創建鏈接,則證實端口開放,不然爲關閉。準確度很高,可是容易被防火牆和IDS檢測到,而且在目標主機日誌會有記錄。
## TCP SYN掃描
端口開放:client發送SYN,server端回覆SYN/ACK,client發送RST斷開
端口關閉:client發送SYN,server端回覆RST
## 祕密掃描
祕密掃描是一種不被審計工具所檢測的掃描技術。它一般用於在經過普通的防火牆或路由器的篩選時隱藏本身。祕密掃描能躲避IDS、防火牆、包過濾器和日誌審計,從而獲取目標端口的開放或關閉的信息。因爲沒有包含TCP3次協議的任何部分,因此沒法被記錄下來,比半鏈接掃描更爲隱藏。可是這種掃描的缺點是掃描結果的不可靠性會增長,並且掃描主機也須要本身構造IP包。
TCP FIN掃描
端口開放:client發送FIN,server沒有響應
端口關閉:client發送FIN,server回覆RST
TCP ACK掃描
端口開放:client發送ACK,server回覆RST數據包TTL<=64
端口關閉:client發送ACK,server回得RST數據包TTL>64
NULL掃描
端口開放:client發送NULL,server沒有響應
端口關閉:client發送NULL,server回覆RST
TCP XMAS掃描
端口開放:client發送USG/PSH/FIN,server沒有響應
端口關閉:client發送USG/PSH/FIN,server回覆RST
SYN/ACK掃描
## 其餘掃描
UDP掃描
IP頭信息dump掃描
IP分段掃描
慢速掃描
亂序掃描
## TCP FLAGS
SYN(synchronous創建聯機) SYN表示創建鏈接
FIN(finish結束) FIN表示關閉鏈接
ACK(acknowledgement 確認) ACK表示響應
PSH(push傳送) PSH表示有DATA數據傳輸
RST(reset重置) RST表示鏈接重置
URG(urgent緊急)
Sequence number(順序號碼)
Acknowledge number(確認號碼)
當FIN以後出現RST=1時,表示的是鏈接重置
當出現FIN包或RST包時,咱們便認爲客戶端與服務器端斷開了鏈接
當出現SYN和SYN+ACK包時,咱們認爲客戶端與服務器創建了一個鏈接
當出現SYN=ACK=1時,表示的就是創建鏈接以後的響應
當出現PSH=1時,表示的是有真正的TCP數據包內容被傳遞
SYN與FIN是不會同時爲1的,由於SYN表示創建鏈接,而FIN表示斷開鏈接