פורסם 2011 ביוני 2114 שנים בקישור הזה מסבירים את המושג. http://searchnetworking.techtarget.com/definition/time-to-liveלפי מה שאני הבנתי, TTL זה בעצם כמות הראוטרים שהקובץ שאתה רוצה להעביר יכול לעבור. עכשיו אני דיי בטוח שזה לא נכון חח. אני ישמח אם תקראו את הפסקה השניה ותסבירו לי מזה בדיוק. תודה!לכל העצלנים:specify a certain time span in seconds that, when exhausted, would cause the packet to be discarded. Since each router is required to subtract at least one count from the TTL field, the count is usually used to mean the number of router hops the packet is allowed before it must be discarded. Each router that receives a packet subtracts one from the count in the TTL field. When the count reaches zero, the router detecting it discards the packet and sends an Internet Control Message Protocol (ICMP) message back to the originating host.0 is restricted to the same host1 is restricted to the same subnet32 is restricted to the same site64 is restricted to the same region128 is restricted to the same continent255 is unrestricted
פורסם 2011 ביוני 2114 שנים הבנת פחות או יותר נכון. רק שלא מדובר על קובץ, אלא על פאקט. (זה יכול ליהיות קובץ שלם, יכול ליהיות חלק מקובץ).בגדול זה נקרא Time To Live כי פעם כשפיתחו את זה ההערכה הייתה שהראוטר מתנהל בערך שניה עם הקובץ לפני שהוא מעביר אותו הלאה.היום זה כבר הרבה פחות, ולא מודד זמן, אלא כמה hops הפאקט יכול לעבור עד שהוא מגיע ליעד. אם המס' יורד ל0, הראוטר זורק את הפאקט ולא מעביר אותו.ההיגיון מאוחרי זה הוא למנוע מפאקטים להסתובב לנצח במקרה של routing loops, כשלוקחים בחשבון ששום פאקט בעולם לא צריך לעבור 255 hopsכדי להגיע ליעדו בצורה תקינה.
פורסם 2011 ביוני 2114 שנים מחבר אוקי את זה הבנתי אבל מה שלא הבנתי זה למה דווקא 255 ולא 256? או 348930? אז אם אני רושם 0 אז ברגע שהחבילה מגיעה לראוטר היא רואה 0 ואז החבילה אמורה להמחק. אבל היא לא נמחקת לי מישום מה והיא כן מגיעה ליעד (שלחתי מהמחשב שלי למחשב שלי סתם כדי לראות איך זה עובד). למה?
פורסם 2011 ביוני 2114 שנים מה בדיוק עשית? איך שלחת?ובכל מקרה החבילה לא עברה בשום ראוטר מהמחשב שלך לעצמו. נסה לשלוח למחשב ברשת אחרת, ותראה שזה לא יגיע.למה דווקא 255? כי זה הערך של בייט אחד, שזהו גודל השדה שהוקצה לTTL. אין צורך ביותר.
פורסם 2011 ביוני 2114 שנים מחבר אז אתה אומר שהחבילה עוברת מראוטר לראוטר בעולם עד שהיא מגיעה ליעד? או רק בין ראוטר לראוטר באותו רשת? כי 255 בעצם מגביל את הרשת ל255 ראוטרים.אגב הנה התוכניות:בקוד אני יוצר קבוצה ומפעיל את הפעולה שמקבלת הודעה. עכשיו שניה לפני שהיא מחכה להודעה לנצח אני מפעיל THREAD שמפעיל פעולה ששולחת הודעה. עכשיו אם הגדרתי את הTTL ל0 אז בעצם לפי מה שאתה אומר אז ההודעה הולכת לראוטר ומשם בחזרה אליי כי אני חלק מהקבוצה אבל בגלל שהTTL הוא 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(); }}
פורסם 2011 ביוני 2114 שנים ראוטר זה מכשיר שמחבר בין רשתות שונות, ככה שלרוב הביטוח "בין ראוטר לראוטר באותה רשת" די סותר את עצמו... פאקט לא יכול לעבור יותר מ255 ראוטרים מהמקור ליעד. לא משנה אם המקור והיעד הם באותו חדר או בקצה השני של העולם. (תעשה כמה טרייסים ותראה שלרוב אתה אפילו לא מתקרב למס' הזה) לא כל כך הבנתי מה אתה מנסה לעשות, או מה בדיוק הקוד הזה עושה. אבל בכל מקרה, מי שמשנה TTL או זורק חבילות זה הראוטרים. במקרה שאתה מתאר החבילה פשוט תגיע לסוויץ' וממנו לכל המחשבים שחברים בmulticast.
פורסם 2011 ביוני 2114 שנים מחבר אם אמרתי לTTL להיות 0 אז איך זה הגיוני שברגע שאני שולח מידע לכולם בקבוצה שיצרתי, הקבוצה מחזירה לי מידע? אתה אמרת שברגע שהראוטר רואה 0 בTTL אז הוא מוחק את המידע ולא מעביר אותו לשום מקום... ובתוכנית אני כן מקבל את המידע ששלחתי. (שלחתי מהמחשב שלי למחשב שלי)
פורסם 2011 ביוני 2214 שנים מחבר למה הוא לא עובר בשום ראוטר.. זה השאלה שלי. הרי אם אני משתמש בMULTICAST הוא חייב לעבור בראוטר
פורסם 2011 ביוני 2214 שנים למה?ואם יש רשת שאין בה ראוטר (רק כמה מחשבים מחוברים לסוויץ'), אז אי אפשר לשלוח multicast?multicast עובד גם ברמה 3 וגם ברמה 2. שים לב שכשאתה מוציא פאקט לIP של מולטיקאסט, הוא גם מקבל MAC יעד שייחודי למולטיקאסט.(זה מורכב מהתחלה קבועה 01:00:5E וממשיך ב23 ביטים האחרונים של כתובת הIP)
פורסם 2011 ביוני 2214 שנים מחבר אין לי מושג מה אמרת הרגע בשתי שורות האלה + מזה סוויץ' multicast עובד גם ברמה 3 וגם ברמה 2. שים לב שכשאתה מוציא פאקט לIP של מולטיקאסט, הוא גם מקבל MAC יעד שייחודי למולטיקאסט. (זה מורכב מהתחלה קבועה 01:00:5E וממשיך ב23 ביטים האחרונים של כתובת הIP) אני ישמח לקבל הסבר או קישור למקור מידע שיסביר לי יותר. אגב תודה על התגובות
פורסם 2011 ביוני 2214 שנים איך הגעת למצב שאתה צריך לדעת מה זה TTL בלי שאתה יודע מה זה switch? ???תקרא קצת על בסיס של רשתות לפני שאתה מתחיל לכתוב אפליקציות שעובדות ברשת....
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.