> For the complete documentation index, see [llms.txt](https://xu-an.gitbook.io/sec/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xu-an.gitbook.io/sec/ab/wcan.md).

# 网络扫描

## 一、绪论

### 1、网络安全的概念

本质：是网络上的信息安全和服务安全

广义：凡是涉及网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。

涉及技术与学科：计算机技术、网络技术、通信技术等；信息论、密码学、数论等

### 2、网络扫描的概念

概念：根据对方**服务**所采用的协议，在一定时间内，通过自身系统对对方协议进行特定读取、猜想验证、恶意破坏，并将对方直接或间接的返回数据作为某指标的判断依据的一种行为。

其中，服务与端口描述如下：

**服务**指“某主机按预先定义的协议和一些国际标准、行业标准，向其他主机提供某种数据的支持，并且称服务提供者为“服务器”（Server），称服务请求者为“客户端”（Client）。

1. 一台主机可以安装多个服务，这些服务可以是相同的服务，也可以是不同的服务
2. 每一个服务对应于一个或多个端口
3. 端口具有独占性，一旦有服务占用了某个端口，则通常情况下，另外的服务不能再占用这个端口。

关于端口：

1. 端口名称用一个2字节（16位）的无符号整数来表示，范围为：0～65535，共65536个
2. 端口名称在0到1023之间的端口习惯上称为“熟知端口”，主要用于一些公用的并得到国际组织IANA公认的服务
3. 端口名称在1024至49151之间的端口称为“登记端口”，主要用于服务类，而又不属于熟知端口的程序使用
4. 端口名称在49152至65535之间的端口称为“临时端口”，是指任何程序都可以临时使用的端口

![](/files/-MHu5s0QmtNINw0ofz_A)

端口的分类：

1. 计算机连接其他的外部设备的外部物理接口，如RJ-45等
2. 计算机上的RS232/RS482接口
3. 逻辑上的端口，是专指通过RJ-45以太网网口连接以后，利用协议进行区分的逻辑上的一个值

此处所指的端口，就是逻辑值

端口的开关：

**开**：表示有对应的服务程序通过该端口向外界提供相应服务，只要外界使用满足这一端口的协议访问该端口，就可以得到相应的服务

**关**：表示对应的服务程序没有安装或当前没有处于运行状态，即使在客户端运行相应访问请求的程序，仍无法得到结果

扫描的应用方式有：

1. 服务扫描
2. 端口扫描
3. 批量扫描

### 3、网络扫描原理概述

端口扫描：对所有熟知端口或自己选定的某个范围内的熟知端口分别建立连接，并记录下远端服务器所给予的应答，通过查看记录就可以知道目标服务器上都安装了哪些服务

![TCP/UDP扫描示意](/files/-MHuALL-HVxD9HU0i5eN)

### 4、扫描编程与客户端编程的区别

扫描程序的特殊性如下：

1. 扫描程序的开发者则需要通过已有的协议或猜测、试探等方式决定采用什么技术，故扫描程序对服务器端是没有要求的
2. 扫描程序的扫描结果也常具有不可预知性
3. 扫描具有全部或局部的“遍历”性
4. 扫描程序只需要支持和使用所需要的最少的几个命令

### 5、网络扫描的目的

![](/files/-MHuBcLuva1XgBNKwdaN)

### 6、网络扫描的方法

### 7、网络扫描器分类

### 8、网络扫描器技术发展史

### 9、扫描器限制

### 10、当前网络常见漏洞

## 二、网络协议和网络编程例程

### 1、常用的网络编程2、扫描器中公用编程示例3、嵌入外部程序

## 三、TCP/UDP端口扫描器的设计

### 1、端口扫描的概念

![](/files/-MHu6A2nCfrrAY7TEpTd)

更多信息请看[这里](https://xu-an.gitbook.io/sec/1/alwart)

### 2、端口扫描技术3、手工扫描4、编程实例：TCP端口扫描器5、编程实例：UDP端口扫描器

## 四、NETBIOS扫描器设计

### 1、NETBIOS协议的使用2、IP和主机名的互换3、MAC地址的读取4、本地域名，子网掩码，网卡类型的读取5、用户名，共享目录，组列表的读取6、NETBIOS安全性7、编程实例：反“IP欺骗”——MAC地址扫描器的设计8、编程实例：NETBIOS的通用扫描器

## 五、SNMP扫描器设计

### 1、SNMP协议2、SNMP的API3、SNMP安装和验证4、编程实例：SNMP通用读设工具5、基于SNMP的主机扫描器

## 六、ICMP扫描器设计

### 1、ICMP协议简介2、ping与tracert命令简介3、ICMP通信实例分析4、ICMP协议内容5、ICMP扫描的安全性6、编程实例：快速多IP的ICMP扫描器

## 七、基于协议的服务扫描器设计

### 1、WWW服务扫描器2、编程实例：WWW服务扫描器3、FTP服务扫描4、编程实例：FTP服务扫描器5、Telnet服务扫描6、编程实例：Telnet服务扫描器7、Email服务扫描8、编程实例：Email服务扫描器

## 八、基于应用的服务扫描器设计

### 1、Win Inet编程接口2、编程实例：基于应用的WWW服务扫描器3、编程实例：基于应用的FTP扫描器4、网络资源协议5、编程实例：网络资源扫描器

## 九、命名管道扫描器设计

### 1、命名管道2、命名管道API3、命名管道编程示例4、邮槽5、邮槽编程实例6、编程实例：SQL Server命名管道扫描器合计

## 十、服务发现扫描器设计

### 1、服务发现简介2、UPNP协议3、XML协议4、SSDP协议分析实例5、编程实例：服务发现扫描器

## 十一、漏洞扫描器设计

### 1、注入式漏洞扫描器2、主机弱密码扫描器3、DOS/DDOS攻击4、明文密码嗅探5、端口对照

## 十二、扫描防范技术研究

### 1、更换端口2、预留陷阱技术3、基于哨兵的端口扫描检测4、基于嗅探的端口扫描监测及DDOS拒绝服务监测5、实时监测本地所有TCP/UDP连接及端口6、如何关闭端口


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xu-an.gitbook.io/sec/ab/wcan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
