מֶתֶג (בריבוי: מְתָגִים; באנגלית: Switch) הוא רכיב ברשת מחשבים המחבר בין צמתים שונים ברשת, בין אם הם מכשירי קצה (כגון מחשבים) ובין אם הם מרכיבי רשת בסיסיים (כגון רכזות). מטרת המתג היא להעביר הלאה (Forward), אל הפִתְחָה (port) המתאימה, חבילות נתונים שמתקבלות, כך שיוכלו להגיע ליעדן. פיתחה, בדרך כלל, היא נקודת כניסה ויציאה של חבילות מהמתג. מספר נקודות הכניסה והיציאה במתג יכול לנוע בין כניסות ויציאות בודדות, במקרה של מתג ביתי, ועד למאות כניסות ויציאות, במקרים של רשתות תקשורת גדולות.
המונח "מתג" שימש בעבר[1] לציין ציוד הפועל כחלק משכבת הקו של מודל ה-OSI. מתגים אשר פועלים כך נקראים לרוב מתגי שכבה 2 ובתיעוד טכני מסומנים כ-L2, כאשר האות L מציינת את המילה Layer באנגלית, דהיינו שכבה.
מתג שכבה 2 מעביר חבילות נתונים בין הציוד שמחובר לכניסות השונות שלו באופן סלקטיבי על-פי כתובת MAC של היעד המבוקש שישנה בכל חבילת נתונים העוברת דרכו. לפי ההגדרה הקלאסית של שכבה 2 המתג מחבר בין שני חלקים או יותר של רשת מקומית, כאשר כל אחד מהם הוא מתחם התנגשות (collision domain) נפרד, אך הם מהווים מתחם שידור (Broadcast domain) אחד.
עם עליית התפוצה של ציוד לתקשורת נתונים, המונח "מתג" הפוך לשם כללי לרכיב המייצר רשת גדולה מצירוף של צמתים או רשתות. מכיוון שהרחבה של רשתות היא פעולה בסיסית ברשתות מקומיות, מכשיר מרובה פורטים אשר מעביר את חבילות הנתונים בהתאם לכתובת ה-IP נקרא מתג שכבה 3, וזאת מפני שכתובת זו כבר משויכת לשכבת הרשת של מודל ה-OSI שהיא השכבה השלישית. לעיתים מתגים יפעלו לפי מאפיינים של שכבות גבוהות יותר, כגון שכבה 4 ומעלה, ואף יכללו יכולות ניטור, סינון ואבטחת מידע; לחלקם גם תהיה יכולת לעבודה משותפת עם מתגים אחרים ברשת לטובת שרידות וגיבויים או לטובת ניהול משותף של חלקים גדולים ברשת.
אופן הפעולה של מתג אתרנט
בכדי להחליט לאיזה פורט להעביר הלאה את החבילות המתקבלות, המתג "לומד" באופן דינמי את כתובות ה-MAC של הרכיבים המחוברים לכל כניסה שלו על ידי קריאת נתוני הבקרה בחבילות הנתונים המגיעות אליו ושמירתן בטבלה פנימית הנקראת FDB (קיצור של Filtering Database).
כאשר חבילה מגיעה אל המתג, המתג בודק מה היא כתובת ה־MAC אליה מיועדת החבילה: אם הכתובת מוכרת למתג, היינו הכתובת נלמדה ורשומה ב FDB, הוא יעביר את החבילה אך ורק אל הכניסה שתוביל את החבילה ליעדה, אם הכתובת לא מוכרת, המתג יבצע "הצפה"(Flooding). זאת אומרת, שהמתג יעביר הלאה עותק של החבילה, לכל היציאות פרט לזו שממנה היא התקבלה. במקרה זה החבילה תגיע כמעט לכל התחנות ברשת המקומית, אך רק התחנה שבכתובת היעד של החבילה מופיעה כתובת ה-MAC שלה תשתמש בה.
מתג מאפשר למספר תעבורות שונות להתבצע דרכו במקביל, על ידי חיבור של כל שני קצוות המתקשרים ביניהם בנפרד (microsegmentation). שיטה זו מקטינה לאפס (כאשר לכל כניסה של המתג מחובר מחשב אחד) את מתחמי ההתנגשות (collision domain) ומאפשרת למחשבים שונים לתקשר בו-זמנית מבלי להמתין לסיום תשדורת בין מחשבים אחרים. בכך גדלה תפוקת הרשת.
ישנן שלוש שיטות בהן יכול לתפקד מתג להעברת נתונים:
Cut Through (קיצור דרך) – המתג קורא את הפתיח של חבילת הנתונים, וברגע שהוא יודע לאן עליו לשלוח את החבילה הוא מעביר אותה הלאה ללא בדיקה נוספת של תוכן החבילה. דרך זו היא המהירה ביותר, אך היא לא מאפשרת לוודא שחבילת הנתונים היא תקינה, ולכן הנתונים יעברו את כל הדרך שוב במקרה ונוצרה שגיאה בחבילת הנתונים.
Store and forward (שמור ושלח) – המתג יקרא את כל חבילת הנתונים, יוודא את תקינותה ורק אם היא תקינה יעביר אותה הלאה. שיטה זו איטית יותר מהקודמת מכיוון שהמתג מקבל את כל תוכן החבילה לפני שהוא מעביר אותה הלאה, אך היא מבטיחה שרק חבילות נתונים תקינות יעברו את המתג. שיטה זו דורשת שמירה זמנית (caching) של החבילות בזיכרון המתג.
error free cut-through (קיצור דרך ללא שגיאות) – כמו בטכנולוגיית cut through המתג קורא את הפתיח של חבילת הנתונים, וברגע שהוא יודע לאן עליו לשלוח את החבילה הוא מעביר אותה הלאה. אך בשיטה הזו המתג ממשיך לבדוק את התקשורת, ובאם הוא מגלה שגיאה בחבילת נתונים הוא מעביר את החיבור ממנו הגיעה החבילה למצב Store and forward ובודק כל חבילה שמגיעה מאותו המקור לפני שהוא מעביר אותה, כאשר מספר חבילות מאותו המקור הגיעו תקינות החיבור חוזר לפעול בשיטת Cut Through. שיטה זו מבטיחה את הטוב שבשני העולמות – כל עוד הרשת מתפקדת ללא שגיאות המתג מספק מהירות העברה מקסימלית, וברגע שמתגלה שגיאה הוא דואג לנפות חבילות נתונים שגויות.
מתגים מהווים המרכיב העיקרי של הרשתות המקומיות בזכות מספר טכנולוגיות שהוכנסו בהם ובעיקר איגוד מספר מחשבים לרשת מקומית וירטואלית (VLAN), והגדרה של רשתות מקומיות וירטואליות על ידי יותר ממתג אחד.
טבלת FDB
טבלת FDB, המכונה לעיתים קרובות טבלת MAC (קיצור של media access control), היא הטבלה שמחזיק המתג ומכילה מיפוי של כתובות MAC אל מזהה הסינון (FID Filtering Identifier) של היעד, היינו, מזהה של היעד שאליו בלבד תועבר החבילה הלאה. במקרה של מתג בסיסי מזהה זה יכול להיות מזהה של פתחה, פיזית של המתג אליו תועבר החבילה.
דוגמה לטבלת כתובות MAC
כתובת MAC
מזהה סינון (FID)
11-AD-CC-47-35-11
1
12-AD-CC-47-35-11
2
13-AD-CC-47-35-11
3
14-AD-CC-47-35-11
4
15-AD-CC-47-35-11
5
16-AD-CC-47-35-11
6
כאשר ברשת ה-LAN ישנם כמה מתגים, אפשר שכמה כתובות MAC יופנו לאותה הפתחה (אליו מחובר מתג נוסף המחובר לאותם רכיבים). לכל רשומה בטבלה זמן חיים מוגבל . אם לא נעשה בה שימוש פרק זמן מסוים (Ageing time) היא נמחקת. שימוש בטבלה נעשה באופן הבאː
לימוד – חבילות נכנסות משמשות ללימוד. כאשר חבילה נכנסת מכניסה מסוימת, המתג מניח שהתחנה ששלחה את החבילה מחוברת למתג באמצעות הכניסה בה הגיעה החבילה. לכן המתג יוצר שורה בטבלה בו משויכת כתובת המקור של החבילה למזהה הסינון של הכניסה בה היא נכנסה.
החלטה כיצד להעביר הלאה את חבילת הנתונים - אם כתובת היעד של החבילה נלמדה, היינו מופיעה בטבלה, החבילה תועבר הלאה על על גבי היציאה שמזהה הסינון שלה מופיע בטבלה עבור כתובת היעד של החבילה. אם כתובת היעד עדין לא נלמדה, עותק של החבילה יועבר הלאה על גבי כל אחד מין היציאות של המתג, פרט לפתחה עליה נכנסה.
באופן הזה, טבלת MAC מאפשרת למתג שליחת מידע למחשב היעד בלבד ולא לרשת כולה כפי שעושה רכזת (hub). למעשה, הטבלה היא אחד ההבדלים המרכזיים בין מתג לרכזת. עקב כך, פגיעה בתקינות טבלת ה-MAC או לחלופין היכולת לשתול בה רשומות מזויפות, מהווה יעד לתקיפות שמטרתן להעביר תעבורה המיועדת למחשב אחד ברשת דרך מחשב אחר, ובכך לאפשר למחשב הנוסף "להסניף" אותה באמצעות רחרחן. דוגמה לתקיפה על טבלת MAC ניתן למצוא ב-MAC flooding, שיטה המנסה למלא את כל הכניסות בטבלת ה-MAC בכתובות מזויפות כך שלמתג לא ייוותר מקום ללמוד את כתובות ה-MAC הקיימות באמת ברשת. כתוצאה מכך המתג יאלץ לעביר הלאה כל חבילה לכלל היציאות ולהציף את הרשת בחבילות.