IP协议的TTL解析(定义、执行、用途)

基本定义

ttl定义的目的是为了让数据包能不要在网上存活太久。为什么呢?最初的原因:

如果出现了路由环路会怎样?

其实也简单: 一个包会在网络里一直转来转去,永远不会被丢弃。网络里会慢慢堆积起垃圾,不断有新包在里面永久转圈。进而影响网络转发效率。

应用扩展:

  1. 可以控制本地收发。本地收发可以通过把ttl设置成1或者255来控制。设置成1可以避免包被发送到外网。设置成255可以让接收者不接收外来的包(检查这个类型的包如果ttl不是255就丢掉)。这些都是很巧妙的设计,很简单的方法就隔离了内外网。本地收发的包只能来自本地去往本地,外网的干扰进不来,内网的内部行为不扩散影响internet。

  2. 可以控制业务。tcp的时延可以影响业务流量,通过设置ttl,可以控制tcp。如果业务要求时延短,则可以设定小ttl,如果走时间太久,可能直接业务建立失败。另外ip原始设计是路由器丢包后会icmp通知源端。那么如果有些孤包被错误转发绕了远路,那么发送端很快就可以通过icmp知道包没有到达对端,不需要等ack时延。(这种设计并没有被广泛应用,原因之一是路由器懒惰,有时候丢包不报;之二是路由器设置安全限制;之三是主机收到icmp可能不会送回给tcp端口)

的吧了这么多,是想从另一个角度去理解ttl。好些人在这个回答下扯住traceroute不放。traceroute是ttl的一个应用而已,不是唯一的应用。

TTL 每跳减1

为什么在主机里不够1秒时延也必须ttl减1?原因是:

ip协议是per-hop的协议,每个包在每个路由器里的出来,有2个特点(解释ttl需要这两个特点,并不是说ip处理只有这两个特点):

  1. 本路由器不保留对包出来的log或状态,转了就忘了,顶多记个数。

  2. 路由器之间不会对每个包的处理进行协商或者对话,所有的信息必须通过每一个包"自明"。

这两个特点的结果,就是必须在包里改变点什么,才能说明这个包曾经在我这里耗了点时间。而ttl定义成8位,注定了不能是毫秒为单位。而以秒为单位,就会造成路由器处理不到1秒就没办法变ttl。于是,rfc规定,处理时间不够1秒的,也要ttl减1。另外小胖等同学们也都提到,路由器内部也懒得在出入口记时间,所以基本上不存在不减1的情况。

这样的结果,造成了internet上"既定事实",ttl剪掉的量=跳数。但这不是ipv4的定义。

关于ttl,还有一个有趣的点,是过隧道的时候怎么办。有空再填坑吧。写的时候没想到能写这么多。回头补上。

------------原回答--------------

先拷rfc791原始定义

Time to Live: 8 bits

This field indicates the maximum time the datagram is allowed to

remain in the internet system. If this field contains the value

zero, then the datagram must be destroyed. This field is modified

in internet header processing. The time is measured in units of

seconds, but since every module that processes a datagram must

decrease the TTL by at least one even if it process the datagram in

less than a second, the TTL must be thought of only as an upper

bound on the time a datagram may exist. The intention is to cause

undeliverable datagrams to be discarded, and to bound the maximum

datagram lifetime.

定义非常清晰:

  1. ttl是此包还能存活多长时间的标记

  2. ttl时间单位是秒

  3. ttl在每个转发点,即使停留了不够1秒也要减1

  4. 收到ttl为0丢包

并不是因为实际应用才在路由器中减1,而是协议要求的。一般路由器很少把包缓存超过1秒,所以看到的都是减1。

例外?

如果缓存超过1秒,会不会有路由器减2呢?不知道,没有测过。

其实超过1秒也不是不可能,如果有低速率转发设备缓存足够大。。。。。。如果,在llc或rlc层做了确认重传,尤其是在卫星线路上。见过单向时延超过400毫秒的卫星链

相关推荐
灯琰110 小时前
STM32F4+W5500 移植与开发常见问题
网络
IpdataCloud12 小时前
跨区服玩家延迟高怎么办?用IP离线库自动分配到最近服务器
数据库·tcp/ip·github·php·ip
qyr678912 小时前
全球新能源汽车电机驱动器市场深度调研报告
大数据·网络·人工智能·自动化·汽车
Hiyajo pray12 小时前
SDN 访问控制性能调优方法
服务器·网络·网络安全
初晴融雪-快雪时晴12 小时前
网络硬件全景梳理:从光纤到手机,一张网是如何连接的?
网络·智能手机·智能路由器
辣椒思密达13 小时前
AI出海产品本地化测试:住宅IP在模拟海外用户环境中的实践价值
网络协议·tcp/ip·安全·php·苹果vision pro
huainingning14 小时前
交换机通过ftp下载文件或者传输文件到ftp服务器
运维·服务器·网络
qq_5896660515 小时前
如何避免用户手速过快多次点击触发 api 多次调用
java·前端·网络
花生了什么事o16 小时前
DNS:把域名翻译成 IP 的层级查询机制
网络·网络协议·tcp/ip
海域云-罗鹏17 小时前
多云连接策略实战指南:企业如何打破云孤岛,构建跨公有云、私有云与混合云的高效网络
网络