ICMP
ICMP协议经常被认为是IP层的一个组成部分。它传递差错报文以及其他需要注意的信息。ICMP报文通常被IP层或更高层协议(TCP或UDP使用)。一些ICMP报文把差错报文返回给用户进程。ICMP是在IP数据报内被传输的,协议代码为1。所有ICMP报文的前4个字节都是一样的,第一个字节为类型(常见的有0,ping的回显应答。3,目的不可达。8,ping请求回显。11,超时)第二个字节为代码(常见的有3类型目的不可到达的3代码-端口不可到达,1代码-主机不可到达)
PING
ping程序:通过在I C M P报文数据中存放发送请求的时间值来计算往返时间。当应答返回
时,用当前时间减去存放在 I C M P报文中的时间值,即是往返时间。
最常见的使用ICMP协议的为ping程序了,该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。ping这能测试服务器是否不可到达,使用的只是IP数据报,并不能检测某个端口是否可用(如web服务器的80端口),ping针对的只是一个IP没有涉及到传输层的端口。
ping –RR 记录路由,每个处理过该数据报的路由器都把它的IP地址放入选项字段。
Traceroute
Traceroute(windows上为tracert)程序可以让我们看到IP数据报从一台及其传到另一台主机所经过的路由。Traceroute程序使用ICMP报文和IP首部中的TTL字段(一般为64).TTL字段的目的是防止数据报在选路时候无休止的在网络中流动(当路由故障的时候,可能在两个路由循环)。当路由器收到一份IP数据报的时候,如果其TTL字段是0或1,则路由器不转发该数据报,路由器将该数据报丢弃,并给信源主机发送一份ICMP“超时”信息。
Tracerout的工作工程,它发送一份TTL字段为1的IP数据报给目的主机(为ICMP的请求回显Type为8),处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径中的第一个路由器的地址。然后在发送一份TTL值为2的数据报,这样我们可以得到第二个路由器的地址。继续这个过程直到该数据报到达主机。目的主机如果接收到ICMP报文(这个时候不会发送ICMP“超时”差错报文),为了判断已经到达主机,这个时候在发送一份UDP数据报给主机,并且数据报的端口很大(应用程序不会占用),这个时候目的主机会产生一份“端口不可到达”的错误的ICMP报文。traceroute程序所要做的是区分接收到的ICMP报文是超时还是端口不可到达,以判断什么时候结束。
关于这个程序还有几点要说明:
(1)并不能确保现在的路由也是将来所要采用的路由,甚至两份连续的数据报都可能采用不同的路由。
(2)不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用同一路由。这表明打印出来的往返时间可能并不能真正体现数据报发送和返回的时间差。
(3)返回的ICMP报文中的信源IP地址是UDP数据报到达的路由的接口的IP地址。接受这个报文的接入接口地址,并不是发送接口的地址。
Traceroute程序:得到IP数据报从一台主机传到另一台主机所经过的路由。
为什么不用PING程序的RR选项:
1. 因为不是所有的路由器都支持记录路由选项
2. 记录路由一般都是单向的选项
3. ip首部留给选项的空间有限,并不能存放大多数的路径。
过程: Tr a c e r o u t e程序的操作过程。它发送一份T T L字段为1的I P数据报给目的主机。处理这份数据报的第一个路由器将 T T L值减1,丢弃该数据报,并发回一份超时I C M P报文。这样就得到了该路径中的第一个路由器的地址。然后Tr a c e r o u t e程序发送一份T T L值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接收到 T T L值为1的I P数据报,也不会丢弃该数据报并产生一份超时I C M P报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经到达目的主机了呢?
Tr a c e r o u t e程序发送一份U D P数据报给目的主机,但它选择一个不可能的值作为 UD P端口号(大于30 000) ,使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报到达时,将使目的主机的 U D P模块产生一份“端口不可达”错误(见 6 . 5节)的I C M P报文。这样,Tr a c e r o u t e程序所要做的就是区分接收到的 I C M P报文是超时还是端口不可达,以判断什么时候结束。
Telnet
Telnet为(telecommunication network protocol)的缩写,它为标准的提供远程登录的功能的应用,它使用TCP连接,能够运行在不同操作系统主机之间。telnet的使用方法是 telent host port的方式,这个命令有个特殊的应用,就是测试远程主机是否开启某个端口,例如 telent baidu.com 80,可以测试百度的web服务。用抓包器抓了下包,当telent baidu.com 80的时候,就会和百度一台服务器的80端口建立一个tcp连接,这个连接可以维持一会,就会自动断开。
TCP/IP------ping、traceroute、ICMP、Telnet
最新推荐文章于 2025-06-18 17:12:01 发布