TCP/IP中端口建立连接的原则
在TCP/IP协议中,TCP协议提供可靠连接,采用三次握手建立连接,四次挥手断开连接。
三次握手
- client发送SNY,请求建立连接
- server收到SNY,发送ACK确认,同时自己也发送一个SNY,即ACK+SYN
- client收到ACK+SYN,回复ACK,连接建立完成。
四次挥手
- client发送FIN,请求释放连接
- server收到FIN,发送ACK
- server发送FIN,告知释放连接
- client收到FIN,发送ACK
TCP/IP实现遵循原则
- 发送SYN,LISTEN端口回复ACK,CLOSED端口回复RST
- 发送RST会被直接丢弃
- 发送ACK给LISTEN端口,回复RST
- 发送FIN,LISTEN端口丢弃,CLOSED端口回复RST
全连接扫描(TCP connect scan)
1. 发送SYN
2. 回复ACK则是LISTEN,回复RST则CLOSED
3. 回复ACK
特点:容易被察觉
nmap -sT
半开放SYN扫描(TCP SYN scan)
发送SYN
1. 回复ACK+SYN 则LISTEN
2. 回复RST 则CLOSED
3. 不回复 则过滤了
特点:
1. 应用程序没有日志
2. 容易被发现
nmap -sS
隐蔽扫描
ACK扫描
发送ACK
1. LISTEN端口回复RST
2. CLOSED端口丢弃
nmap -sA
FIN扫描
发送FIN
1. LISTEN端口丢弃
2. CLOSED端口回复RST
特点:扫描效率低,需要等待超时
nmap -sF
TCP Xmas扫描(圣诞树)
发送FIN+URG+PSH(原理同FIN)
1. LISTEN端口丢弃
2. CLOSED端口回复RST
特点:扫描效率低,需要等待超时,不能适用所有系统
nmap -sX
TCP NULL扫描
发送NULL(原理同FIN)
1. LISTEN端口丢弃
2. CLOSED端口回复RST
特点:扫描效率低,需要等待超时,不能适用所有系统
nmap -sN
UDP扫描
发送UDP包
返回ICMP_PORT_UNREACH为关闭,否则打开
特点:
1. 不可靠
2. 目标可以禁止UDP
nmap -sU