zoukankan      html  css  js  c++  java
  • 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实例演示

      

  • 相关阅读:
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1159 Common Subsequence
    HDU 1003 Maxsum
    HDU 2604 Queuing
    HDU 2045 不容易系列之(3)—— LELE的RPG难题
    HDU 2501 Tiling_easy version
    HDU 2050 折线分割平面
    HDU 2018 母牛的故事
    HDU 2046 骨牌铺方格
    HDU 2044 一只小蜜蜂...
  • 原文地址:https://www.cnblogs.com/ld1226/p/6170870.html
Copyright © 2011-2022 走看看