IP協議中TTL詳解


  traceroute使用ICMP 和TTL,ICMP 用於回顯信息,包括IP,TTL,sequence number等。TTL字段是發送端初始設置的字段,RFC指定的值為64,對於每個處理數據包的路由器都需要把TTL的值減1或者減去在路由器中停留的時間,一般路由器轉發數據包的時延不超過1s,因此TTL可以作為跳數的計數值。

 如果路由器收到的IP數據包的TTL值為0或者1,路由器將不會轉發數據包,將數據包丟棄並發送ICMP超時信息。包含ICMP信息的IP報文的源地址是該路由器的IP地址。Traceroute可以用做追溯網關的工具,只要設置合理設置TTL值。發送一份TTL值為1的數據報,第一個路由器將TTL值減1,丟棄該數據報,並發送ICMP超時信息,得到第一個路由器的IP,同理發送一份TTL值為2的數據報得到第二個路由器的地址。繼續這個過程直至該數據報到達目的主機,但是目的主機哪怕接收到TTL值為1的IP報文,也不會丟棄該數據報並發送ICMP報文,因為數據報已經到達目的地,如何判斷是否已經到達目的主機?發送一份UDP數據報給目的主機,其中UDP使用的端口號是不可達的端口,根據ICMP報文是超時還是端口不可達區分是否為目的主機。

  linux系統 TTL值的修改位置是/proc/sys/net/ipv4/ip_default_ttl,

 echo 128 > /proc/sys/net/ipv4/ip_default_ttl

  (這是短暫性的)若要設置長久的可以:

  修改/etc/sysctl.conf配置文件,添加如下一行

  net.ipv4.ip_default_ttl=128

   

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM