שקע (תקשורת מחשבים)

בתקשורת נתונים, שקע[1]אנגלית: Network socket) הוא נקודת קצה (endpoint) עבור זרם נתונים בתקשורת בין תהליכים על גבי רשת מחשבים. כיום רוב התקשורת בין מחשבים מבוססת על ה-Internet Protocol; לפיכך רוב השקעים הם מסוג Internet socket.

socket API הוא ממשק תכנות יישומים המסופק בדרך כלל על ידי מערכת ההפעלה, ומאפשר ליישומי תוכנה לשלוט ולהשתמש בשקעים. ממשקי תכנות יישומים ל-Internet socket בדרך כלל מבוססים על התקן של Berkley sockets.

כתובת שקע (socket address) היא שילוב של כתובת IP ומספר פורט. ניתן להקביל זאת לשיחת טלפון שבה כל קצה מזוהה על ידי מספר טלפון וקידומת מסוימת. בהתבסס על כתובת זו, internet sockets מספקים חבילות נתונים (data packets) נכנסות אל התהליך או התהליכון המתאים של יישום.

צילום מסך של הרצת הפקודה Netstat להצגת השקעים הפעילים ב-Windows 7

internet socket מאופיין על ידי צירוף ייחודי של הבאים:

  • כתובת שקע מקומית (local socket address): כתובת IP מקומית ומספר פורט.
  • כתובת שקע מרוחקת (remote socket address): קיימת רק עבור שקעים מבוססי TCP. כתובת זו נדרשת מאחר ששרת TCP יכול לשרת כמה לקוחות במקביל. השרת יוצר שקע אחד עבור כל לקוח, ושקעים אלה חולקים את אותה כתובת שקע מקומית.
  • פרוטוקול: אחד מהפרוטוקולים של שכבת התעבורה, כדוגמת UDP ,TCP או אחר[2].

שקע ספציפי מזוהה על ידי מערכת ההפעלה והתוכנית שיצרה אותו, באמצעות מספר שלם ייחודי הנקרא socket identifier או socket number. מערכת ההפעלה מעבירה את חבילות ה-IP הנכנסות אל התוכנית המתאימה באמצעות חילוץ המידע אודות הכתובת של השקע מתוך הכותרות (headers) של פרוטוקול ה-IP ושל פרוטוקול התעבורה, ומסירה את הכותרות מהנתונים של שכבת היישום.

במסמך ה-Request for Comments, Internet Standards של ארגון ה-IETF, כמו גם בספרי לימוד רבים, המושג socket מתייחס לישות המזוהה על ידי מספר שקע (socket number) ייחודי. בספרי לימוד אחרים, המושג socket מתייחס לכתובת שקע מקומית, כלומר "השילוב של כתובת IP ומספר פורט".

ההגדרה המקורית של socket מתוך RFC 147 משנת 1971, בהתייחס ל-ARPANET:

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

עם זאת, כיום התקשורת בין שקעים היא דו-כיוונית.

במערכות הפעלה דמויות יוניקס ובמערכות הפעלה Microsoft Windows, ניתן להשתמש בכלי שורת הפקודה netstat על מנת לקבל את רשימת כל השקעים המבוססים (established sockets) ומידע נלווה נוסף.

קישורים חיצוניים

[עריכת קוד מקור | עריכה]
  • All About Sockets - מתוך המדריך הרשמי לשפת Java באתר של Oracle. (באנגלית)

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ שֶׁקַע במילון טכנולוגיית המידע: מולטימדיה (תשס"ד), באתר האקדמיה ללשון העברית
  2. ^ לדוגמה פורט 53 בפרוטוקול TCP, ופורט 53 בפרוטוקול UDP הם שקעים שונים ונפרדים.