- 3
- 0
- 约4.98千字
- 约 8页
- 2019-03-17 发布于湖北
- 举报
ICMP原理与代码及分析
专业:
班级:
学号:
姓名:
ICMP协议简介
ICMP全称Internet Control Message Protocol,中文名为因特网控制报文协议。它工作在OSI的网络层,向数据通讯中的源主机报告错误。ICMP可以实现故障隔离和故障恢复。网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。网络层的IP协议是一个无连接的协议,它不会处理网络层传输中的故障,而位于网络层的ICMP协议却恰好弥补了IP的缺限,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈。ICMP的报头长8字节,结构如图1所示。
比特0 7 8 15 16 比特31
类型(0或8)
代码(0)
检验和
首部其余部分(未使用)
数据
(图1 ICMP报头结构)
类型:标识生成的错误报文,它是ICMP报文中的第一个字段;
代码:进一步地限定生成ICMP报文。该字段用来查找产生错误的原因;
校验和:存储了ICMP所使用的校验和值。
未使用:保留字段,供将来使用,起值设为0
数据:包含了所有接受到的数据报的IP报头。还包含IP数据报中前8个字节的数据;
ICMP协议提供的诊断报文类型如表1所示。
种类
类型
描述
差错报文
3
目的端不可达
4
源点抑制
11
超时
12
参数问题
5
改变路由
查询报文
8或0
回显请求或应答
13或14
时间戳请求或应答
17或18
地址掩码请求或应答
10或9
路由询问和通告
(表1 ICMP诊断报文类型)
ICMP提供多种类型的消息为源端节点提供网络层的故障信息反馈,它的报文类型可以归纳为以下5个大类:
诊断报文(类型8,代码0;类型0,代码0);
目的不可达报文(类型3,代码0-15);
重定向报文(类型5,代码0-4);
超时报文(类型11,代码0-1);
信息报文(类型12-18)。
二、编程实现发送ICMP协议数据包
代码功能:实现发送ICMP协议数据包,从而实现DOS下ping命令功能。
1.代码简要分析
代码执行步骤:
创建协议类型为IPPROTO_ICMP的原始套接字,设置套接字的属性。
创建并初始化ICMP封包。
调用sendto函数向远程主机发送ICMP的请求。
调用recvfrom函数接受ICMP响应。
初始化ICMP头时先初始化消息的类型和代码域,之后应该是回显请求头。程序首先定义了ICMP头的数据结构ICMP_HDR。
typedef struct icmp_hdr
{
unsigned char icmp_type; // 消息类型
unsigned char icmp_code; // 代码
unsigned short icmp_checksum; // 校验和
// 下面是回显头
unsigned short icmp_id; // 用来惟一标识此请求的ID号,通常设置为进程ID
unsigned short icmp_sequence; // 序列号
unsigned long icmp_timestamp; // 时间戳
} ICMP_HDR, *PICMP_HDR;
2.完整代码及解析
#include ../common/initsock.h
#include ../common/protoinfo.h
#include ../common/comm.h
#include stdio.h
CInitSock theSock;
typedef struct icmp_hdr
{
unsigned char icmp_type; // 消息类型
unsigned char icmp_code; // 代码
unsigned short icmp_checksum; // 校验和
// 下面是回显头
unsigned short icmp_id; // 用来惟一标识此请求的ID号,通常设置为进程ID
unsigned short icmp_sequence; // 序列号
unsigned long icmp_timestamp; // 时间戳
} ICMP_HDR, *PICMP_HDR;
int main()
{
// 目的IP地址,即要Ping的IP地址
char szDestIp[] = 192.168.1.104; // 127.0.0.1
// 创建原始套节字
SOCKET sRaw = ::socket(AF_INET, SOCK_RAW, IPPRO
您可能关注的文档
最近下载
- 福彩3D历史数据EXCEL自动更新.pptx VIP
- CQVL系列电动推杆.pdf VIP
- 线控器 使用安装说明书 适用型号:KJR-90WBK.pdf VIP
- 基于PLC的自动化仓储控制系统的设计.doc VIP
- 电动推杆市场分析报告.docx
- 深度解析(2026)《QCT 79.1-2008道路车辆 牵引车和挂车之间气制动连接用螺旋管总成 第1部分:尺寸》.pptx VIP
- 中小学生端午节假期安全教育主题班会PPT课件.pptx VIP
- 机器人等级考试三四级资料-第01课:初识Mixly和Fduino UNO.pptx VIP
- FULING富凌H200空压机中文说明书说明书用户手册.pdf
- Praat语音软件操作手册.docx VIP
原创力文档

文档评论(0)