עבור לתוכן

שאלה | איך בקשה יודעת לחזור אליי לאחר שהגיעה לשרת

Featured Replies

פורסם

אני לומד ל- CCENT ועברתי כבר לא מעט חומר,

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

אני אדגים את העניין:

בקשת HTTP פשוטה, אני רוצה לקבל את האתר hwzone.co.il (סתם דוגמה),

הבקשה מכילה 2 כתובות אייפי, 2 כתובות MAC ו- 2 פורטים,

כתובות המקור - כתובת האייפי שלי (כתובת פנימית כמו שלמדתי), כתובת ה- MAC של ה- NIC שלי ופורט כלשהו שמוקצה עבור הבקשה,

כתובות היעד - כתובת האייפי של hwzone.co.il, כתובת ה- MAC של הראוטר שלי ופורט 80.

עכשיו השאלה היא כזאת:

כשהבקשה מועברת מהמחשב לראוטר היא מכילה את הכתובת הפנימית של אותו מחשב, אני למדתי שהכתובת הזאת לא משתנה והיא נשארת ככה עד שהיא מגיעה לשרת,

הכתובות היחידות שמשתנות הן כתובות ה- MAC וזה בהתאם לתחנות בהן הן עוברות עד שהבקשה מגיעה לאותו מחשב המריץ את שרת ה- WEB,

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

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

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

אבל אני חושב שכבר עברתי את החומר הזה (וזה לא יסתדר לי כשאני אלמד על הראוטר) אז די מציק לי.

תודה מראש,

אדיר.

פורסם

נתחיל בזה שאתה מתבלבל בין השכבות.

כתובת פורט שייכת לשכבת התעבורה ולפרוטוקול ‎TCP או UDP.

כתובת IP שייכת לשכבת הרשת וכמובן שייכת לפרוטוקול IP.

כתובת MAC שייכת לשכבת הקו (או הפיזית תלוי במודל) והיא שייכת למבנה הETHERNET.

במקרה של בקשת HTTP המחשב אורז חבילה למשלוח, נוצרת חבילת TCP בתוך אריזת IP.

כלומר יש לחבילה כתובת ופורט מקור, וכתובת ופורט יעד.

החבילה עוברת לשכבת הקו.

בשלב הזה מתווסף לה פתיח של שכבת הקו, והפתיח הזה מכיל את כתובת הMAC של המחשב השולח וכתובת הMAC של המחשב הנקבל בשכבה הזאת, שזה קרוב לוודאי הנתב שלך.

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

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

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

עכשיו איך הנתב יודע באיזה מחשב.

לצורך העניין קיים מנגנון שנקרא NAT (יש עוד כמה מנגנוני משנה PAT וNPAT, אבל זה לא העיקר). מנגנון הזה עובד בנתב הבייתי שלך.

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

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

IP פנימי - המחשב המקורי ששלח את החבילה.

פורט פנימי - הפורט המקורי ששלח את החבילה.

IP יעד - הIP שאליו נשלחה החבילה.

פורט יעד - הפורט שאליו נשלחה החבילה.

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

לאחר הרישום הנתב יחליף בחבילה את הIP הפנימי בIP החיצוני של הנתב. וכן יחליף את הפורט הפנימי בפורט השליחה החליפי (אם קיים).

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

כאשר הנתב יקבל חבילות מבחוץ, הן תיבדקנה מול הטבלה שפורטה קודם.

שוב יתבצעו החלפות של IP (במקרה הזה IP יעד) ושל הפורט. והחבילה תועבר למחשב המקורי.

פורסם
  • מחבר

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

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

תודה רבה אחי :)

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים