למונח שרת (באנגלית: Server) שתי משמעויות הקשורות קשר הדוק ביניהן:
-
שרת הוא תוכנת מחשב המספקת שירותים לתוכנות אחרות, המכונות תוכנות לקוח (Client).
-
שרת הוא גם מחשב המריץ תוכנת שרת (אחת או יותר), ומספק שירותים למחשבים אחרים. לרוב, דרישות החומרה ממחשב זה גבוהות יותר מדרישות החומרה עבור מחשב שולחני רגיל שאיננו מתפקד כשרת. בנוסף, עשויות להיות דרישות מיוחדות בתחומי הזמינות, השרידות, הגיבוי ועוד.
תוכנת הלקוח יכולה להימצא באותו מחשב כמו תוכנת השרת או במחשב אחר. ספריות דינמיות וטכנולוגיות רכיבים למיניהן הן דוגמאות לתוכנות שרת שפועלות בדרך-כלל באותו מחשב שבו פועלת תוכנת הלקוח, בעוד ששרתי אינטרנט לסוגיהם מיועדים למצבים שבהם תוכנת הלקוח ותוכנת השרת פועלות במחשבים שונים. מערכות שרתי מסדי-נתונים מתוכננות גם הן עבור שרתים מרוחקים (Remote computer, כינוי למצב שבו תוכנת השרת נמצאת על מחשב אחר מאשר המחשב המקומי, Local computer).
תוכנת שרת מתאפיינת בכך שהיא פועלת על בסיס של האזנה לבקשה (request), והחזרת תגובה (response) לבקשה, שניהם בפרוטוקול שנקבע מראש. כיוון שבקשה עשויה להגיע בכל עת, על תוכנת שרת לפעול תמיד, בהמתנה לבקשה, להבדיל מתוכנת לקוח, שהמשתמש מביא לסיום פעולתה עם גמר השימוש בה.
השרתים הם ביסודם תוכנה המבצעת את השירות הנדרש. ככל תוכנה, גם תוכנת השרת זקוקה למחשב פיזי שעליו היא מתבצעת. ייתכן לפיכך מצב שבו שרתים אחדים מתארחים על מחשב אחד, או לחלופין שרת אחד שמשתרע על מחשבים אחדים עקב העומס הרב המוטל עליו. חוות שרתים עשויה להכיל שרתים ומחשבים רבים מאוד, וניתן גם לכווץ אותה למחשב חזק המסוגל להכיל שרתים רבים. לעומת זאת ישנם מקרים בהם תוכנת השרת אינה מותקנת על מחשב סטנדרטי אלא על התקן (appliance) המהווה כעין "קופסה שחורה" שזה ייעודה היחידי.
מערכות הפעלה מקובלות לשרתים הן Windows NT Server לדורותיה, יוניקס ולינוקס.
ארכיטקטורת שרת-לקוח עוסקת בחלוקת העבודה בין השרתים ובין תוכנות הלקוח (client) הפונות אליה.