码迷,mamicode.com
首页 > 其他好文 > 详细

Traceroute原理介绍

时间:2016-12-13 18:53:49      阅读:1517      评论:0      收藏:0      [点我收藏+]

标签:数据包   应用   window   失败   建立   基于   响应   icmp   linu   

一、路由追踪  

  路由跟踪,就是获取从主机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原理介绍

标签:数据包   应用   window   失败   建立   基于   响应   icmp   linu   

原文地址:http://www.cnblogs.com/ld1226/p/6170870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!