社区
网络编程 帖子详情 ICMP 包 长度??? okmnji79513 2009-05-20 02:17:48
typedef struct _ICMPHeader
{
UCHAR type;
UCHAR code;
USHORT checksum;
USHORT id;
USHORT sequence;
ULONG timestamp;
} ICMPHeader, *PICMPHeader;
如上 该结构 长度 sizeof(ICMPHeader) 应该是12. 但是 我用 SoftPerfect 抓到的 系统ping包 中 ICMP头只有 8个char长 ,后面就是Data:"abcdefghijklmnopqrstuvwabcdefghi"了。
这是为何???是因为 不同系统的 _ICMPHeader结构体 不同??? 还是_ICMPHeader就没有timestamp???
...全文
996 7 打赏 收藏 ICMP 包 长度??? typedef struct _ICMPHeader { UCHAR type; UCHAR code; USHORT checksum; USHORT id; USHORT sequence; ULONG timestamp; } ICMPHeader, *PICMPHeader; 如上 该结构 长度 sizeof(ICMPHeader) 应该是12. 但是 我用 SoftPerfect 抓到的 系统ping包 中 ICMP头只有 8个char长 ,后面就是Data:"abcdefghijk 复制链接
扫一扫 分享 转发到动态 举报 AI 作业
写回复 配置赞助广告取 消
确 定
用AI写文章 7 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 okmnji79513 2009-05-21 打赏举报 回复 谢谢 指导 binarydaemon 2009-05-20 打赏举报 回复 PING的实现原理是发送ICMP回显请求消息,对方回复ICMP回显应答消息。
请看RFC 792 定义的 Echo or Echo Reply Message(见图)
看见了吧,没有时间戳(Timestamp )这个域。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-
光宇广贞 2009-05-20 打赏举报 回复 ULONG timestamp;
称为可选数据部分……
所以一般情况下可能不存在这个域,这个域仅存在于理论中……
楼主很细心。 biweilun 2009-05-20 打赏举报 回复 当这个结构体在传输中标准了,那么就是12了。至于那个标准的时候是啥时候,我也不清楚,没遇到过。所以,我们一直活在不标准中 biweilun 2009-05-20 打赏举报 回复
typedef struct _ihdr
{
BYTE i_type;
BYTE i_code; /* type sub code */
USHORT i_cksum;
USHORT i_id;
USHORT i_seq;
/* This is not the std header, but we reserve space for time */
ULONG timestamp;
} IcmpHeader;
一般是8,timestamp保留。一般都是不标准的,(*^__^*) …… Wind_Runner 2009-05-20 打赏举报 回复 应该不至于每个系统的结构不一样,这在RFC应该定义过的,
又或者是你抓的包已经是被处理过的,例如被下层的模块处理过的?
okmnji79513 2009-05-20 打赏举报 回复 是我问题太白痴了,还是 没人知道? ICMP 与 MTU、最小数据长度 最大传输单元(MTU):指由IP包头和数据部分组成的IP数据包长度。
常见的 MTU 设置为 1500。所以ICMP负载长度最大值为
MTU(1500字节) - IP首部长度(20字节)-ICMP首部长度(8字节) = 1472 字节
当ICMP负载长度超过1472字节,ICMP 负载会被分片。如下图所示:
其中,帧354的大小为1480字节,等于ICMP最大负载长度(1472字节) + ICMP首部长度(8字节)
对应的数据帧:
帧354的长度1514 =以太网帧首部(14字节) +. ICMP协议 ICMP
*本文实验都是通过Cisco模拟器完成
主要功能:确认IP包是否成功送达目的地址;通知IP包在发送过程中被废弃的具体原因
协议号:1
长度:8字节(前4字节是固定的)
ICMP技术网络设备都配合,网络排错好帮手
类型:查询报文、差错报文
差错报文:
思科:排查时出现U—>debug ip icmp
若是host unreachable主机不可达,大概率路由问题
若是administratively prohibited unreachable,访问控制列表干掉
排查时出 网络层协议 ip 和 icmp协议 以太网能运送的长度是46-1500 字节 (以太网帧 目的mac 6字节,源mac6字节,协议长度2字节,数据字段长度46-1500字节 校验字段4字节 ,所以以太网帧的长度范围64-1518个字节 最大传输单元MTU (即最大数据字段)是1500) 因此如果笔1500大的 网络报文需要分分片。头部长IHL(4位) 最小值是5 最大值15 单位是4字节,所以ip报文头部最小长度4*5 20字节,最大是4*15 =60字节 ,基本ip头部长20字节,可以扩展至60字节。qos就是基于这个字段。 windows和linux的icmp包,linux和windows下icmp的区别 实验方式:先从linux虚拟机ping windows主机,然后从windows主机ping linux虚拟机,在pc上采用wireshark抓包。如下(只保留了关键信息) 可以看到linux发出的ICMP请求和window下是有所区别的,linux下默认大小是98字节,windows下是74字节。但是两者都会响应和ICMP请求相同大小的ICMP回显。并且可以看到,对方发什么数据,回显就原样返回什... ICMP协议及其抓包分析 ICMP协议及其抓包分析
Internet消息控制协议(ICMP)指定了多种消息类型,其目的就是管理网络。
ICMP的消息分为错误信息、请求信息和响应消息。
一般ICMP数据包格式
ICMP数据包类型字段和代码字段
wireshark抓包分析
数据链路层
网络层
1.响应请求
ping命令:响应请求(Type= 8)和应答请求(Type = 0)
2.时间戳:
时间戳请求报文(Type= 13)时间戳应答报文(Type= 14)用来测试两台主机之间数据包来回一次的传输时间。
3个重要类型:
路由通
网络编程
18,363
社区成员
64,187
社区内容
发帖 与我相关 我的任务 网络编程 VC/MFC 网络编程 复制链接
扫一扫 分享 确定 社区描述 VC/MFC 网络编程 c++c语言开发语言 技术论坛(原bbs) 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章