标题:网络编程之ICMP-ping实现
只看楼主
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
结帖率:100%
 问题点数:0 回复次数:0 
网络编程之ICMP-ping实现
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

也许大家对这个神马协议很陌生,咦?这是神马东东?但是如果说起DOS外部命令ping,相信接触过DOS的朋友就比较熟悉了,ping常用于测试两台电脑网络通不通,如
这个ping的过程其实就是ICMP工作过程。
好了,有源码有真相,我们边看实现边看说明:
首先,我们需要定义ICMP报文头
typedef struct _ICMPHeader
{
  UCHAR   icmp_type;
  UCHAR   icmp_code;
  USHORT  icmp_checksum;
  //---------信息
  USHORT  icmp_id;
  USHORT  icmp_sequence;
  ULONG   icmp_timestamp;
}ICMPHeader,*PICMPHeader;
icmp_type 8位报文类型
icmp_code 8位报文代码
icmp_checksum 16位验证和 验证包数据是否丢失
回显信息,由上面类型和代码决定
icmp_id 16位报文ID标示,比如发出一个包,目标机响应一个包,这时我们可以通过对比ID查看是否是响应我们的包
icmp_sequence 16位序列号 我们按序列发出包 当然也按序列接包 这样也可以查看网络通畅程度
icmp_timestamp 16位时间戳 发包收包之间的时间差
下面是具体实现:
http://blog.
搜索更多相关主题的帖子: Internet 路由器 IP协议 神马 
2011-04-03 20:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-335584-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075663 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved