Traceroute原理介绍
Posted 风也沉默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Traceroute原理介绍相关的知识,希望对你有一定的参考价值。
一、路由追踪
路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP。
二、ICMP协议
Internet控制报文协议(internet control message protocol),它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
日常生活中,邮寄包裹会经过多个传递环节,任意一环如果无法传下去,都会返回寄件人,并附上无法邮寄的原因。同理,当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。
三、TCP协议的三次握手
A. TCP建立连接的三次握手机制
(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,完成三次握手,随后Client与Server之间可以开始传输数据了。
B.TCP的相关报文解释
上图中我们重点来介绍一下Flags(标志位-8位):
ACK:确认序号有效;
PSH:接收方应该尽快将这个报文交给应用层
RST:重置连接
SYN:发起一个新连接
FIN: 释放一个连接
四、traceroute原理介绍
过程描述:
通过向目标发送不同IP生存时间 (TTL) 值的数据包,路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 减 1。数据包上的 TTL 减为 0 时,路由器应该将“超时”的消息发回源系统。
先发送 TTL 为 1 的数据包,并在随后的每次发送过程将TTL递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。
五、各协议探测原理
1. 基于TCP协议:
端口存在:返回第二次握手包。
否则:
Unix/Linux:返回RST包,重置连接。
Windows: 无响应……
2.基于UDP协议:
端口存在:直接丢给对应进程,无返回。
端口不存在:返回端口不可达的ICMP报文。
(因此UDP探测时,一般选择没人用的大端口)。
3.基于ICMP协议:
返回回显应答报文。
六、实例演示
A.ICMP实例演示
B.TCP实例演示
以上是关于Traceroute原理介绍的主要内容,如果未能解决你的问题,请参考以下文章
计算机网络 网络层 ICMP协议 ping和traceroute介绍