📄 icmp.c
字号:
/*********************************************************************
*文件名称: icmp.c
*文件标识:
*摘 要: 测试主机的可达性,其中主要的操作是ping
*
*********************************************************************/
#define ICMP_GLOBALS
#include "net_cfg.h"
/**********************************************************************
**函数原型: void Ping_Request( )
**入口参数: 无
**出口参数: 无
**返 回 值: 无
**说 明: 发送PING请求报文,测试对方主机的可达性
************************************************************************/
void Ping_Request()
{
TxdNetBuff.EtherFrame.DestMacId[0]=Ping_MAC.words[0]; //填充以太网协议目的物理地址字段
TxdNetBuff.EtherFrame.DestMacId[1]=Ping_MAC.words[1];
TxdNetBuff.EtherFrame.DestMacId[2]=Ping_MAC.words[2];
TxdNetBuff.EtherFrame.NextProtocal=0x0800; //以太网协议的下层协议为IP协议
TxdNetBuff.IpFrame.VerandIphLen=0x45; //IP版本和首部长度各占VerandIphLen字段的4位,版本4,占用高4位
//首部长度5*4=20,单位字节
TxdNetBuff.IpFrame.ServerType=0x00; //服务类型,默认为0
TxdNetBuff.IpFrame.TotalLen=60; //IP数据报总长度40字节,其中由总长度
//减去首部长度即可得数据报长度
TxdNetBuff.IpFrame.ttl=0x80; //IP生存时间
TxdNetBuff.IpFrame.FrameIndex=FrameIndex; //帧序号
FrameIndex++; //
TxdNetBuff.IpFrame.Segment=0x0000; //标志及段偏移都为0
TxdNetBuff.IpFrame.NextProtocal=0x0001; //IP的下层协议为ICMP协议:TCP
TxdNetBuff.IpFrame.Crc=0;
TxdNetBuff.IpFrame.DestId[0]=Ping_Ip_Address.words[0]; //填充目的IP地址
TxdNetBuff.IpFrame.DestId[1]=Ping_Ip_Address.words[1];
TxdNetBuff.IpFrame.SourceIp[0]=My_Ip_Address.words[0]; //填充源IP地址
TxdNetBuff.IpFrame.SourceIp[1]=My_Ip_Address.words[1];
TxdNetBuff.IpFrame.Crc=CreateIpHeadCrc(); //产生IP数据报首部检验和,CreateIpHeadCrc()在global.c中定义
TxdNetBuff.IcmpFrame.type=0x08; //表示该ICMP数据帧为PING请求
TxdNetBuff.IcmpFrame.Crc=0;
TxdNetBuff.IcmpFrame.id=0x0300; //标识符
TxdNetBuff.IcmpFrame.seq=FrameIndex; //ICMP报文序号
TxdNetBuff.IcmpFrame.Crc=CreateIcmpCrc(); //产生ICMP报文的校验和,CreatIcmpCrc()在global.c中定义
Send_Packet(&TxdNetBuff,74); //发送数据包
}
//==========================================================
/**********************************************************************
**函数原型: void Ping_Answer( )
**入口参数: 无
**入口参数: 无
**返 回 值:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -