בתקשורת נתונים, שקע[1] (באנגלית: Network socket) הוא נקודת קצה (endpoint) עבור זרם נתונים בתקשורת בין תהליכים על גבי רשת מחשבים. כיום רוב התקשורת בין מחשבים מבוססת על ה-Internet Protocol; לפיכך רוב השקעים הם מסוג Internet socket.
socket API הוא ממשק תכנות יישומים המסופק בדרך כלל על ידי מערכת ההפעלה, ומאפשר ליישומי תוכנה לשלוט ולהשתמש בשקעים. ממשקי תכנות יישומים ל-Internet socket בדרך כלל מבוססים על התקן של Berkley sockets.
כתובת שקע (socket address) היא שילוב של כתובת IP ומספר פורט. ניתן להקביל זאת לשיחת טלפון שבה כל קצה מזוהה על ידי מספר טלפון וקידומת מסוימת. בהתבסס על כתובת זו, internet sockets מספקים חבילות נתונים (data packets) נכנסות אל התהליך או התהליכון המתאים של יישום.
internet socket מאופיין על ידי צירוף ייחודי של הבאים:
שקע ספציפי מזוהה על ידי מערכת ההפעלה והתוכנית שיצרה אותו, באמצעות מספר שלם ייחודי הנקרא 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) ומידע נלווה נוסף.