מה זה Port? הסבר על רגל אחת
כששני מחשבים רוצים לתקשר זה עם זה באמצעות פרוטוקול ה- TCP/IP הם צריכים להחליט באיזה ערוץ להעביר את המידע. במילים אחרות, איך ידע מחשב בצד אחד שהמידע שהוא שולח אכן מגיע ליישום הנכון במחשב בצד השני, ואיך ידע המחשב בצד השני שהמידע שהוא מקבל אכן נובע מהמחשב הראשון ולאיזה יישום להעלות אותו (שכבת האפליקציה - השכבה ה- 7 במודל 7 השכבות - ה- OSI Model).
בין כל 2 מחשבים שמתקשרים ביניהם נוצר Session. למען האמת, ה- Session לא נוצר תמיד, אלא רק במידה ועובדים ביישום כלשהו שמשתמש בפרוטוקול העברת הנתונים שנקרא TCP, ולא בפרוטוקול ה- UDP. איך יודעים באיזה סוג פרוטוקול משתמש היישום? אם זה יישום שמחייב בדיקת העברת הנתונים, יישום אינטרנטי (בד"כ אבל לא תמיד) או יישום שמעביר קבצים - בד"כ הם יעבדו כברירת מחדל באמצעות TCP. אם מדובר ביישום ששואל שאלה ומצפה לתשובה (כמו DNS) או יישום שמכריז הכרזה ולא מחכה לתשובה (כמו למשל "שכנים ברשת"), אז בד"כ זה יהיה ב- UDP.
כל יישום שנותן שירותים מתוכנת להקשיב בערוץ תקשורת מסויים. הערוץ הזה נקרא PORT. כל יישום שמתוכנת לבקש שירות מתוכנת לפנות אל היישום שנותן את השירותים בערוץ הקבוע מראש, כלומר בפורט הקבוע והידוע מראש. למשל, תוכנת דואר אלקטרוני יודעת שכשהיא רוצה לשלוח דואר אל שרת הדואר עליה לפנות אל השרת בפורט 25. במידה והיא תנסה לפנות אל השרת בפורט אחר, לא יהיה שם אף אחד שיענה לה. דפדפן אינטרנט יודע שכדי לגלוש באינטרנט עליו לפנות לשרת האינטרנט בפורט 80, אחרת לא יענו לו. ואם אתה הולך לאתר מאובטח ב- SSL אז זה חייב להיות לפורט 443. ואם אתה מושך דואר, אז התוכנה שלך חייבת לפנות אל השרת בפורט 110. הבנתם את הרעיון.
התוכנה מצד הלקוח שואלת שאלה את השרת. למשל, דפדפן ישאל את השרת בפורט 80 "GET אתר אינטרנט שכתובתו היא ככה וככה", והשרת רוצה להחזיר תשובה, אבל הוא צריך לדעת לאן להחזיר. יתכן ובמחשב שלך רצות 10 תוכנות שונות שכל אחת מהן שולחת ומקבלת מידע. איך ידע המחשב שלך לאיזו תוכנה להעלות את המידע המתקבל? גם כן באמצעות פורט, אבל הפעם זהו פורט של קליינט, לא של שירות. השרת יחזיר תשובה אל הקליינט לאותו פורט שהקליינט מציין בתור פורט המוצא (בניגוד לפורט היעד שהוא השרת עצמו, נגיד פורט 80).
למשל, אתה גולש באינטרנט לאתר שכתובתו היא www.kuku.co.il פתחת דפדפן אל האתר. מה שקורה בקרע הוא שהמחשב שלך שולח פאקטים של בקשת מידע מהתחנה שלך אל השרת, אבל לא סתם מהתחנה אל השרת, אלא מפורט ספציפי על התחנה אל פורט ספציפי על השרת. במקרה שלנו, ייתכן והתחנה יצרה פאקט של מידע שיוצא מפורט (זוהי רק דוגמה) 1034 המקומי, אל פורט 80 של השרת, והכל מבוסס על פרוטוקול ה- TCP.
כשהשרת רוצה להחזיר את התשובה אל התחנה, הוא יעבד את פאקט התשובה שייצא מפורט 80 אצלו, אל פורט היעד- 1034 בתחנה, וגם כאן הכל ב- TCP.
הפורטים של השירותים הם ידועים וקבועים מראש: מ- 1 ועד 1024.
הפורטים של הקליינטים הם דינאמיים ונעים בטווח מסויים: מ- 1024 ועד הרבה יותר גבוה- סביב ה- 49,000.
בעיקרון, יכולים להיות עד 65,535 פורטים למחשב, וחלקם הגדול כבר תפוס ע"י יישומים שונים. למשל, פורט תפוס עבור שרת HTTP ופורט אחר תפוס עבור שרת SMTP ופורט אחר תפוס עבור שרת POP3 וכו' וכו', יש גם תוכנות בבעלות פרטית כמו למשל PcAnywhere, ICQ, Kazaa וכו'', שכל אחת "השתלטה" על פורט פנוי ותפסה עליו בעלות. כך שאם אתה מתקין אצלך PcAnywhere וגם אצל מחשב של חבר ורוצה להתחבר אליו, המחשב שלך "יודע" שהוא צריך ללכת לפורט 5631 או 5632 כי זה הפורט בו מאזינה התוכנה.
קרדיט לאתר שאני לא יודע את שמו וזה גם לא רלוונטי