לדלג לתוכן

3.5 חיבור הכל הרצאה

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

אתר yent.co.il

  • סיכום: נעבור על מה קורה כשאנחנו מנסים לגשת לאתר ynet.co.il בדפדפן שלנו.
  • הקלדת הכתובת בדפדפן: אנו מתחילים על ידי הקלדה של כתובת האתר ynet.co.il בדפדפן ולחיצה על כפתור "אנטר". הדפדפן מוכן להתחיל את תהליך הגישה לאתר.
  • הגדרת כתובת IP: אם המחשב שלנו לא מוגדר עם כתובת IP, הוא ישלח בקשה ב-Broadcast מסוג DHCP Discover, כדי למצוא שרת DHCP שייתן לו כתובת IP. אם הוגדרה כתובת IP סטטית, המחשב לא ישלח בקשה כזו. במקרה ששרת ה-DHCP לא יענה, המחשב יקבל כתובת APIPA (כתובת אוטומטית שנבחרת במערכות Windows). לרוב, השרת DHCP ברשת יהיה הראוטר הביתי שלנו, שמספק את הכתובת IP והגדרות הרשת.
  • קבלת כתובת ה-IP של ה-DNS: לאחר שהמחשב מקבל את תשובת ה-DHCP, הוא מקבל גם את כתובת ה-IP של שרת ה-DNS (לרוב מהשרת שהועבר ב-DHCP). אם לא התקבלה כתובת DNS, השרת DNS ברירת המחדל ב-Windows הוא 8.8.8.8 (השרת של גוגל).
  • בדיקת קבצי המחשב: לפני שליחת בקשה לשרת ה-DNS, המחשב בודק אם כבר יש לו את כתובת ה-IP של האתר במקומות שונים:
  • הוא בודק בטבלה הסטטית hosts (C:\Windows\System32\drivers\etc\hosts) אם יש רשומה מקומית של ynet.co.il.
  • אם לא נמצאה כתובת, הוא בודק ב-cache של DNS המקומי.
  • שליחת בקשת DNS: אם המחשב לא מצא את הכתובת במאגרים המקומיים, הוא שולח בקשה לשרת ה-DNS. קודם כל, המחשב בודק את טבלת ה-routing שלו כדי להחליט לאן להעביר את הבקשה. מאחר וה-IP של שרת ה-DNS (במקרה שלנו 8.8.8.8) לא נמצא ב-subnet המקומי, המחשב ישלח את הבקשה דרך ה-default gateway, שהתקבל משרת ה-DHCP. המחשב חייב לדעת את כתובת ה-MAC של ה-default gateway, ואם הוא לא מצא אותה בטבלת ה-ARP המקומית, הוא ישלח בקשת ARP ב-Broadcast כדי לאתר את כתובת ה-MAC של הראוטר. הראוטר יענה עם כתובת ה-MAC, ואז המחשב יוכל לשלוח את בקשת ה-DNS לשרת.
  • שליחת בקשת DNS דרך הראוטר: הראוטר מקבל את הבקשה ומעביר אותה לספק האינטרנט (ISP) באמצעות NAT (Network Address Translation), על מנת לשנות את הכתובת IP והפורט ולוודא שהבקשה תנותב באופן נכון. ספקית האינטרנט משתמשת בפרוטוקולי ניתוב ברמות שונות (פרוטוקולי IP), כדי להעביר את הפאקטה (packet) דרך ספקי אינטרנט ברמות שונות (רמה 1, רמה 2, רמה 3), עד שהיא תגיע לשרת ה-DNS המבוקש.
  • שימו לב שבווינדוס, אם המחשב לא מקבל תשובת dns, הוא משתמש בפרוטוקולים מיוחדים בווינדוס של dns, שלא נדבר עליהם- אבל מוזמנים לקרוא: nbns, mdns, llmnr ועוד.
  • החיפושים בשרת ה-DNS: ברגע שהבקשה מגיעה לשרת ה-DNS, השרת מבצע חיפוש רקורסיבי כדי למצוא את כתובת ה-IP של הדומיין ynet.co.il. הוא מתחיל בשרת DNS של ישראל, עובר לשרת DNS של co, ואז מגיע אל השרת הסופי של ynet.co.il.
  • החזרת כתובת ה-IP: ברגע שהשרת DNS מוצא את כתובת ה-IP של ynet.co.il, הוא מחזיר אותה אל המחשב שלנו. המחשב יודע עכשיו לאיזה IP לפנות כדי לגשת לאתר.
  • ברגע שהמחשב שלנו קיבל את הכתובת ip שאילו הוא רוצה לגשת, הוא ישלח לשרת בקשת HTTP, הדפדפן יוציא את הבקשה עם פורט מסויים, ויחכה לתשובה. HTTP עובד מעל tcp. כך שהמחשב יחכה את כל הtimeout לפני שהוא מקבל תשובה, בבקשת HTTP הוא יעביר בheader-ים את הuser-agent של הדפדפן, בheader הHost את הדומיין שאילו הוא רוצה לפנות ועוד הדרים. אחרי כל התהליך, כאשר הבקשה תגיע לip של ynet, כנראה שיהיה שם רכיב שנקרא load balancer שמקבל המון פאקטות, ויודע לאיזה שרת http להעביר את הפאקטה שלנו, הרכיב עושה ביזור עומסים כדי לא להעמיס עם המון בקשות כמו שלנו על השרתים.
  • קבלת תשובת HTTP: השרת שמעביר את הבקשה דרך ה-Load Balancer, עובר דרך מערכת ה-backend של האתר ומפענח את הבקשה. בסוף הוא מחזיר תשובת HTTP, הכוללת את התוכן (כגון HTML, CSS, JS) המבוקש.
  • החזרת התשובה דרך הראוטר: הפאקטה תעבור בדיוק באותה הדרך שעברה לפני כן והבקשה תגיע בסוף לראוטר שלנו, הראוטר ישתמש בטבלת NAT כדי להחליף את הip והport-ים לנכונים וינתב אותה ישירות אלינו למחשב.
  • הצגת התוכן בדפדפן: הדפדפן מקבל את התשובה דרך ה-TCP socket הפתוח, ומציג את התוכן (כגון HTML, JS, CSS) כפי שהתקבל מהשרת, ומציג את האתר ללקוח.

נסו לעבור שוב על ההסבר הזה, הוא מתאר בצורה מפורטת את כל התהליך של גישה לאתר, ומסביר איך כל רכיב בתהליך משתלב על פי מודל השכבות.