关于MSDN里的例子:ping.c
源代码有点长,MSDN里有
有几个问题:
1.例子里是先构造了一个ICMP包,发送出去后,用recvfrom接收,为什么接受的数据包含有了IP题头呢?而发送的ICMP包为什么只有ICMP题头?
2.利用代码GetTickCount()-icmphdr->timestamp能计算出大概时间吗?icmphdr->timestamp的值是接受数据包的timestamp呀,这样相减的结果好像不是数据传送所需的时间呀?莫非接受数据包的icmphdr->timestamp值和发送数据包的icmphdr->timestamp值相同?
3.发送的ICMP包的题头的i_id好像没有赋值呀?
4.是不是只要发送ICMP包的type值是ICMP_ECHO,那么目的主机收到这种数据包后就会自动回复一个ICMP_ECHOREPLY 类型的数据包呀?如果不是ICMP_ECHO类型,目的主机就不会自动回复数据包啦?
问题有点多,不过实在迷茫,谁知道帮帮我呀,回答一点也行....先谢谢了.
源代码有点长,MSDN里有
有几个问题:
1.例子里是先构造了一个ICMP包,发送出去后,用recvfrom接收,为什么接受的数据包含有了IP题头呢?而发送的ICMP包为什么只有ICMP题头?
2.利用代码GetTickCount()-icmphdr->timestamp能计算出大概时间吗?icmphdr->timestamp的值是接受数据包的timestamp呀,这样相减的结果好像不是数据传送所需的时间呀?莫非接受数据包的icmphdr->timestamp值和发送数据包的icmphdr->timestamp值相同?
3.发送的ICMP包的题头的i_id好像没有赋值呀?
4.是不是只要发送ICMP包的type值是ICMP_ECHO,那么目的主机收到这种数据包后就会自动回复一个ICMP_ECHOREPLY 类型的数据包呀?如果不是ICMP_ECHO类型,目的主机就不会自动回复数据包啦?
问题有点多,不过实在迷茫,谁知道帮帮我呀,回答一点也行....先谢谢了.
解决方案 »
- MFC按钮滑动效果
- 静态常量赋初值 怎么改
- 问下,关于对浏览器默认主页的修改的几个问题。
- 大用户量,TCP的无系统缓冲区
- windows窗体问题
- 把一个对话框模板注册成一个窗口类,怎么实现?
- 谁有好用的测试网络带宽(也就是测试一下本机到指定机器之间的上行 下行数据流量的类)高分求购
- ====请插件高手帮忙-==============================
- 请问大家,GetMessage()和PeekMessage()的一个不同:是不是前者会将消息队列的消息取走(相当是文件的移动)而PeekMessage()只是取走消息
- 为什么我的工程每次都要重新编译??
- ActiveX控件,郁闷,为什么我的VC里面没有Micorsoft FlexGrid Control
- CAsyncSocket类中Connect与OnConnect的问题
所以每一层有每一层的协议
这个忘记了。肯定需要标志符。4.是不是只要发送ICMP包的type值是ICMP_ECHO,那么目的主机收到这种数据包后就会自动回复一个ICMP_ECHOREPLY 类型的数据包呀?如果不是ICMP_ECHO类型,目的主机就不会自动回复数据包啦?
这个需要你自己查看下ICMP的代码表