网络中一共有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个
由于系统查的比较严,因此删减了一部分的文章,还请谅解