- 4
- 0
- 约1.06万字
- 约 11页
- 2018-09-09 发布于江苏
- 举报
大部分人用png命令只是作为查看另一个系统的网络连接是否
大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。 ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。 例如,在Linux终端上执行ping localhost命令将会看到以下结果: PING localhost.localdomain () from : 56(84) bytes of data. 64 bytes from localhost.localdomain (): icmp_seq=0 ttl=255 time=112 usec 64 bytes from localhost.localdomain (): icmp_seq=1 ttl=255 time=79 usec 64 bytes from localhost.localdomain (): icmp_seq=2 ttl=255 time=78 usec 64 bytes from localhost.localdomain (): icmp_seq=3 ttl=255 time=82 usec --- localhost.localdomain ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.078/0.087/0.112/0.018 ms 由上面的执行结果可以看到,ping命令执行后显示出被测试系统主机名和相应IP地址、返回给当前主机的ICMP报文顺序号、ttl生存时间和往返时间rtt(单位是毫秒,即千分之一秒)。要写一个模拟ping命令,这些信息有启示作用。 要真正了解ping命令实现原理,就要了解ping命令所使用到的TCP/IP协议。 ICMP(Internet Control Message,网际控制报文协议)是为网关和目标主机而提供的一种差错控制机制,使它们在遇到差错时能把错误报告给报文源发方。ICMP协议是IP层的一个协议,但是由于差错报告在发送给报文源发方时可能也要经过若干子网,因此牵涉到路由选择等问题,所以ICMP报文需通过IP协议来发送。ICMP数据报的数据发送前需要两级封装:首先添加ICMP报头形成ICMP报文,再添加IP报头形成IP数据报。如下图所示 IP报头 ICMP报头 ICMP数据报 IP报头格式 由于IP层协议是一种点对点的协议,而非端对端的协议,它提供无连接的数据报服务,没有端口的概念,因此很少使用bind()和connect()函数,若有使用也只是用于设置IP地址。发送数据使用sendto()函数,接收数据使用recvfrom()函数。IP报头格式如下图: 在Linux中,IP报头格式数据结构( )定义如下: struct ip { #if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int ip_hl:4; /* header length */ unsigned int ip_v:4; /* version */ #endif #if __BYTE_ORDER == __BIG_ENDIAN unsigned int ip_v:4; /* version */ unsigned int ip_hl:4; /* header length */ #endif u_int8_t ip_tos; /* type of service */ u_short ip_len; /* total length */ u_short ip_id; /* identification */ u_short ip_off; /* fragment offset field */ #define IP_RF 0x8000 /* reserved fragment flag */ #define IP_DF 0x4000 /* dont fragment flag */ #define IP_MF 0x2000 /* more fragments flag */ #define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ u_int8_t ip_ttl; /* time to live */
您可能关注的文档
- 在市政府廉政作会议上的讲话.doc
- 在学习混合运算之前,学生已经接触过100以内地两步连加、.doc
- 在我们呱呱坠地的时候,为我们的名字苦思冥想,希望将美.ppt
- 在政府十六届六次全体(扩大)会议上的.doc
- 在法律允许的围内本公司保留对本活动的最终解释权和.doc
- 在省部级主要领导干部提高构建社会主义与谐社会能力专题研.doc
- 在空中某点将三个相同小球以相同的速率v分别水平抛出.doc
- 在西安建设节约型城启动仪式上的讲话.doc
- 在过去的小学阅读教学中,我们1直以为语文课主要靠语言.doc
- 在这一章里我要对于域作一些进一步的讨论.我们不准备证明.ppt
- GB/T 22200.1-2025低压电器可靠性 第1部分:通则.pdf
- 中国国家标准 GB/T 9364.5-2025小型熔断器 第5部分:小型熔断体质量评定导则.pdf
- GB/T 9364.5-2025小型熔断器 第5部分:小型熔断体质量评定导则.pdf
- 中国国家标准 GB/T 22200.1-2025低压电器可靠性 第1部分:通则.pdf
- 《GB/T 22200.1-2025低压电器可靠性 第1部分:通则》.pdf
- 2026年及未来5年市场数据中国卷烟行业竞争状况及投资发展前景分析报告.docx
- 2026年及未来5年市场数据中国咖啡机行业市场运营态势与投资潜力咨询报告(定制版).docx
- 2026年及未来5年市场数据中国咖啡连锁产业深度调研与投资决策咨询报告.docx
- 2026年及未来5年市场数据中国精氨酸行业市场深度调研及发展趋势与投资前景研究报告.docx
- 2026年及未来5年市场数据中国精细化工市场运行格局及投资战略研究报告.docx
最近下载
- 2017奔驰GLE中文说明书.pdf
- (高清版)DB32∕T 2947-2016 长江水下平顺抛石护岸施工规范 .pdf VIP
- 2025年度民主生活会个人对照检查材料模板.pdf VIP
- 三羧酸循环的代谢物与肿瘤发生相关性的研究进展.pptx
- 软件著作权转让合同模板下载.docx
- 2026陕西咸阳市长武县经发集团有限公司招聘12人考试笔试备考试题及答案解析.docx VIP
- 2.3 中国的河流 第二课时 教学设计2025八年级地理上学期湘教版.pdf
- 河南省郑州市2023-2024学年高一上学期期末考试 生物含答案.docx VIP
- 企业技术中心建设方案.docx VIP
- 中国的气候第二课时课件-2025-2026学年八年级地理上学期(湘教版2024).pptx VIP
原创力文档

文档评论(0)