C语言两个字节表示端口计算,计算机网络课程设计_基于ICMPTCP的网段端口扫描_C语言编写.doc...

课 程 设 计 任 务 书

【设计目的】

加深对TCP/IP协议的理解,熟悉Socket编程

【设计任务】

实现一个扫描器,必须能够完成以下所有功能:使用TCP connect、TCP SYN和TCP FIN进行端口扫描,使用ICMP echo 扫描实现IP扫描。并把结果记录下来。

【设计要求】

Windows或Linux环境下,程序在单机上运行。

演示:使用端口扫描对一台主机进行扫描,并显示结果(一台主机上有哪些端口是打开的)。对一个网段进行IP扫描,显示结果(一个网段内有哪些主机是开机的)。

友好的用户界面

【设计要求】

程序源代码,必须有详细的注释。

项目设计报告。

网段和端口扫描程序

一、 概述1

1.1端口扫描1

1.2端口扫描常用技术简介2

1.2.1 connect()扫描2

1.2.2 SYN扫描3

1.2.3 XMAS-TREE扫描3

1.3网段扫描4

二、需求分析5

2.1 设计功能5

2.2 设计要求5

三、概要设计5

3.1设计概念和处理流程5

3.2 结构设计7

3.2.1 数据结构及定义7

3.2.2 接口函数8

四、细设设计9

4.1 实现原理9

4.1.1 connect()函数端口扫描的原理9

4.1.2 ICMP网段扫描的原理11

4.2 函数实现14

4.2.1 初始化winsock动态链接库14

4.2.3地址解析15

4.2.4 计算检验和15

4.2.5 网段扫描16

4.2.6 端口扫描17

五、 总结与体会19

5.19

5.2 体会20

六、 参考文献21

6.1 参考书目21

6.2 引用网址21

3.1设计概念和处理流程

程序使用Windows Sockets API编程,利用winsock2库函数提供的函数实现与主机间的连接,发送ICMP报文。详见Winsock Referen:/en-us/library/windows/desktop/ms741416(v=vs.85).aspx

用户首先选择要使用的功能,程序共有两大功能:端口扫描和IP网段扫描。端口扫描的主要功能有,根据用户输入的主机名或IP地址以及端口范围进行connect()扫描。当用户输入完必要的信息并击确认后,程序进行扫描,不过不建议端口区间过于庞大,等待一段时间后用户界面会显示所指定IP地址主机的端口使用情况,哪些端口是打开的,哪些是关闭的。IP网段扫描的主要功能有,用户输入某个网段起始IP地址和结束IP地址,确认后,程序根据所输入的网段号,对网段类的每一个IP地址发送ICMP请求回显报文,如果主机处于开机状态那么将会回送回答报文;如果主机不可达(在同一个网内),则就能够判断该IP所对应的主机处于关机状态。当用户选择退出功能时,释放资源,程序关闭。

程序流程图

3.2 结构设计

3.2.1 数据结构及定义

所使用的宏定义,

#define ICMP_ECHO_REQUEST_TYPE 8 //ICMP请求类型

#define ICMP_ECHO_REQUEST_CODE 0 //ICMP请求代码

#define ICMP_ECHO_REPLY_TYPE 0

#define ICMP_ECHO_REPLY_CODE 0

#define ICMP_MINIMUM_HEADER 8

IP数据报首部,首部固定20字节,数据结构定义如下:

typedef struct ip_hdr

{

unsigned char iphVerLen; // 版本号和头长度(各占4位)

unsigned char ipTOS; // 服务类型

unsigned short ipLength; // 封包总长度,即整个IP报的长度

unsigned short ipID; // 封包标识,惟一标识发送的每一个数据报

unsigned short ipFlags; // 标志

unsigned char ipTTL; // 生存时间,就是TTL

unsigned char ipProtocol; // 协议,可能是TCP、UDP、ICMP等

unsigned short ipChecksum; // 校验和

unsigned long ipSource; // 源IP地址

unsigned long ipDestinatio

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值