網絡中一共有65536個端口(0-65535),端口是供數據進出網絡設備的,也是計算機與外界通訊的出口。
網絡中不少程序須要進行網絡通訊,而信息實際上都須要經過網卡出入,如何區分出入信息是哪一個程序使用的呢,這個就由操做系統處理,而它採用的機制就是劃分出65536個端口,程序在發送的信息中加入端口編號,而操做系統在接收到信息後會按照端口號將信息分流到當前內存中使用該端口號的程序。數據庫
根據端口使用狀況的不一樣,能夠簡單的將端口分爲三類:安全
公認端口:這一類端口是咱們經常使用的端口。端口編號0-1024的端口都是公認端口。一般這些端口已經明確的與某種服務的協議進行了關聯,通常不會進行更改,好比咱們經常使用的80端口(Http)、23端口(Telnet)、22端口(SSH)。網絡
註冊端口:這部分的端口號的範圍是從1025-49151。它們一般也會關聯到一些服務上,可是並無明確的規定,不一樣的程序能夠根據實際狀況進行定義。ide
動態/私有端口:這部分端口號的範圍是從49152-65535。通常來講,常見的服務不該該使用這些端口,全部容易被忽視。測試
此外,咱們根據協議的不一樣,能夠分爲TCP協議端口、UDP協議端口,由於這兩個都屬於傳輸層的協議,爲通訊的雙方提供端到端的服務。操作系統
Nmap中對端口給出了6種不一樣的狀態:日誌
open:若是目標端口的狀態處於open,則說明該端口有應用程序接受TCP鏈接或UDP報文。code
closed:若是目標端口的狀態處於close,這裏不徹底意味沒有任何反應,狀態爲close的端口是可訪問的,這種端口能夠接受Nmap的探測報文並作出響應。blog
filtered:產生這種狀態主要緣由是由於存網絡數據包過濾,致使Nmap沒法肯定該端口是否開放dns
unfiltered:這種結果不多見,它代表目標端口是能夠訪問的,可是Nmap卻沒法判斷它究竟是開放仍是關閉,一般在ACK掃描時會出現這種情況。
open | filtered:沒法肯定端口是開放的仍是被過濾了。
closed | filtered:沒法肯定端口是關閉的仍是被過濾了。
Nmap中提供了大量的技術來實現對端口狀態的檢測,因爲TCP技術相對於UDP技術要複雜一些,因此TCP的檢測手段比UDP要多一些。
SYN掃描
SYN掃描是最爲流行的一種掃描方式,同時也是Nmap採用的默認掃描方式。這種掃描方式速度快,能夠在一秒鐘掃描上千個端口。
首先Nmap會向目標主機的一個端口發送請求鏈接的SYN數據包,而目標計算機接收到之後會以SYN/ACK應答,Nmap在接收到SYN/ACK後會發送RST包請求斷開鏈接, 而不是ACK應答。這樣三次握手就沒有完成,沒法創建正常的TCP鏈接,所以,(準備劃重點)這次掃描就不會被記錄到系統日誌中。
用TCP SYN掃描時會有如下幾種結果:
|
Connect掃描
Connect掃描方式其實跟SYN掃描很像,只是這種掃描方式完成了TCP的三次握手。
Connect掃描語法以下:
nmap -sT 192.168.126.139
UDP掃描
使用UDP掃描對一個端口進行掃描時有三種結果
目標主機的應答 | 目標端口的狀態 |
---|---|
從目標端口獲得任意的UDP應答 | open |
若是目標主機沒有給出應答 | open filtered |
ICMP端口沒法抵達錯誤(代碼 3) | closed |
ICMP沒法抵達的錯誤(代碼 1 2 9 10 13) | filtered |
UDP的掃描速度相對較慢。語法以下:
nmap -sU 192.168.126.139
......等這個結果確實很慢
這個掃描結果中有不少端口狀態都是filtered,可是這個端口的真實狀態多是open或者closed,咱們要想判斷這些端口究竟是開放仍是關閉的話就須要進一步測試。UDP程序的服務通常不會對Nmap所發的空數據包作出迴應,UDP程序須要使用它們本身的格式。若是保證能向全部常見的UDP服務發送合適的數據包,Nmap須要一個很大的數據庫來儲存這些格式,Nmap將這些格式存放在Nmap-service-probes中。咱們可使用-sV 或 -A 參數,Nmap將會向每一個 open | filtered 端口發送UDP probe,若是目標端口對任何一個probe有了響應,狀態都會被更改成open。
TCP FIN掃描
TCP FIN掃描方法向目標端口發送一個FIN數據包。按照RFC 793的規定,全部關閉的端口,目標系統應該返回RST標誌。
使用TCP FIN掃描端口語法以下:
nmap -sF 192.168.126.139
NULL掃描
TCP NULL掃描方法是向目標端口發送一個不包含任何標誌的數據包。按照RFC 793的規定,對於全部關閉的端口,目標主機應該返回RST標誌。
使用 TCP NULL掃描端口的語法以下:
nmap -sN 192.168.126.139
Xmas Tree掃描
TCP Xmas Tree掃描方法是向目標端口發送一個含有FIN URG 和 PUSH標誌的數據包。按照RFC 793規定,對於關閉的端口,目標系統應該返回RST標誌
使用TCP Xmas Tree掃描端口的語法以下:
nmap -sX 192.168.126.139
nmap -F 192.168.126.139
2.指定掃描某個端口
nmap -p 8080 192.168.126.139 //-p後加指定的端口號
3.使用名字來指定掃描端口
nmap -p dns,http 192.168.126.139 //-p後跟端口名稱,多個端口用逗號隔開
4.使用協議指定掃描端口
nmap -p U:53 , T:22 192.168.126.139 //對UDP的53端口和TCP的22端口進行掃描,目標192.168.126.139
5.掃描全部端口
nmap -p * 192.168.126.139 //慎用
6.掃描經常使用端口
nmap --top-ports 20 192.168.126.139 //對前20個端口進行掃描,數字根據本身需求設置,默認是10個
由於系統查的比較嚴,因此刪減了一部分的文章,還請諒解