雨夜寂寞读《TCP/IP详解》,对于IP协议TTL项产生了一个小小的疑问,暂时又不想去细查,就先记在这里。
总所周知,TTL(The time-to-live field)作为IP数据报在网络里的生存时间而设置。说时间并不严谨,说次数就对了。IP数据报经由网关转发给目的地,转发路径不一而足。为了防止数据报在网络里绕圈、打转,没经过一个网关(中转站),该值减1,当该值为0,丢弃,并返回一个ICMP数据报,据此我的疑问产生了。
ICMP是为了通知发这个IP报的主机,你的包被我扔了,你再从新发一个吧。但是ICMP是被IP封装的,也就是说,扔这个包的网关(下文成为R1)给主机发了一个IP数据报,还是要设置TTL值,这个值应该会设定的比丢弃包的TTL值大,大多少呢?
会不会出现这种情况,R1发送的IP数据报在到Ra的时候丢失了,Ra心里过不去,给R1发一个ICMP数据报,告诉他包丢了。
这个包在到R2的时候丢失了,R2心里过不去,给Ra发一个ICMP数据报,告诉他包丢了。
这个包在到Rb的时候丢失了,Rb心里过不去,给R2发一个ICMP数据报,告诉他包丢了。
这个包在到R3的时候丢失了,R3心里过不去,给Rb发一个ICMP数据报,告诉他包丢了。
...
网友评论