October 6, 2021

למה פייסבוק הייתה למטה? תופולוגיית רשתות ורכיבי רשת

למה פייסבוק הייתה למטה?

הסיבה העיקרית - טעות אנוש.

קונפיגורציה לא נכונה ששינתה רכיבי רשת פגעה ביכולת של הרכיבים לתקשר.
השרת מאחורי הקלעים עדיין עבד ושום דבר לא נפגע/נפרץ.
אך התקשורת למידע נפגעה ולכן המוצרים לא עבדו.

עקרון הקונפיגורציה

מאיפה הוא הגיע?

כאשר מתכנתים כותבים קוד הם משתמשים בהרבה ערכים עם משמעות מסוימת, הערכים האלו יכולים גם להשתנות.
למשל כתובת חיבור:

1
2
3
4
5
6
7
8
9
10
public void Connect()
{
string server = "192.168.20.124";

var someClient = Connector.ConnectTo(server);

someClient.Validate();
someClient.Authorize();
someClient.Send("I'm connected");
}

בקוד אנחנו מתחברים לשרת מסוים שהכתובת שלו נכתבה בתוך הקוד.
ערך כזה נקרא Hardcoded - כתוב וקוד ולא ניתן לשינוי.
כדי לשנות ערך כזה צריך לערוך את הקוד ולבנות את כל התוכנה שלנו מחדש!
התהליך הזה מסורבל ולא נוח ולכן המציאו ערכים שמתקבלים מ-קונפיגורציה.

מהי קונפיגורציה?

בכתיבת קוד מחודשת:

1
2
3
4
5
6
7
8
9
10
Config.Server = GetValue("server_ip");

public void Connect()
{
var someClient = Connector.ConnectTo(Config.Server);

someClient.Validate();
someClient.Authorize();
someClient.Send("I'm connected");
}

config.ini:

1
server_ip=192.168.20.124

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

ואם נרצה לשנות את הערך הזה נוכל בקלות לשנות אותו בקובץ הקונפיגורציה שנקרא - config.ini.

רשת מחשבים

מהו האינטרנט?
אם לא בסך הכל כמה מחשבים מחוברים זה לזה - טוב כמה מילארדים של מחשבים…
אבל -
לא כל המחשבים מחוברים זה לזה בצורה ישירה.
קיימות רשתות פנימיות, חיצוניות, מדיניות, וגלובאליות.
יש רשת מחוברת בכבלים, ברדיו, עם לווינים, מטוסים או רחפנים.

אם לתאר רשתות מחשבים עולמית ניתן לתאר אותה כך:

לא ככה זה באמת נראה אבל זו המחשה.
ספקים עולמיים מחברים בין מדינות, וכל מדינה מחברת מחשבים לרשת משלה - בעצם תשתית וספק.
רשת A ורשת B הן רשתות פנימיות המחוברות ביחד בעזרת שרת חיצוני.
רשת C היא רשת המחוברת ע”י לווין ויכול להיות רשת למחקר או רשת ממשלתית.
רשת D היא רשת מנותקת מהרשת העולמית.

הרשת הכי בסיסית היא בין 2 מחשבים שמחוברים אחד לשני -

מה עושים מחשבים מחוברים? מעבירים מידע אחד לשני.
בעצם כשאתם מתחברים לפייסבוק, המחשב שלכם מבצע פנייה לשרתים של פייסבוק כדי להביא את הדף ולטעון את כל המשאבים שבונים את האתר - או בשפה המודרנית את האפליקציה שלהם.

פנייה לפייסבוק

מה קורה מאחורי הקלעים?

מציאת כתובת

מחשבים לא יודעים שפת אדם, מה זה בכלל facebook.com?
קודם כל המחשב צריך להמיר את השם הזה לכתובת.
כמו שיש ספר כתובות פיזי - אדם בשם פלוני אלומני שגר ברחוב גנרי 2 בפתח תקווה.

מבדיקת פינג פשוטה ניתן למצוא את הכתובת:

1
2
3
4
5
Pinging facebook.com [157.240.195.35] with 32 bytes of data:
Reply from 157.240.195.35: bytes=32 time=45ms TTL=53
Reply from 157.240.195.35: bytes=32 time=48ms TTL=53
Reply from 157.240.195.35: bytes=32 time=45ms TTL=53
Reply from 157.240.195.35: bytes=32 time=45ms TTL=53

ניתן להשתמש בכתובת הזו גם כדי להיכנס לפייסבוק:

תעבורה רשתית

אתם לא מחוברים ישירות לפייסבוק דרך כבל,
התעבורה עוברת דרך כל מיני מקומות והמשאבים של פייסבוק נמצאים לא רק במקום אחד.

ניתן לראות באתרים שיש כתובות עם CDN בשם שלהם.

CDN - Content Delivery Network

זוכרים מהי רשת? פשוט מחשבים מחוברים זה לזה.
CDN זוהי רשת נוספת שמאפשרת תעבורה מהירה יותר וקרובה יותר.
בדרך כלל אלו שרתים שנמצאים קרוב כדי לתת מענה מהיר יותר ללקוחות אתרים.
אם הנכם נמצאים בישראל ואתם רוצים להיכנס לפייסבוק - למה עליכם לחכות שהקבצים ייעברו מארה”ב?
פייסבוק בשביל זה הקימה רשתות מחשבים בישראל:

הורדת משאבים

ניתן לראות בעזרת Ctrl+F12 בעמודת Network אילו קבצים יורדים.

ככה ניתן להבין אילו קבצים בעצם יורדים מהאינטרנט ואילו כבר קיימים אצלנו במחשב.

רכיבים ברשת

מחשבים הם לא השחקנים היחידים שמשחקים ברשת.
הרשת כפי שזה נשמע היא מלאה גם בנתבים, באסים, סוויצ’ים, האבים וכדו’…

נכיר חלק מהרכיבים שמשחקים בתהליך:

DNS - Domain Name System

זהו פרוטוקול תקשורת במחשבים שבעזרתו ממירים שמות לכתובות.
כתובת נקראת - Internet Protocol Address או בקיצור IP.

כתובות כאלו בנויות מ-4 מספרים שיכולות לקבל 0 עד 255.
למשל הכתובת של פייסבוק 157.240.195.35.

Hub - רכז

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

לקריאה נוספת בויקיפדיה

Switch - מתג

המתג הוא כלי יותר מתוחכם מהרכז ומטרתו לנהל רשתות פנימיות ולחבר בין נקודות קצה שונות בין אם זה רשתות אחרות או
מחשבים.
מתג יכול לקבל כתובות IP ולהתחבר אליהן ובכך גם להרחיב רשתות.
רכזים יכולים להתחבר למתגים כאלו.

לקריאה נוספת בויקיפדיה

Router - נתב

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

יש לכל אינטרנט בייתי כתובת רשת חיצונית אחת שספק האינטרנט מספק לכם אותה.
היא יכולה להיות משתנה או לא - סטטים או דינאמית.

לכל מחשב ברשת הבייתית יש כתובת משלו בתוך הרשת הזו שלא זמינה מחוץ לרשת.
בפקודת ipconfig ניתן לראות את הכתובות:

בדוגמא הזו הסתרתי את כתובות ה-MAC שלי מכיוון שאלו כתובות פיזיות לא משתנות.
לקריאה נוספת - מאק בויקיפדיה

Modem - מודם

המודם הוא רכיב פיזי הנמצא בקו-חזית של התקשורת.
הוא מקבל תקשורת דרך רכיבים פיזיים כמו כבלים ומשחזרים את האותות החשמליים למידע.
ובכך המודמים מחברים את הרשתות הפנימיות לרשתות חיצוניות דרך תשתיות מדיניות.

אז מה קרה לפייסבוק?

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

בעצם הקונפיגורציית הנתבים ורכיבי התקשורת לא קונפגה כראוי או נעשתה טעות ולכן לא הייתה תקשורת לעולם החיצוני.

רוצים ללמוד עוד על רשתות?

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

תקשורת נתונים

מודל ה-OSI

TCP

HTTP


תודה על הקריאה :)

על הפוסט

הפוסט נכתב על ידי Ilya, רישיון על ידי CC BY-NC-ND 4.0.

שתפו את הפוסט

Email Facebook Linkedin Print

קנו לי קפה

#Software#DNS