עודכן לפני חודש
בין הפורטים המיוחסים השמורים לשירותי מערכת לבין הפורטים הזמניים המשמשים לחיבורים קצרי מועד, משתרע שטח ביניים נרחב: 48,127 מספרי פורט שמה שמניע אותם מוזר יותר מאכיפה. מה שמניע אותם הוא הסכמה.
פורטים רשומים (1024–49151) עובדים מכיוון שמפתחים הסכימו ביניהם לכבד את בחירותיו של כל אחד. MySQL תפס את 3306. PostgreSQL לקח את 5432. Redis חטף את 6379. אף אחד לא מכריח אתכם לכבד טענות אלה. האינטרנט לא יעצור אתכם מלהריץ MySQL על פורט 5432 — אבל תבלבלו כל מי שמצפה למסד נתונים של PostgreSQL שם, וזה עונש מספיק כשלעצמו.
קו ההרשאות
פורט 1024 מסמן גבול שמשמעותו גדולה ממה שהמספר שלו מרמז.
מתחתיו, כדי לכבול לפורט נדרשת גישת root. זה מגן על שירותים קריטיים — לא ניתן להתחזות ל-SSH daemon בפורט 22 אלא אם כבר שולטים במערכת. מעליו, כל משתמש יכול לתבוע כל פורט. מפתח שמתקין PostgreSQL על המחשב הנישא שלו יכול להפעיל אותו על 5432 ללא בקשות sudo או תיבות דו-שיח של הרשאות.
נגישות זו מסבירה מדוע מסדי נתונים, שרתי יישומים וכלי פיתוח מתכנסים בטווח הרשום. הם זקוקים לפורטים מתוקננים לצורך זיהוי, אך גם צריכים לפעול ללא הרשאות מנהל. הטווח הרשום מציע את שניהם.
פורטים שהפכו לזהויות
3306 — MySQL
הפורט של MySQL נפוץ כל כך עד שספריות חיבורים קובעות אותו כברירת מחדל ללא כל הכרזה. מפתחים לעיתים קרובות משמיטים לחלוטין את מספר הפורט מ-URL-ים של מסדי נתונים, בהנחה ש-3306 מובן מאליו. כללי חומת האש מפנים אליו בשמו. איש לא תיעד מדוע בחרו ב-3306 — זה פשוט המספר שהפך בלתי נפרד מהתוכנה.
5432 — PostgreSQL
PostgreSQL רשם את 5432 ב-IANA כפורט ברירת המחדל שלו. כמו רוב הקצאות הפורטים, המספר הספציפי לא נושא משמעות מיוחדת — הוא היה פנוי, הם תבעו אותו, ומיליוני פריסות תלויות כעת בבחירה השרירותית הזו.
6379 — Redis
הפורט של Redis מאיית MERZ על לוח מקשי טלפון — מילה שטבע היוצר, סלבטורה סנפיליפו, לאחר שצפה בשחקנית הטלוויזיה האיטלקית אלסיה מרץ אומרת משהו שמצא מגוחך. בקרב חבריו, "MERZ" הפך לציין משהו כמו "ערך ה-hack": לעשות משהו מרשים מבחינה טכנית שהוא גם, בו-זמנית, חסר כל תכלית. כשנזקק למספר פורט עבור Redis, לא התקשה להחליט.1
הבחירה השרירותית הזו — שנולדה מבדיחה פנימית ולא מדיוני ועדה — הפכה לתקן אוניברסלי. מפתחי backend ברחבי העולם מזהים את 6379 באופן מיידי, מבלי לדעת שהם מכבדים מילה שנטבעה לתיאור חוכמת-סרק טכנולוגית.
8080 — HTTP חלופי
כשפורט 80 כבר תפוס, 8080 הוא החלופה הטבעית. הדפוס מתרחב: 8443 עבור HTTPS כשפורט 443 תפוס, 8000 ו-8888 עבור שרתי פיתוח. טווח ה-8000 הפך לבעל משמעות סמנטית — תעבורה על 8080 אומרת לכם "יישום ווב, כנראה לא סביבת ייצור" ללא שום בדיקה נוספת.
רישום ללא אכיפה
IANA מנהלת רישום של הקצאות פורטים. ניתן להגיש בקשה עם הפורט הרצוי, הפרוטוקול ותיאור היישום. הם יבדקו התנגשויות, ואם הפורט פנוי — יוסיפו את הרשומה שלכם לרשימה.
אבל הרשימה היא ייעוצית בלבד. שום דבר לא מונע מכם להתעלם ממנה. יישומים רבים בשימוש נרחב מעולם לא רשמו רשמית את הפורטים שלהם — הם פשוט תיעדו ברירת מחדל ונתנו לאימוץ לעשות את השאר. הרישום מתעד חלק מהמוסכמות, בעוד שאחרות חיות אך ורק בידע הקהילתי.
כך נוצרת מערכת בעלת שכבות:
- לחלק מהפורטים יש גם רישום IANA וגם אימוץ אוניברסלי (MySQL, PostgreSQL)
- לחלק יש רישום אך הכרה מוגבלת (פרוטוקולים נישתיים שמשרתים קהילות צרות)
- לחלק יש אימוץ אוניברסלי ללא רישום (מוסכמות לא רשמיות בטווח ה-8000)
מנגנון האכיפה אינו טכני. הוא חברתי. השתמשו בפורט שמתנגש עם מוסכמה מבוססת — והמשתמשים שלכם יתקשו עם תיעוד שמניח ברירות מחדל שונות. התוכנה שלכם תתנגש עם כללי חומת האש הקיימים. נטל התמיכה יגדל. ההשלכות הללו — לא צווי IANA — הן שמקיימות את המערכת.
מתי לעקוף ברירות מחדל
פורטי ברירת המחדל עובדים — עד שהם מפסיקים לעבוד.
מריצים כמה מופעי MySQL על שרת אחד? המופע השני זקוק לפורט שונה — 13306 היא בחירה נפוצה, שמשמרת את הסיומת המוכרת. סביבות ייצור לעיתים עוברות לפורטים שאינם ברירת המחדל כדי להבדיל אותן מסביבות פיתוח ביומני רשת, או לצורך עמידה בדרישות ציות המחייבות קונפיגורציות לא תקניות.
אך עקיפת ברירות המחדל כרוכה בעלויות. כל כלי שמניח את ברירת המחדל זקוק כעת לתצורה מפורשת. כל חבר צוות חדש זקוק לתיעוד שמסביר את הסטייה שלכם. כל סורק אוטומטי עלול להחמיץ את השירות שלכם.
החישוב פשוט: השתמשו בברירות המחדל הרשומות אלא אם יש לכם סיבה ספציפית לא לעשות כן — ואם כן, תעדו את החריגה בבירור.
החוזה החברתי
פורטים רשומים חושפים משהו אמיתי על הדרך שבה תשתית טכנית עובדת בפועל. לא דרך אכיפה נוקשה או עיצוב מושלם, אלא דרך הסכמה מצטברת. מישהו בוחר מספר. אחרים מכבדים את הבחירה. הבחירה הופכת למוסכמה. המוסכמה הופכת לציפייה. הציפייה הופכת לתשתית.
48,127 הפורטים בטווח הרשום מייצגים 48,127 הסכמות פוטנציאליות. חלקן מאופיינות דרך IANA. חלקן קיימות רק בתיעוד. חלקן חיות אך ורק בידע המשותף של מפתחים שלמדו ש-6379 פירושו Redis ו-5432 פירושו PostgreSQL.
המערכת הזו עובדת לא מפני שהיא אלגנטית, אלא מפני שהחלופה — כאוס, התנגשויות, קונפיגורציה מחדש מתמדת — גרועה יותר. טווח הפורטים הרשומים הוא שלום מוסכם, שנשמר על ידי אינטרס עצמי קולקטיבי ולא על ידי סמכות מרכזית.
שאלות נפוצות על פורטים רשומים
מדוע משתמשים רגילים יכולים לכבול לפורטים רשומים אך לא לפורטים ידועים?
הגבול בפורט 1024 הוא מוסכמת אבטחה של Unix. פורטים מתחת ל-1024 דורשים הרשאות root לכבילה, ומונעים ממשתמשים ללא הרשאות להתחזות לשירותי מערכת קריטיים כמו SSH (22) או HTTP (80). פורטים רשומים (1024–49151) אינם נושאים הגבלה זו, מה שמאפשר למפתחים להריץ מסדי נתונים ושרתי יישומים ללא גישה מנהלתית.
מה קורה אם שני יישומים מנסים להשתמש באותו פורט רשום?
היישום השני נכשל בהפעלה עם שגיאת "הפורט כבר בשימוש". לכן מוסכמות הפורטים חשובות — אם כולם מכבדים את תביעתו של MySQL ל-3306, התנגשויות נשארות נדירות. כשנדרשים מספר מופעים של אותו שירות, בוחרים פורטים חלופיים (13306, 23306) ומגדירים את הלקוחות במפורש.
האם כדאי לרשום את הפורט של היישום שלי ב-IANA?
רק אם אתם מצפים לאימוץ נרחב ורוצים למנוע התנגשויות עם שירותים רשומים אחרים. רוב היישומים לעולם אינם נרשמים רשמית — הם מתעדים פורט ברירת מחדל ונותנים לשימוש לבסס את המוסכמה. הרישום חשוב יותר לפרוטוקולים שעלולים להתנגש עם הקצאות קיימות מאשר ליישומים עם פריסה מוגבלת.
מדוע כל כך הרבה שירותים הקשורים לווב משתמשים בפורטים בטווח ה-8000?
8080 צמח כפורט "HTTP חלופי" טבעי — קרוב מספיק ל-80 כדי להיות קל לזכירה, רחוק מספיק כדי להימנע מהתנגשויות. זה ביסס את טווח ה-8000 כשטח ווב, מה שגרם למפתחים לבחור 8000, 8443, 8888 ומספרים דומים לשירותי HTTP. הדפוס אינו רשמי, אך מוכר לרבים.
מקורות
האם דף זה היה מועיל?