PDA

View Full Version : سوال: Session Id چیست؟



bluebird_shahla
سه شنبه 28 آذر 1391, 13:05 عصر
Session Id چیست؟

mohsen_f_b
سه شنبه 28 آذر 1391, 13:37 عصر
سلام

مقدم ای بر Session

در علم رایانه به خصوص شبکه،Session یک مبادله ی اطلاعات متقابل و نیمه دایمی است که به عنوان یک دیالوگ یا مکالمه (conversation) یا نشست (meeting) بین دو یا چند ابزار ارتباطی یا بین یک کامپیوتر و یک کاربر نیز شناخته می شود.یک session در یک نقطه ی خاصی از زمان بوجود می آید و در نقطه بعدی از زمان از بین می رود.
یک session بوجود آمده ی ارتباطی ممکن است دربردارنده ی بیش از یک پیغام در هر مسیر باشد.
Communication session ها ممکن است به عنوان بخشی از پروتکل ها و سرویسها در یکی از لایه های application ، sessionو transport در مدل OSI (مدل هفت لایه OSI که شامل لایه های Application، Presentation ، Session ، Transport ، Network، Data-Link و لایه های فیزیکی می شود.) پیاده سازی شوند.

پیاده سازی نرم افزاری

TCP Sessionها معمولا با استفاده از child processes و/یا multithreading در نرم افزار پیاده سازی می شوند. به این صورت که هنگامیکه یک کامپیوتر یک Session را بوجود می آورد یا به آن ملحق می شود ،یک Process یا Thread جدید بوجود می آید. Http Session ها معمولا به صورت یک thread برای هر session پیاده سازی نمی شوند بلکه برای پیاده سازی آنها ازیک database با اطلاعات مربوط به وضعیت هر session استفاده می شود.مزیت چند process یا چند thread، پیچیدگی نرم افزار در عین آسودگی خیال است زیرا هر thread نمونه ای از پیشینه و متغیر های کپسوله شده ی خودش می باشد. اما ایراد آن میزان پردازش بالا بر حسب منابع سیستم است و اینکه session ممکن است در صورت restart شدن سیستم از هم گسیخته شود.
هنگامی که یک کاربر می خواهد به یک سروراز بین چند سرور متصل شود ، مشکل به خصوصی در برقرار کردن سازگاری در زمانی که سرور وضعیت session را نگه می دارد بوجود می آید.کاربر یا باید در طول زمان وجود sessionبه همان سرور متصل باشد یا اینکه سرور ها باید اطلاعات session سمت سرور را از طریق یک فایل سیستم یا دیتابیس به اشترک گذاشته شده ، به یکدیگر انتقال دهند. در غیر این صورت کاربر ممکن است به سرور دیگری به جز آن سروری که session را با آن بوجود آورده ،متصل شود و باعث بوجود آمدن مشکلات جدید شود زیرا سرور جدید به وضعیت نگه داشته شده ی session دسترسی ندارد.

Web Session های سمت سرور

sessionهای سمت سرور سودمند و کارا هستند اما کار کردن با آنها می تواند سخت باشد و در سیستم های تعبیه شده ی فاقد فضای ذخیره سازی از آنها استفاده نمیشود.
یک متد برای استفاده از sessionهای سمت سرور در سیستم هایی که دارای ذخیره ی زیاد نیستند این است که بخشی از RAM را برای ذخیره ی داده های session رزرو کنیم. این روش برای مواردی که تعداد محدودی کاربر دارند کاربرد دارد.(مثلا" یک مسیریاب(router) یا accpess point با دسترسی کم یا دسترسی نه بیشتر از یک کاربر در یک زمان.)

Web Sessionهای سمت کاربر

sessionهای سمت کاربر از cookie و تکنیک های پنهانی( cryptographic techniques )استفاده می کنند.

چگونه کار می کنند

در انتهای اجرای یک صفحه ی وب داینامیک ،مقدار متغیر های session حساب می شود و به کاربر از طریق یک cookie منتقل می شود.در این مرحله وضعیت session به طور کامل و فقط روی فایل سیستم کاربر (یا RAM) قرار میگیرد.
برای هر درخواست(request) موفق کوکی به سرور فرستاده می شود و سرور از آن برای یادآوری وضعیت برنامه درمورد آن کاربر خاص استفاده می کند.
هرچند این مکانیزم در بعضی زمینه ها ممکن است بسنده باشد اما در مواردی که قابلیت اعتماد و امنیت ضروری هستند، ممکن است پذیرفته نشود. در صورت تمایل به استفاده از sessionهای سمت کاربر به جای سمت سرور موارد زیر باید تضمین شود:

1. confidentiality(قابلیت اعتماد((اختیاری): به جز سرور هیچ چیز دیگری نباید به اطلاعات session دسترسی داشته باشد.
2. data integrity(امنیت داده) : به جز سرور هیچ چیز دیگری نباید داده های Session را دستکاری کند چه عمدا" و چه تصادفا".
3. authenticity(سندیت) : به جز سرور هیچ چیز دیگری نباید بتواند Session معتبر ایجاد کند.

برای دستیابی به موارد بالا ، داده های Session ابتدا باید رمز شوند و سپس سمت کاربر به خاطر سپرده شوند و با استفاده از ابزارهای دیگر پنهانی از تغییر این اطلاعات توسط هر شخص دیگری باید جلوگیری به عمل بیاید.
اگر برای مدتی کاربر با سایت کار نکند یا اینکه سایت را ببند ،session اصطلاحا expire می شود و این expiration time را می توانیم خودمان تعیین کنیم . در ASP.NET به صورت پیش فرض session expiration، 15 دقیقه می باشد.

Cookieless Session چیست؟

همانطور که گفته شد sessionها از روش دیگری نیز استفاده می کنند و آن هم بدون استفاده از cookie و به این sessionها Cookieless Sessions گفته می شود .این session ها با ترفندی هوشمندانه پیاده سازی شده اند.
هنگامی که یک کاربر اولین درخواست را برای یک وب سایت در حالت فعال بودنcookieless می فرستد،URLی که برای درخواست کاربر استفاده می شود به طور اتوماتیک طوری تعریف می شود که شامل session ID فرد باشد.برای مثال، اگر یک کاربر درخواستی به Http://mysite.com/mypage.aspx می دهد ، این درخواست به صورت اتوماتیک به صورت زیر تعریف می شود:

http://mysite.com/(nd4vqe2fnbmnwi451fwvda45)/mypage.aspx

آن قسمتی از URL که در پرانتز ظاهر می شود session ID برای کاربر جاری است.
بعد از اینکه session ID در URL  درخواست اولین صفخه جاسازی شد، این session ID با کاربر در طی بازدیدش از وبسایت همراه خواهد بود. Session ID با هر بار کلیک کردن کاربر روی لینک جدید یا submit کردن یک فرم به عنوان بخشی از URL پایه عبور می کند. و به این دلیل که Session ID از یک صفحه به صفحه ای دیگر عبور می کند، گشت و گذار کاربر می تواند بدون استفاده از کوکی پیگیری شود.بنابراین با استفاده از cookieless state می توان از مزایای session state بدون نگرانی در مورد اینکه مرورگر کاربر cookie را ساپورت می کند یا خیر بهره مند شد.


درواقع هز کاربر با مراجعه اول به سایت شما یک Session براش ایجائ میشه که بشه ردگیریش کرد. برای دسترسی به اینکه کاربر چه کارهای انجام میده و یا اینکه الان هنوز در سیستم حضور دارد یا خیر و خیلی کارهای دیگه استفاده می شود.

موفق باشید