# 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表示斷開連接
