ICMP协议之ping实现

ICMP协议之ping实现
1. 相关ICMP协议概述
  这⾥只讲解与ping有关的ICMP消息类型,主机发送回送消息(Type = 8),被请求主机回送响应消息(Type = 0),基本格式如下:
  回送消息[ECHO]
  回送响应消息[ECHO REPLY]
   其中·Code = 0,
     ·CheckSum为校验和,重点注意从ICMP的头部(即Type开始),到data结束(即到整个数据包结束),具体计算见下⾯分析共青团中央改革方案
     ·Identifier为标识符,由主机设定,⼀般设置为进程号,回送响应消息与回送消息中identifier保持⼀
     ·Sequence Number为序列号,由主机设定,⼀般设为由0递增的序列,回送响应消息与回送消息中Sequence Number保持   ⼀致
     ·data为数据,由主机设定,回送响应消息与回送消息中data保持⼀致艾纳基美容仪
2. Ping流程
现代汉语语音学>失踪时刻  Ping实际上利⽤的就是ICMP ECHO和ICMP ECHO REPLY包来探测主机是否存在,所以Ping程序的流程⼗分简单:发送ICMP    ECHO包---- > 接收ICMP ECHO REPLY包
  发送ICMP ECHO包时填充Identifier为进程ID, Sequence Number为从0递增计数,data填充为发送时间
  接收ICMP ECHO REPLY包时检查Identifier, Sequence Number是否正确,通过IP报头的源地址字段获得回送报⽂的主机地址是否正确
3. 模拟Ping实现pingy
  Ping的基本流程已讲解完戏迷ok网
  由于要⾃⼰构造ICMP包,因此创建需要创建原始套接字(即需要⾃⼰填充报头):
         sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
  SOCK_RAW⽤于直接访问⽹络层,应⽤程序负责构造⾃⼰的协议⾸部;IPPROTO_ICMP表⽰ICMP报头由程序构造
  构造ICMP报头,注意各个字段的填充,特别是校验和(可以参照icmp的结构定义)
          icmp->icmp_type
          icmp->icmp_code
          icmp->icmp_cksum
          icmp->icmp_id
          icmp->icmp_seq
          icmp ->icmp_data;
  ⽽完成系统的Ping命令还需添加信息统计,如发送字节数,收到字节数,发送包,接收包,发送时间,TTL等;另外,添加信号处理,在⽤户使⽤Control^C等退出时打印即时信息
4. 具体代码见附件
5. 最终效果如下
明星合成6p

本文发布于:2024-09-21 21:52:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/530075.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:消息   回送   发送   响应   填充   程序   报头   构造
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议