ICMP 包 长度???

ICMP 包 长度???

社区

网络编程 帖子详情 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写文章

相关推荐