לרבים מאיתנו הייתה בעיה מפעם לפעם במחשבים ובמכשירים אחרים שלנו שמרו על הגדרות זמן מדויקות, אך סנכרון מהיר עם שרת NTP עושה הכל טוב שוב. אבל אם המכשירים שלנו יכולים לאבד את הדיוק, איך שרתי NTP מצליחים להישאר כל כך מדויקים?
מושב השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה של Stack Exchange, קיבוץ מונחה קהילה של אתרי שאלות ותשובות.
תמונה באדיבות LEOL30 (פליקר) .
השאלה
קורא SuperUser פרנק ת'ורנטון רוצה לדעת כיצד שרתי NTP מסוגלים להישאר כל כך מדויקים:
שמתי לב כי בשרתים שלי ומכונות אחרות, השעונים תמיד נעים כך שהם צריכים להסתנכרן כדי להישאר מדויקים. כיצד שעוני שרת ה- NTP מונעים מלהיסחף ונשארים כל כך מדויקים?
כיצד מצליחים שרתי ה- NTP להישאר כל כך מדויקים?
התשובה
לתורם SuperUser, מייקל קורלינג, התשובה עבורנו:
שרתי NTP מסתמכים על שעונים מדויקים ביותר לצורך תזמון מדויק. מקור זמן נפוץ לשרתי NTP מרכזיים הוא שעונים אטומיים, או מקלטי GPS (זכרו שלווייני GPS יש שעוני אטום). שעונים אלה מוגדרים כמדויקים מכיוון שהם מספקים הפניה לזמן מדויק ביותר.
אין שום דבר קסום ב GPS או בשעונים אטומיים שגורמים להם לומר לך בדיוק מה השעה. בגלל האופן שבו שעונים אטומיים עובדים, הם פשוט טובים מאוד, לאחר שנאמר להם פעם מה השעה, שְׁמִירָה זמן מדויק (מאז השנייה מוגדרת במונחים של השפעות אטומיות ). למעשה, ראוי לציין זאת זמן ה- GPS שונה מה- UTC שאנחנו רגילים יותר לראות. שעונים אטומיים אלה מסונכרנים בתורם כנגד זמן אטומי בינלאומי או TAI על מנת לא רק לספר במדויק את חלוף הזמן, אלא גם ה זְמַן.
ברגע שיש לך זמן מדויק במערכת אחת המחוברת לרשת כמו אינטרנט, מדובר בהנדסת פרוטוקולים המאפשרת העברת זמנים מדויקים בין מארחים ברשת לא אמינה. בהקשר זה שרת NTP שכבה 2 (או רחוק יותר ממקור הזמן בפועל) אינו שונה ממערכת השולחן שלך שמסתנכרנת עם קבוצה של שרתי NTP.
כשיהיו לכם כמה זמנים מדויקים (כפי שמתקבלים משרתי NTP או ממקומות אחרים) ויודעים את קצב התקדמות השעון המקומי שלכם (שקל לקבוע אותו), תוכלו לחשב את קצב הסחיפה של השעון המקומי ביחס ל"מדויק שנאמין חלוף זמן. לאחר שננעל, ניתן להשתמש בערך זה בכדי להתאים את השעון המקומי באופן רציף כדי לדווח על ערכים קרובים מאוד למעבר הזמן המדויק, גם אם השעון בזמן אמת המקומי עצמו אינו מדויק ביותר. כל עוד השעון המקומי שלך אינו גבוה במיוחד בִּלתִי יָצִיב , הדבר אמור לאפשר שמירה על זמן מדויק למשך זמן מה גם אם מקור הזמן במעלה הזרם שלך אינו זמין מכל סיבה שהיא.
יישומי לקוח NTP מסוימים (ככל הנראה רוב היישומים ntpd או שירותי מערכת) עושים זאת, ואחרים (כמו ה- ntpdate של ntpd המלווה שפשוט מכוון את השעון פעם אחת) לא. זה מכונה בדרך כלל a קובץ סחיפה מכיוון שהיא שומרת בהתמדה מידה של היסחפות השעון, אך באופן מוחלט אין צורך לשמור אותה כקובץ ספציפי בדיסק.
ב- NTP, שכבה 0 היא בהגדרה מקור זמן מדויק. שכבה 1 היא מערכת המשתמשת במקור הזמן של שכבה 0 כמקור הזמן שלה (ולכן היא מעט פחות מדויקת ממקור הזמן של שכבה 0). שכבה 2 שוב מעט פחות מדויקת משכבה 1 מכיוון שהיא מסנכרנת את זמנה עם מקור שכבה 1 וכן הלאה. בפועל, אובדן הדיוק הזה הוא כל כך קטן שהוא זניח לחלוטין בכל המקרים פרט לקיצוניים ביותר.
יש לך מה להוסיף להסבר? נשמע בתגובות. רוצה לקרוא תשובות נוספות ממשתמשי Stack Exchange אחרים המתמצאים בטכנולוגיה? עיין כאן בשרשור הדיון המלא .