Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking TTL值-时差_Networking_Terminology_Ttl - Fatal编程技术网

Networking TTL值-时差

Networking TTL值-时差,networking,terminology,ttl,Networking,Terminology,Ttl,从这篇文章中,我对这个主题的诽谤感到困惑。 有没有可能有人帮我更好地理解发生了什么事 斯塔夫。 ---------------------------------- 编辑: 我试着用同一台电脑给自己发信息。 当我将TTL值设置为0时,我发送的数据包仍然会发送给我。为什么呢? 代码如下: 顺便说一句,这是Send方法中的一行 server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 0);

从这篇文章中,我对这个主题的诽谤感到困惑。 有没有可能有人帮我更好地理解发生了什么事

斯塔夫。 ----------------------------------
编辑:

我试着用同一台电脑给自己发信息。 当我将TTL值设置为0时,我发送的数据包仍然会发送给我。为什么呢? 代码如下:

顺便说一句,这是Send方法中的一行

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();
    }
}
客户端机器在生成数据包时设置TTL值,以指示数据包允许通过的最大跳数

每次数据包通过路由器时,路由器将减小TTL值

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


TTL字段的主要好处是,在发生路由循环时,即网络故障导致数据包在同一组路由器之间来回跳转时,可以阻止数据包永久跳转。

本文的哪一部分让您感到困惑?第2段讲述了主题的辩护。我不明白,我不明白hops是什么意思,如果你运行一个“traceroute”到其他人的IP地址,你会看到每一行。互联网是一个由网络组成的网络,路由器将它们连接在一起。每次数据包离开一个网络进入另一个网络,这就是一个跃点。这是我的程序代码。TTL设置为零,我发送时仍能得到按摩。为什么?是的,所以您使用的是多播TTL-就像页面上说的,这意味着它只能发送到同一个主机。@Stav为什么不能工作?你还没有说为什么你认为不应该。