【问题标题】:TTL Value - TimeToLiveTTL 值 - 生存时间
【发布时间】:2011-06-21 08:10:37
【问题描述】:

http://searchnetworking.techtarget.com/definition/time-to-live

从这篇文章中,我对这个主题的定义感到困惑。 有没有人可以帮助我更好地理解发生了什么?

斯塔夫。

----------------------------------


编辑:

我尝试从同一台计算机向自己发送按摩。 当我将 TTL 值设置为 0 时,我发送的包仍然可以到达。这是为什么? 这是代码:

顺便说一句,发送方法中的这一行。

server.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.MulticastTimeToLive, 0);


    using System;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.Threading;
    class MAIN
    {
        public static MulticastOption MulticastOption;
        private static MulticastOption CreateGroup()
        {
            MulticastOption = new MulticastOption(IPAddress.Parse("224.100.0.1"));
            return MulticastOption;
        }
        private static void Receive()
        {
            Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
            EndPoint ep = (EndPoint)iep;
            sock.Bind(iep);
            sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, MulticastOption);
            //
            byte[] data = new byte[1024];
            new Thread(new ThreadStart(Send)).Start();
            int recv = sock.ReceiveFrom(data, ref ep);
            String stringData = Encoding.ASCII.GetString(data, 0, recv);
            Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
            sock.Close();
        }


   private static void Send()
    {
        Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9051);
        IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("224.100.0.1"), 9050);
        server.Bind(iep);
       server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("224.100.0.1")));
     server.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.MulticastTimeToLive, 0);
        server.SendTo(Encoding.ASCII.GetBytes("This is a test message"), iep2);
        server.Close();
    }
    public static void Main(String[] args)
    {
        CreateGroup();
        Receive();
        Console.ReadKey();
    }
}

【问题讨论】:

  • 这篇文章的哪一部分让你感到困惑?
  • 第 2 段讲述了主题的定义。我没明白

标签: networking terminology ttl


【解决方案1】:

客户端机器设置数据包生成时的 TTL 值,表示数据包允许通过的最大跳数。

每次数据包通过路由器时,路由器都会递减 TTL 值。

如果 TTL 值达到零,路由器将丢弃数据包并返回 ICMP“超出跳数”错误消息。

TTL 字段的主要好处是在发生路由循环(即导致数据包在同一组路由器之间来回跳动的网络故障)时,阻止数据包永远反弹.

【讨论】:

  • 我不明白啤酒花是什么意思
  • 如果您对其他人的 IP 地址运行“traceroute”,它们就是您看到的每一行。互联网是网络的网络,路由器将它们连接在一起。每次数据包离开一个网络并进入另一个网络时,就是一跳。
  • 这是我的程序代码。 TTL 设置为零,当我发送它时我仍然得到我的按摩。这是为什么呢?
  • 对,所以您使用的是多播 TTL - 就像页面上所说的那样,这意味着它仅限于发送到 同一主机
  • @Stav 为什么它不起作用?你实际上并没有说出你认为不应该这样做的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
相关资源
最近更新 更多