Session – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
הרחבה
הרחבה
שורה 17:
 
רוב הסשנים שנפתחים בין [[שרת-לקוח|שרת ללקוח]] מנוהלים ב[[שכבת התעבורה של מודל ה-OSI|שכבת התעבורה]] – חיבור אחד עבור כל סשן. עם זאת, כל שלב (phase) בסשן של טרנזקציית רשת ([[HTTP]]) יוצר חיבור נפרד. שימור ההמשכיות בין שלבים דורש שימוש במזהה סשן (session ID). המזהה מוטבע בתוך האלמנטים <code><”…”=a href></code> ו-<code><form></code> של שפת ה-[[HTML]] ב[[דף אינטרנט דינמי|דפי אינטרנט דינמיים]], כך שהוא מועבר חזרה אל ה-[[Common Gateway Interface|CGI]] ב[[צד-שרת|צד השרת]]. לאחר מכן ה-CGI משתמש ב-session ID על מנת להבטיח את המשכיות הסשן בין שלבי הטרנזקציה. אחד היתרונות של חיבור נפרד עבור כל שלב הוא בכך שזה עובד טוב על פני חיבורים עם [[רוחב פס]] נמוך.
 
== מימושי תוכנה ==
 
סשנים בפרוטוקול [[TCP]] בדרך כלל [[מימוש|ממומשים]] ברמת ה[[תוכנה]], באמצעות יצירת [[תהליך (מדעי המחשב)|תהליכים]] בנים (child processes) או על ידי שימוש בריבוי [[תהליכון|תהליכונים]] (multithreading). במקרה זה, עבור כל סשן חדש שנוצר נפתח תהליך או תהליכון חדש. סשנים בפרוטוקול [[HTTP]] בדרך כלל לא ממומשים על ידי שימוש בתהליכון עבור כל סשן, אלא על ידי שימוש ב[[בסיס נתונים]] אשר שומר מידע אודות ה[[מצב (מדעי המחשב)|מצב]] של כל סשן. היתרון בשימוש בריבוי תהליכים או תהליכונים הוא בכך שהלוגיקה של התוכנה יכולה להיות פשוטה יחסית, מכיוון שכל תהליכון הוא יישות בעלת היסטוריה משלה ועם [[משתנה (תכנות)|משתנים]] משלה שהיא [[כימוס|מכמסת]]. החיסרון הוא בתקורת משאבים גבוהה, ובכך שהסשן יכול לאבד במקרה של הפעלה מחדש של המערכת (ראו: [[persistence]]).
 
במקרים בהם הלקוח עשוי להתחבר לכל אחד מהשרתים ב[[אשכול מחשבים|אשכול]] (cluster) של שרתים, נוצרת בעיה מיוחדת בשימור ההמשכיות כאשר השרתים חייבים לשמור מידע אודות מצב הסשן. במקרה כזה חייבים להכווין את הלקוח לאותו השרת למשך כל זמן הקיום של הסשן, או שהשרתים חייבים להעביר את נתוני הסשנים בצד השרת באמצעות [[מערכת קבצים]] משותפת או [[בסיס נתונים]] משותף. אחרת הלקוח עשוי להתחבר מחדש לשרת שונה מזה שהתחיל איתו את הסשן, מה שיגרום לבעיות כאשר לשרת החדש אין גישה אל נתוני הסשן שנשמרו בשרת הקודם.
 
== סשנים של צד לקוח בפרוטוקול HTTP ==