Network Time Protocol

מתוך ויקיפדיה, האנציקלופדיה החופשית
(הופנה מהדף NTP)
סנכרון בעזרת NTP

Network Time Protocolראשי תיבות: NTP) הוא פרוטוקול תקשורת המאפשר להתקני מחשוב לסנכרן את השעון שלהם, היינו את השעה ביום ואת התאריך (Time Of Day -TOD), לשעון מרכזי ומדויק המצוי ברשת. הפרוטוקול מתבסס על תקשורת TCP/IP.

הפרוטוקול הומצא ע"י ד"ר דיוויד מיילס מחברת COMSAT[1]. הוא מתבסס על service או daemon שרץ על שרת המחובר לשעון אטומי, מקלט GPS או התקן זמן מדויק אחר, השרת עצמו נקרא לרוב שרת זמן (time server). כל מחשב המעוניין (ומורשה, במקרים מסוימים) להסתנכרן מול אותו התקן זמן מזדהה מול השרת בעזרת פרוטוקולים מוכרים או באופן אנונימי, אם הדבר מאופשר, ואז הוא יכול להסתנכרן מולו. בין השאר מתמודד הפרוטוקול עם השבתה של שרתי הזמן, חלוקת עומסים, שיפור הדרגתי של דיוק, תעדוף שרתים ועוד.

מידע טכני[עריכת קוד מקור | עריכה]

התמודדות עם העברת המידע ברשת[עריכת קוד מקור | עריכה]

לשדר העובר ברשת לוקח זמן להגיע מקצה לקצה ולכן אחד מהאתגרים שהפרוטוקול הציב כיעד הוא התמודדות עם בעיה זו. כאשר מחשב מבקש להסתנכרן מול שרת זמן הוא שולח לשרת הזמן את הבקשה ואת השעה המקומית אצלו. כאשר חוזר משרת הזמן שדר המכיל את השעה הנכונה יחד עם השעה שנשלחה על ידי השרת המבקש, מושווה השעה המקומית הנוכחית לשעה שנשלחה בשדר המקורי הקיימת גם בשדר שהוחזר ואז מבוצע חישוב של הזמן הממוצע שלוקח לשדר לעשות את המרחק משרת אחד למשנהו. הממוצע מתקבל לאחר שליחת בקשה לסנכרון מספר פעמים (לרוב 4).

תקשורת[עריכת קוד מקור | עריכה]

התקשורת עצמה נעשית בפורט 123 UDP מועבר בה מידע על השעון על-גבי מבנה נתונים המכיל 32 ביט המתארים את השניות, ועוד 32 ביט לתיאור חלקי השניות מה שמאפשר בתאוריה דיוק של עשיריות-ננו שניות, הדיוק הממשי הוא של כ-10 מיליוניות השנייה.

תעדוף שרתים[עריכת קוד מקור | עריכה]

לכל שעון בדיוק גבוה מספיק מוגדר ערך מיוחד הנקרא Stratum, הנע בין 0-16 כאשר ככל שמספרו נמוך יותר כך הדיוק גדל. לפי הגדרת הפרוטוקול, אין יכולת להסתנכרן מול מקור זמן בעל stratum השווה ל-16 וכך נשמרת היררכיה של עד 16 רמות. לרוב שרתים אינם מקבלים את הערך 0 אלא את הערך 1 מכיוון שהם מסתנכרנים מול התקן הזמן.

כיוון השעון[עריכת קוד מקור | עריכה]

במחשבים קיימים, בדרך כלל שני סוגי שעונים. שעון המערכת (System clock) ושעון זמן אמת (RTC - Real Time Clock). שעון המערכת מנוהל תוכנה בעזרת ספירה של פסיקות השעון על ידי מערכת ההפעלה. "שעון זמן האמת" הוא התקן חומרה בעל גיבוי של סוללה המאפשר למחשב לשמור את השעה ואת התאריך גם כשהמחשב כבוי. המידע שמתקבל בעזרת הפרוטוקול משמש לעדכון שעון המערכת בעזרת הוספה או גריעה של ההיסט בזמן, שנוצר בין שעון המערכת לזמן שהתקבל מן השרת. זמן המערכת יכול לשמש לתיקון ההיסט של "שעון זמן האמת" החומרתי לצורך שמירת השעה והתאריך בזמן כיבוי המחשב.

התמודדות עם השבתה[עריכת קוד מקור | עריכה]

בכל פעם שבה מחשב מבצע סנכרון בעזרת הפרוטוקול, הוא שומר אצלו (בזיכרון או בתוך קובץ) את הסטייה של שעונו הפנימי לעומת שעון הייחוס בשרת הזמן, לאחר בדיקת ממוצע הסטיות והתעלמות ממקרי קצה, המחשב מסוגל לשמור על שעון פנימי יחסית מדויק גם ללא תלות בשרת הזמן.

גלובליזציה[עריכת קוד מקור | עריכה]

מכיוון שבכל אזור זמן בעולם השעה היא שונה, הפרוטוקול מתבסס על הסבת השעון לזמן אוניברסלי מתואם.

המאגר העולמי[עריכת קוד מקור | עריכה]

הכתובת pool.ntp.org מצביעה לשרת NTP אקראי מבין קבוצה של אלפי שרתי זמן אמינים. ישנן כתובות משנה, כגון fr.pool.ntp.org לשרתים מצרפת. נכון ל-2024 קיימים 5 שרתים בישראל (il.pool.ntp.org). השם הראשי וכל אחד משמות המשנה מחזיר באקראי שם אחד מבין השמות המופיעים בו. לכן אפשר להשתמש בשם זה להגדרת שרת NTP למחשב שמיקומו בעולם לא ידוע (מחשב נייד, או ברירת מחדל לתצורה למערכת תוכנה)[2].

שימושים נפוצים[עריכת קוד מקור | עריכה]

  • Windows משתמשת בפרוטוקול לסנכרון השעונים על מנת שתתאפשר עבודה עם פרוטוקול ההצפנה שאיתה היא עובדת - Kerberos וגם עבור משתמשים המחפשים נוחות.

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

RFC5905 - Network Time Protocol Version 4: Protocol and Algorithms Specification

הערות שוליים[עריכת קוד מקור | עריכה]