论文部分内容阅读
[摘 要]随着网络的不断发展,网络安全性也越来越受到了人们的重视,而做为网络中应用最多的IP协议,存在着巨大的安全隐患,即传输的不可靠性。ICMP协议的出现及时的弥补了IP协议的这一漏洞,作为TCP/IP协议的重要组成部分,它的主要功能是监测和反馈在IP报文传输过程中出现的差错信息,从而有效的提高数据安全,降低网络瓶颈,同时,它还具有监测和查询网络状况的功能。本文详细介绍了该协议的原理、类型、特点和应用范围。同时,还重点介绍了了基于此协议的最广泛的应用—Ping程序。最后,本文通过各种不同的网络测试,重现了Ping命令的几种不同的返回结果,包括目的不可达、时间超时、TTL参数设置等,并结合自身经验,给出了实验的结果分析。
[关键词]ICMPPINGTCP/IP可靠性
中图分类号:TP393.08 文献标识码:A 文章编号:1009-914X(2015)42-0168-02
一、ICMP协议介绍
ICMP全称为Internet ControlMessage Protocol,翻译为中文即网络控制报文协议,它隶属于TCP/IP协议族群,是其重要组成部分。众所周知,IP协议作为互联网传输的核心协议之一,其主要功能为寻址、分段和路由功能,数据可以依据IP协议通过一个个路由器达到最终的目的主机,但在这一传输过程中,如果发生意外情况,典型如中转路由器当机、网络中断等不可控因素,IP协议并不能提供有效的解决方式,也即是说,IP协议是一个不可靠的网络传输协议。那么,为了解决网络传输的可靠性,ICMP协议也由此产生了。
ICMP协议是为了解决IP协议的缺陷而产生的,它无法作为一个独立的协议单独起作用,它必须依附IP协议而存在,可以说,ICMP是IP协议的一个组成部分。所以,虽然ICMP的作用范围是OSI参考模型中的网络层,但其发送的数据并不能直接送到到下方的数据链路层,而是需要封装成IP数据包才能下达,其对外展现的形式还是IP协议。ICMP协议与其它IP协议的区别在于,如是ICMP协议,那么这个IP包头部的协议字段值固定为1。
二、ICMP协议的类型
由于ICMP协议是IP协议的组成部分,因此一个完整的ICMP报文包括了IP头部、ICMP头部和ICMP数据区,其中数据区显示错误信息及错误数据包的部分数据,而头部则由类型域(Type)和代码域(Code)两部分组成,类型域用于说明ICMP报文的作用及格式,代码域用于详细说明某种ICMP报文的类型。
报文的类型代码详细的区分了问题的不同种类,具体如表2-1所示:
其中,几种常见的报文为:
1、响应请求
我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。
2、目标不可到达、源抑制和超时报文
这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“该端口并不存在”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。
最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。
超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。
3、时间戳
时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。
三、ICMP协议网络测试及分析
为了进一步了解和研究ICMP协议,文本设计了不同的网络环境,实现了ping操作中出现的常见问题和提示,并基于ICMP协议类型给出了其原因分析。
1、网络测试
目的不可达(Destination unreachable)
测试环境:
(1) 测试场景:机器A与机器B处于不同的局域网内,机器A未设置默认路由
(2) 机器配置:
(3) 网络拓扑图如图4-1所示:
(4) 测试过程
机器A向机器B发送Ping命令:ping 192.168.3.122
返回结果如下:
Reply from 192.168.1.200:Destination host unreachable
2、时间超时
测试环境1:
(1) 测试场景:机器A连接一个不存在的机器B
(2) 机器配置:
(3) 测试结果
机器A向一个不存在的机器B发送Ping命令:ping 192.168.1.101
返回结果如下:Reply from 192.168.1.200:Request Time Out 测试环境2:
(1) 测试场景:机器A连接同一个局域网内的机器B,但机器B并未开机
(2) 机器配置:
(3) 网络图如图4-2所示:
(4) 测试结果
机器A向机器B发送Ping命令:ping 192.168.1.129
返回结果如下:Reply from 192.168.1.200:Request Time Out
3、TTL参数测试
TTL 是数据包为了防止数据包在网络中无限制的循环,而设定的网络数据包在网络传输中最大的转发次数。因为每在路由器上转发一次,就会转向下一跳,所以,又通常称为最大跳数。简单来说,当源机器向目标机器发送数据包时,期间会经过一定数量的路由器才能正常达到,如果在传输过程中出现不可靠问题,有可能会导致发送数据包在路由器之间循环传递的死循环,如果放任这种情况不处理,那么在网络中传递的死循环会越积越多,最终造成网络拥塞,影响网络性能。
不同的操作系统的TTL默认值均不一样,在本机中输出Ping 127.0.0.1命令,返回的TTL值便是本机操作系统的TTL默认值,本文在不同的操作系统下进行了测试,结论如下:
四、结果分析
由测试结果可知,Ping命令充分利用了ICMP协议的特点,将其网络监测和查询功能发挥的淋漓尽致,同时其参数易掌握,结果简单明确,也是其普及的一大原因。Ping命令还有多种搭配方式和返回信息值得我们进一步探究,而ICMP,作为网络层的一个基本协议,如何将其功能有效的运用到更多的场合和工具中去,值得我们进一步挖掘和研究。
参考文献
[1] 殷肖川.网络编程与开发技术[M] .西安:西安交通大学出版社, 2003.
[2] 杜新华.基于ICMP 的Ping 软件实现[J].上海交通大学学报,1997, ( 5) : 117 120.
[3] 谢希仁.计算机网络(第2版) [M].北京:电子工业出版社,2002.
[4] 刘艳菊,等.利用IP 协议实现Ping 命令[J] .齐齐哈尔大学学报, 1999, 9.
[5] 张军波.浅谈网络测试命令Ping 的应用[J]. 现代通信,2002,1.
[6] Douglas E Comer.Computer Networks and Internets[M].5th ed.Prentice Hall,2009.
[7] James F Kurose, Keith W Ross.Computer Networking:A Top-Down Approach[M].4th ed.Addison-Wesley, 2007.
[8] Alexander Clemm.Network Management Fundamentals[M].Cisco Press, 2007.
[关键词]ICMPPINGTCP/IP可靠性
中图分类号:TP393.08 文献标识码:A 文章编号:1009-914X(2015)42-0168-02
一、ICMP协议介绍
ICMP全称为Internet ControlMessage Protocol,翻译为中文即网络控制报文协议,它隶属于TCP/IP协议族群,是其重要组成部分。众所周知,IP协议作为互联网传输的核心协议之一,其主要功能为寻址、分段和路由功能,数据可以依据IP协议通过一个个路由器达到最终的目的主机,但在这一传输过程中,如果发生意外情况,典型如中转路由器当机、网络中断等不可控因素,IP协议并不能提供有效的解决方式,也即是说,IP协议是一个不可靠的网络传输协议。那么,为了解决网络传输的可靠性,ICMP协议也由此产生了。
ICMP协议是为了解决IP协议的缺陷而产生的,它无法作为一个独立的协议单独起作用,它必须依附IP协议而存在,可以说,ICMP是IP协议的一个组成部分。所以,虽然ICMP的作用范围是OSI参考模型中的网络层,但其发送的数据并不能直接送到到下方的数据链路层,而是需要封装成IP数据包才能下达,其对外展现的形式还是IP协议。ICMP协议与其它IP协议的区别在于,如是ICMP协议,那么这个IP包头部的协议字段值固定为1。
二、ICMP协议的类型
由于ICMP协议是IP协议的组成部分,因此一个完整的ICMP报文包括了IP头部、ICMP头部和ICMP数据区,其中数据区显示错误信息及错误数据包的部分数据,而头部则由类型域(Type)和代码域(Code)两部分组成,类型域用于说明ICMP报文的作用及格式,代码域用于详细说明某种ICMP报文的类型。
报文的类型代码详细的区分了问题的不同种类,具体如表2-1所示:
其中,几种常见的报文为:
1、响应请求
我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。
2、目标不可到达、源抑制和超时报文
这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“该端口并不存在”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。
最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。
超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。
3、时间戳
时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。
三、ICMP协议网络测试及分析
为了进一步了解和研究ICMP协议,文本设计了不同的网络环境,实现了ping操作中出现的常见问题和提示,并基于ICMP协议类型给出了其原因分析。
1、网络测试
目的不可达(Destination unreachable)
测试环境:
(1) 测试场景:机器A与机器B处于不同的局域网内,机器A未设置默认路由
(2) 机器配置:
(3) 网络拓扑图如图4-1所示:
(4) 测试过程
机器A向机器B发送Ping命令:ping 192.168.3.122
返回结果如下:
Reply from 192.168.1.200:Destination host unreachable
2、时间超时
测试环境1:
(1) 测试场景:机器A连接一个不存在的机器B
(2) 机器配置:
(3) 测试结果
机器A向一个不存在的机器B发送Ping命令:ping 192.168.1.101
返回结果如下:Reply from 192.168.1.200:Request Time Out 测试环境2:
(1) 测试场景:机器A连接同一个局域网内的机器B,但机器B并未开机
(2) 机器配置:
(3) 网络图如图4-2所示:
(4) 测试结果
机器A向机器B发送Ping命令:ping 192.168.1.129
返回结果如下:Reply from 192.168.1.200:Request Time Out
3、TTL参数测试
TTL 是数据包为了防止数据包在网络中无限制的循环,而设定的网络数据包在网络传输中最大的转发次数。因为每在路由器上转发一次,就会转向下一跳,所以,又通常称为最大跳数。简单来说,当源机器向目标机器发送数据包时,期间会经过一定数量的路由器才能正常达到,如果在传输过程中出现不可靠问题,有可能会导致发送数据包在路由器之间循环传递的死循环,如果放任这种情况不处理,那么在网络中传递的死循环会越积越多,最终造成网络拥塞,影响网络性能。
不同的操作系统的TTL默认值均不一样,在本机中输出Ping 127.0.0.1命令,返回的TTL值便是本机操作系统的TTL默认值,本文在不同的操作系统下进行了测试,结论如下:
四、结果分析
由测试结果可知,Ping命令充分利用了ICMP协议的特点,将其网络监测和查询功能发挥的淋漓尽致,同时其参数易掌握,结果简单明确,也是其普及的一大原因。Ping命令还有多种搭配方式和返回信息值得我们进一步探究,而ICMP,作为网络层的一个基本协议,如何将其功能有效的运用到更多的场合和工具中去,值得我们进一步挖掘和研究。
参考文献
[1] 殷肖川.网络编程与开发技术[M] .西安:西安交通大学出版社, 2003.
[2] 杜新华.基于ICMP 的Ping 软件实现[J].上海交通大学学报,1997, ( 5) : 117 120.
[3] 谢希仁.计算机网络(第2版) [M].北京:电子工业出版社,2002.
[4] 刘艳菊,等.利用IP 协议实现Ping 命令[J] .齐齐哈尔大学学报, 1999, 9.
[5] 张军波.浅谈网络测试命令Ping 的应用[J]. 现代通信,2002,1.
[6] Douglas E Comer.Computer Networks and Internets[M].5th ed.Prentice Hall,2009.
[7] James F Kurose, Keith W Ross.Computer Networking:A Top-Down Approach[M].4th ed.Addison-Wesley, 2007.
[8] Alexander Clemm.Network Management Fundamentals[M].Cisco Press, 2007.