1. Бібліотека
  2. יציאות
  3. יסודות הפורטים

Оновлено 1 місяць тому

שני בתים. שישה עשר סיביות. כל מספר פורט בכל מנה החוצה את האינטרנט נכנס לתוך המרחב הזה — מגבלה המוטמעת ב-TCP וב-UDP מאז שנות ה-70, הקובעת את גבולות מערכת הפורטים כולה.

שש עשרה סיביות פירושן 2^16 ערכים אפשריים: בדיוק 65,536 פורטים, ממוספרים מ-0 עד 65,535. לא בערך. לא "עד". בדיוק כל כך הרבה, לנצח.

מדוע שש עשרה סיביות?

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

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

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

שלושת הטווחים

לא כל 65,536 הפורטים שווים. הרשות לשמות ומספרים באינטרנט (IANA) מחלקת אותם לשלושה טווחים, לכל אחד כללים שונים.

פורטים ידועים: 0–1023

אלה הם הפורטים השמורים. HTTP שוכן ב-80. HTTPS ב-443. SSH ב-22. DNS ב-53. SMTP ב-25. ההקצאות רשמיות, מתועדות ברישום של IANA, ומוכרות ברחבי העולם.

במערכות מסוג Unix, כריכה לפורטים אלה מחייבת הרשאות root. זה לא שרירותי — זו שאלה של סמכות.

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

קבלת פורט ידוע רשמי דורשת סטנדרטיזציה פורמלית — בדרך כלל RFC. לא פשוט מבקשים; מוכיחים שהפרוטוקול שלכם ראוי למקום קבוע באלף הראשון.

פורטים רשומים: 1024–49151

הפורטים המוסכמים. MySQL משתמש ב-3306. PostgreSQL ב-5432. MongoDB ב-27017. ההקצאות הללו נרשמות ב-IANA דרך תהליך קל יותר — שולחים טופס, מסבירים את השירות, נמנעים מהתנגשויות.

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

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

פורטים דינמיים: 49152–65535

הטווח הארעי. כשהדפדפן שלכם מתחבר לאתר, מערכת ההפעלה בוחרת פורט מקור מהטווח הזה — 52847, 61293, מה שזמין. הפורט קיים רק לאורך החיבור, ואז חוזר למאגר.

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

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

הרישום

IANA מנהלת את רישום שמות השירותים ומספרי פורט פרוטוקול התעבורה1 — הרשימה הסמכותית של מה משמעותו של כל פורט. הוא נגיש לציבור, מתעדכן באופן קבוע, ושימושי כשאתם בוהים בתעבורת רשת ותוהים מדוע משהו מתחבר לפורט 6379 (Redis).

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

המשמעות המעשית

גבול ההרשאות ב-1024 הוא החלטת אבטחה. אם אתם צריכים להפעיל שרת אינטרנט ללא root, יש לכם שתי אפשרויות: להשתמש בפורט מעל 1023 (כמו 8080) ולגרום למשתמשים להקליד אותו, או להפעיל פרוקסי הפוך בעל הרשאות שמעביר מ-80 לשירות שלכם חסר ההרשאות. רוב פריסות הייצור בוחרות באפשרות השנייה.

התנגשויות פורטים הן רמזים לאבחון. אם היישום שלכם נכשל עם "הכתובת כבר בשימוש", משהו אחר תפס את הפורט הזה קודם. על פורט 5432? בדקו אם יש PostgreSQL. פורט 3000? כנראה שרת פיתוח Node.js שמישהו שכח לעצור.

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

תעבורה בלתי צפויה על פורטים ידועים היא דגל אדום. חיבורים לפורט 23 (Telnet) במערכת שבה Telnet מושבת? משהו לא תקין. פורטים ידועים נושאים עמם ציפיות ידועות.

שאלות נפוצות על מספרי פורט

האם מגבלת 65,536 הפורטים יכולה אי פעם לגדול?

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

מדוע הכריכה לפורט 80 דורשת root ב-Linux אך לא ב-Windows?

Windows משתמש במודל אבטחה שונה. הרשאות מנהל עדיין נדרשות לפורטים ידועים, אך ל-Windows אין את ההבחנה root/non-root של Unix. העיקרון הבסיסי זהה: פורטים בעלי הרשאות דורשים משתמשים בעלי הרשאות.

מה קורה אם אשתמש בפורט רשום למשהו אחר?

אין אכיפה של הרישומים. ניתן להפעיל כל שירות על כל פורט שניתן לכרוך אליו. אך התעלמות ממוסכמות מזמינה בלבול — מי שמאבחן את הרשת שלכם יניח שפורט 3306 הוא MySQL.

מדוע הפורטים הארעיים מתחילים ב-49152?

הטווח 1024–49151 שמור לשירותים רשומים. התחלת פורטים ארעיים ב-49152 מבטיחה שפורט המקור שהדפדפן הקצה אקראית לא יתנגש עם פורט שיש לו משמעות ספציפית. הפער שומר על מרחבי השמות נפרדים.

מקורות

Ця сторінка була корисною?

😔
🤨
😃