เซสชั่น (วิทยาการคอมพิวเตอร์)

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

ในสาขาวิชาวิทยาการคอมพิวเตอร์และระบบเครือข่ายโดยเฉพาะอย่างยิ่งเป็นเซสชั่นคือการแลกเปลี่ยนข้อมูลชั่วคราวและการโต้ตอบระหว่างสองหรือมากกว่าอุปกรณ์สื่อสารหรือระหว่างคอมพิวเตอร์และผู้ใช้ (ดูการเข้าสู่ระบบเซสชั่น ) เซสชั่นถูกสร้างขึ้น ณ จุดใดเวลาหนึ่ง จากนั้นจึง 'ทำลาย' - ถึงจุดสิ้นสุด - ในภายหลัง เซสชันการสื่อสารที่สร้างขึ้นอาจเกี่ยวข้องกับข้อความมากกว่าหนึ่งข้อความในแต่ละทิศทาง โดยทั่วไป เซสชันจะเป็นแบบเก็บสถานะซึ่งหมายความว่าอย่างน้อยหนึ่งในฝ่ายที่สื่อสารจำเป็นต้องเก็บข้อมูลสถานะปัจจุบันและบันทึกข้อมูลเกี่ยวกับประวัติเซสชันเพื่อให้สามารถสื่อสารได้ เมื่อเทียบกับการไร้สัญชาติ การสื่อสาร โดยที่การสื่อสารประกอบด้วยการร้องขออิสระพร้อมการตอบสนอง

เซสชั่นที่จัดตั้งขึ้นเป็นความต้องการขั้นพื้นฐานในการดำเนินการการสื่อสารการเชื่อมต่อที่มุ่งเน้น เซสชันยังเป็นขั้นตอนพื้นฐานในการส่งในโหมดการสื่อสารแบบไร้การเชื่อมต่อ อย่างไรก็ตาม การส่งข้อมูลแบบทิศทางเดียวไม่ได้กำหนดเซสชัน [1]

การสื่อสารการขนส่งอาจจะนำมาใช้เป็นส่วนหนึ่งของโปรโตคอลและการบริการที่ชั้นสมัครที่ชั้นเซสชั่นหรือที่ชั้นการขนส่งในรูปแบบ OSI

  • ตัวอย่างชั้นแอปพลิเคชัน:
    • เซสชัน HTTPซึ่งอนุญาตให้เชื่อมโยงข้อมูลกับผู้เข้าชมแต่ละราย
    • Telnetเซสชั่นเข้าสู่ระยะไกล
  • ตัวอย่างเลเยอร์เซสชัน:
  • ตัวอย่างชั้นขนส่ง:
    • TCPเซสชั่นซึ่งเป็นความหมายเหมือนกันกับ TCP วงจรเสมือน , การเชื่อมต่อ TCP หรือจัดตั้ง TCP ซ็อกเก็ต

ในกรณีของโปรโตคอลการขนส่งที่ไม่ได้ใช้เลเยอร์เซสชันที่เป็นทางการ (เช่นUDP ) หรือเซสชันที่เลเยอร์แอปพลิเคชันโดยทั่วไปมักมีอายุสั้นมาก (เช่น HTTP) เซสชันจะได้รับการดูแลโดยโปรแกรมระดับสูงกว่าโดยใช้วิธีการที่กำหนดไว้ ในการแลกเปลี่ยนข้อมูล ตัวอย่างเช่น การแลกเปลี่ยน HTTP ระหว่างเบราว์เซอร์และโฮสต์ระยะไกลอาจรวมคุกกี้ HTTPที่ระบุสถานะ เช่นรหัสเซสชันที่ไม่ซ้ำกันข้อมูลเกี่ยวกับการตั้งค่าของผู้ใช้หรือระดับการอนุญาต

คิดว่าHTTP/1.0อนุญาตเพียงคำขอและการตอบสนองเพียงครั้งเดียวระหว่างเซสชัน Web/HTTP เดียว โปรโตคอลเวอร์ชันHTTP/1.1ปรับปรุงสิ่งนี้โดยทำCommon Gateway Interface (CGI) ให้สมบูรณ์ ทำให้ง่ายต่อการดูแลเว็บเซสชันและสนับสนุนคุกกี้ HTTPและการอัปโหลดไฟล์

เซสชันไคลเอนต์-เซิร์ฟเวอร์ส่วนใหญ่ได้รับการดูแลโดยเลเยอร์การขนส่ง - การเชื่อมต่อเดียวสำหรับเซสชันเดียว อย่างไรก็ตาม แต่ละขั้นตอนการทำธุรกรรมของเซสชันเว็บ/HTTP จะสร้างการเชื่อมต่อที่แยกจากกัน การดูแลรักษาความต่อเนื่องในเซสชั่นระหว่างขั้นตอนต้องมีID เซสชั่น ID เซสชั่นถูกฝังอยู่ภายในที่ <a HREF> หรือ <FORM> การเชื่อมโยงของหน้าเว็บแบบไดนามิกเพื่อให้มีการส่งกลับไปยังซีจี CGI จะใช้รหัสเซสชันเพื่อให้แน่ใจว่าเซสชันต่อเนื่องระหว่างขั้นตอนธุรกรรม ข้อดีอย่างหนึ่งของการเชื่อมต่อแบบหนึ่งต่อเฟสคือใช้งานได้ดีกับการเชื่อมต่อแบนด์วิธ (โมเด็ม) ที่มีแบนด์วิดธ์ต่ำ

การใช้งานซอฟต์แวร์

โดยทั่วไปแล้ว เซสชัน TCP จะถูกใช้งานในซอฟต์แวร์โดยใช้กระบวนการย่อยและ/หรือมัลติเธรดโดยที่กระบวนการหรือเธรดใหม่จะถูกสร้างขึ้นเมื่อคอมพิวเตอร์สร้างหรือเข้าร่วมเซสชัน โดยทั่วไป เซสชัน HTTP จะไม่ถูกใช้งานโดยใช้หนึ่งเธรดต่อเซสชัน แต่ใช้ฐานข้อมูลที่มีข้อมูลเกี่ยวกับสถานะของแต่ละเซสชัน ข้อได้เปรียบจากหลายกระบวนการหรือหลายเธรดคือความซับซ้อนที่ผ่อนคลายของซอฟต์แวร์ เนื่องจากแต่ละเธรดเป็นอินสแตนซ์ที่มีประวัติของตัวเองและตัวแปรที่ห่อหุ้ม ข้อเสียคือค่าใช้จ่ายจำนวนมากในแง่ของทรัพยากรระบบ และเซสชันอาจถูกขัดจังหวะหากระบบรีสตาร์ท

เมื่อไคลเอนต์อาจเชื่อมต่อกับเซิร์ฟเวอร์ใด ๆ ในคลัสเตอร์ของเซิร์ฟเวอร์ จะพบปัญหาพิเศษในการรักษาความสอดคล้องเมื่อเซิร์ฟเวอร์ต้องรักษาสถานะเซสชัน ไคลเอ็นต์ต้องถูกนำไปยังเซิร์ฟเวอร์เดียวกันในช่วงเวลาของเซสชัน หรือเซิร์ฟเวอร์ต้องส่งข้อมูลเซสชันฝั่งเซิร์ฟเวอร์ผ่านระบบไฟล์ที่ใช้ร่วมกันหรือฐานข้อมูล มิฉะนั้น ไคลเอ็นต์อาจเชื่อมต่อใหม่ไปยังเซิร์ฟเวอร์อื่นที่ไม่ใช่เซิร์ฟเวอร์ที่เริ่มต้นเซสชันด้วย ซึ่งจะทำให้เกิดปัญหาเมื่อเซิร์ฟเวอร์ใหม่ไม่สามารถเข้าถึงสถานะที่เก็บไว้ของเซิร์ฟเวอร์เก่าได้

เซสชันเว็บฝั่งเซิร์ฟเวอร์

เซสชันฝั่งเซิร์ฟเวอร์มีประโยชน์และมีประสิทธิภาพ แต่อาจเป็นเรื่องยากที่จะจัดการร่วมกับระบบโหลดบาลานซ์/ความพร้อมใช้งานสูง และไม่สามารถใช้งานได้เลยในบางระบบฝังตัวที่ไม่มีที่เก็บข้อมูล ปัญหาการโหลดบาลานซ์สามารถแก้ไขได้โดยใช้ที่เก็บข้อมูลที่ใช้ร่วมกันหรือโดยการใช้การเพียร์แบบบังคับระหว่างไคลเอนต์แต่ละรายและเซิร์ฟเวอร์เดียวในคลัสเตอร์ แม้ว่าสิ่งนี้อาจทำให้ประสิทธิภาพของระบบและการกระจายโหลดลดลง

วิธีการใช้เซสชันฝั่งเซิร์ฟเวอร์ในระบบที่ไม่มีที่เก็บข้อมูลขนาดใหญ่คือการสำรอง RAM ส่วนหนึ่งเพื่อจัดเก็บข้อมูลเซสชัน วิธีนี้ใช้ได้กับเซิร์ฟเวอร์ที่มีไคลเอนต์ในจำนวนจำกัด (เช่น เราเตอร์หรือจุดเชื่อมต่อที่มีการเข้าถึงไม่บ่อยหรือไม่ได้รับอนุญาตไปยังไคลเอนต์มากกว่าหนึ่งเครื่องในแต่ละครั้ง)

เซสชันเว็บฝั่งไคลเอ็นต์

เซสชันฝั่งไคลเอ็นต์ใช้คุกกี้และเทคนิคการเข้ารหัสเพื่อรักษาสถานะโดยไม่ต้องจัดเก็บข้อมูลมากบนเซิร์ฟเวอร์ เมื่อนำเสนอหน้าเว็บแบบไดนามิก เซิร์ฟเวอร์จะส่งข้อมูลสถานะปัจจุบันไปยังไคลเอนต์ (เว็บเบราว์เซอร์) ในรูปแบบของคุกกี้ ไคลเอนต์บันทึกคุกกี้ในหน่วยความจำหรือบนดิสก์ ในแต่ละคำขอที่ต่อเนื่องกัน ไคลเอ็นต์จะส่งคุกกี้กลับไปยังเซิร์ฟเวอร์ และเซิร์ฟเวอร์จะใช้ข้อมูลเพื่อ "จดจำ" สถานะของแอปพลิเคชันสำหรับไคลเอ็นต์เฉพาะนั้น และสร้างการตอบสนองที่เหมาะสม

กลไกนี้อาจทำงานได้ดีในบางบริบท อย่างไรก็ตาม ข้อมูลที่เก็บไว้ในไคลเอนต์มีความเสี่ยงที่จะถูกดัดแปลงโดยผู้ใช้หรือโดยซอฟต์แวร์ที่สามารถเข้าถึงคอมพิวเตอร์ไคลเอนต์ได้ ในการใช้เซสชันฝั่งไคลเอ็นต์ที่จำเป็นต้องมีการรักษาความลับและความสมบูรณ์ ต้องรับประกันสิ่งต่อไปนี้:

  1. การรักษาความลับ: ไม่มีสิ่งใดนอกจากเซิร์ฟเวอร์ที่สามารถตีความข้อมูลเซสชันได้
  2. ความสมบูรณ์ของข้อมูล: ไม่มีสิ่งใดนอกจากเซิร์ฟเวอร์ที่ควรจัดการข้อมูลเซสชัน (โดยบังเอิญหรือโดยประสงค์ร้าย)
  3. ความถูกต้อง: ไม่มีสิ่งใดนอกจากเซิร์ฟเวอร์ที่สามารถเริ่มต้นเซสชันที่ถูกต้องได้

เพื่อให้บรรลุสิ่งนี้ เซิร์ฟเวอร์จำเป็นต้องเข้ารหัสข้อมูลเซสชันก่อนที่จะส่งไปยังไคลเอนต์ และการแก้ไขข้อมูลดังกล่าวโดยบุคคลอื่นใดควรได้รับการป้องกันด้วยวิธีการเข้ารหัส

การส่งสถานะกลับไปกลับมาด้วยทุกคำขอจะนำไปใช้ได้จริงเมื่อคุกกี้มีขนาดเล็กเท่านั้น โดยพื้นฐานแล้ว เซสชันฝั่งไคลเอ็นต์จะแลกเปลี่ยนพื้นที่ดิสก์ของเซิร์ฟเวอร์สำหรับแบนด์วิดท์พิเศษที่แต่ละคำขอของเว็บจะต้องใช้ นอกจากนี้ เว็บเบราว์เซอร์ยังจำกัดจำนวนและขนาดของคุกกี้ที่อาจจัดเก็บโดยเว็บไซต์ เพื่อปรับปรุงประสิทธิภาพและอนุญาตให้มีข้อมูลเซสชันมากขึ้น เซิร์ฟเวอร์อาจบีบอัดข้อมูลก่อนที่จะสร้างคุกกี้ คลายการบีบอัดในภายหลังเมื่อคุกกี้ถูกส่งกลับโดยลูกค้า

โทเค็นเซสชัน HTTP

โทเค็นเซสชันเป็นตัวระบุเฉพาะที่สร้างขึ้นและส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์เพื่อระบุเซสชันการโต้ตอบปัจจุบัน ลูกค้ามักจะเก็บและส่งโทเค็นเป็นคุกกี้ HTTPและ/หรือส่งเป็นพารามิเตอร์ในแบบสอบถาม GET หรือ POST เหตุผลในการใช้โทเค็นของเซสชันคือไคลเอ็นต์ต้องจัดการตัวระบุเท่านั้น ข้อมูลเซสชันทั้งหมดจะถูกเก็บไว้ในเซิร์ฟเวอร์ (โดยปกติในฐานข้อมูลซึ่งไคลเอ็นต์ไม่มีการเข้าถึงโดยตรง) ที่เชื่อมโยงกับตัวระบุนั้น ตัวอย่างของชื่อที่ภาษาโปรแกรมบางภาษาใช้เมื่อตั้งชื่อคุกกี้ HTTP ได้แก่ JSESSIONID ( JSP ), PHPSESSID ( PHP ), CGISESSID ( CGI ) และ ASPSESSIONID ( ASP).

การจัดการเซสชั่น

ในคอมพิวเตอร์ปฏิสัมพันธ์ของมนุษย์ , การจัดการเซสชั่นเป็นกระบวนการของการติดตามกิจกรรมของผู้ใช้ในเซสชันของการมีปฏิสัมพันธ์กับที่ระบบคอมพิวเตอร์

งานการจัดการเซสชันทั่วไปในสภาพแวดล้อมเดสก์ท็อปรวมถึงการติดตามว่าแอปพลิเคชันใดเปิดอยู่และเอกสารใดบ้างที่แต่ละแอปพลิเคชันเปิด เพื่อให้สามารถกู้คืนสถานะเดียวกันได้เมื่อผู้ใช้ออกจากระบบและเข้าสู่ระบบในภายหลัง สำหรับเว็บไซต์ การจัดการเซสชันอาจเกี่ยวข้องกับการกำหนดให้ผู้ใช้เข้าสู่ระบบใหม่หากเซสชันหมดอายุ (กล่าวคือ ผ่านขีดจำกัดเวลาที่กำหนดโดยไม่มีกิจกรรมของผู้ใช้) นอกจากนี้ยังใช้เพื่อเก็บข้อมูลบนฝั่งเซิร์ฟเวอร์ระหว่างคำขอ HTTP

การจัดการเซสชันเดสก์ท็อป

ตัวจัดการเซสชันเดสก์ท็อปคือโปรแกรมที่สามารถบันทึกและกู้คืนเซสชันเดสก์ท็อปได้ เซสชันเดสก์ท็อปคือหน้าต่างทั้งหมดที่ทำงานอยู่และเนื้อหาปัจจุบัน การจัดการเซสชั่นบนลินุกซ์ระบบให้บริการโดย -based ผู้จัดการเซสชั่น X ในระบบMicrosoft Windowsการจัดการเซสชันมีให้โดยระบบย่อยตัวจัดการเซสชัน (smss.exe) ฟังก์ชั่นเซสชั่นที่ผู้ใช้สามารถขยายได้โดยการใช้งานของบุคคลที่สามเช่นtwinsplay

การจัดการเซสชันของเบราว์เซอร์

การจัดการเซสชันมีประโยชน์อย่างยิ่งในเว็บเบราว์เซอร์ที่ผู้ใช้สามารถบันทึกหน้าและการตั้งค่าที่เปิดอยู่ทั้งหมด และกู้คืนได้ในภายหลังหรือบนคอมพิวเตอร์เครื่องอื่น (ดู การเคลื่อนย้ายข้อมูล )

เพื่อช่วยกู้คืนจากความผิดพลาดของระบบหรือแอพพลิเคชั่น เพจและการตั้งค่าสามารถกู้คืนได้ในการรันครั้งต่อไป Google Chrome , Mozilla Firefox , Internet Explorer , OmniWebและOperaเป็นตัวอย่างของเว็บเบราว์เซอร์ที่สนับสนุนการจัดการเซสชัน การจัดการเซสชั่นมักจะมีการจัดการผ่านการประยุกต์ใช้ของคุกกี้

การจัดการเซสชันเว็บเซิร์ฟเวอร์

Hypertext Transfer Protocol (HTTP) ไม่มีสถานะ: คอมพิวเตอร์ไคลเอนต์ที่ใช้งานเว็บเบราว์เซอร์ต้องสร้างการเชื่อมต่อเครือข่ายTransmission Control Protocol (TCP) ใหม่กับเว็บเซิร์ฟเวอร์ด้วยคำขอ HTTP GET หรือ POST ใหม่แต่ละรายการ เว็บเซิร์ฟเวอร์จึงไม่สามารถพึ่งพาการเชื่อมต่อเครือข่าย TCP ที่จัดตั้งขึ้นเป็นเวลานานกว่าการดำเนินการ HTTP GET หรือ POST เพียงครั้งเดียว การจัดการเซสชันเป็นเทคนิคที่นักพัฒนาเว็บใช้เพื่อทำให้โปรโตคอล HTTP ไร้สัญชาติรองรับสถานะเซสชัน ตัวอย่างเช่น เมื่อผู้ใช้ได้รับการตรวจสอบสิทธิ์กับเว็บเซิร์ฟเวอร์แล้ว คำขอ HTTP ถัดไปของผู้ใช้ (GET หรือ POST) ไม่ควรทำให้เว็บเซิร์ฟเวอร์ขอบัญชีและรหัสผ่านของผู้ใช้อีกครั้ง สำหรับการอภิปรายเกี่ยวกับวิธีการที่ใช้ในการดำเนินการนี้ให้ดูที่HTTP cookieและSession ID

ในสถานการณ์ที่หลายเว็บเซิร์ฟเวอร์ต้องแบ่งปันความรู้เกี่ยวกับสถานะเซสชัน (ตามปกติในสภาพแวดล้อมของคลัสเตอร์ ) ข้อมูลเซสชันต้องแชร์ระหว่างโหนดคลัสเตอร์ที่กำลังเรียกใช้ซอฟต์แวร์เว็บเซิร์ฟเวอร์ วิธีการแบ่งปันสถานะเซสชันระหว่างโหนดในคลัสเตอร์รวมถึง: ข้อมูลเซสชันมัลติคาสต์ไปยังโหนดสมาชิก (ดูJGroupsสำหรับตัวอย่างหนึ่งของเทคนิคนี้) การแบ่งปันข้อมูลเซสชันกับโหนดพันธมิตรโดยใช้หน่วยความจำที่ใช้ร่วมกันแบบกระจายหรือการจำลองเสมือนหน่วยความจำการแบ่งปันข้อมูลเซสชันระหว่างโหนดโดยใช้ ซ็อกเก็ตเครือข่าย การจัดเก็บข้อมูลเซสชันบนระบบไฟล์ที่ใช้ร่วมกัน เช่น ระบบไฟล์แบบกระจายหรือระบบไฟล์ส่วนกลางหรือจัดเก็บข้อมูลการใช้งานนอกคลัสเตอร์ในฐานข้อมูล

หากข้อมูลเซสชันถือเป็นข้อมูลชั่วคราว ข้อมูลผันผวนซึ่งไม่จำเป็นสำหรับการไม่ปฏิเสธธุรกรรม และไม่มีข้อมูลที่ต้องอยู่ภายใต้การตรวจสอบการปฏิบัติตามข้อกำหนด (เช่น ในสหรัฐอเมริกา โปรดดูกฎหมายHealth Insurance Portability and Accountability ActและSarbanes-Oxley ดำเนินการเพื่อเป็นตัวอย่างของกฎหมายสองฉบับที่จำเป็นต้องมีการตรวจสอบการปฏิบัติตามข้อกำหนด) จากนั้นจึงสามารถใช้วิธีการใดๆ ในการจัดเก็บข้อมูลเซสชันได้ อย่างไรก็ตาม หากข้อมูลเซสชันอยู่ภายใต้การปฏิบัติตามข้อกำหนดของการตรวจสอบ ควรพิจารณาถึงวิธีการที่ใช้สำหรับการจัดเก็บเซสชัน การจำลองแบบ และการทำคลัสเตอร์

ในสถาปัตยกรรมเชิงบริการข้อความSimple Object Access Protocol หรือ SOAP ที่สร้างด้วยข้อความ Extensible Markup Language ( XML ) สามารถใช้โดยแอปพลิเคชันผู้บริโภคเพื่อทำให้เว็บเซิร์ฟเวอร์สร้างเซสชัน

การจัดการเซสชั่นผ่าน SMS

HTTP เป็นโปรโตคอลไร้สัญชาติSMSก็เช่นกัน เมื่อ SMS สามารถทำงานร่วมกันได้ข้ามเครือข่ายของคู่แข่งในปี 2542 [2]และการส่งข้อความเริ่มต้นขึ้นสู่รูปแบบการสื่อสารทั่วโลกที่แพร่หลาย[3]องค์กรต่างๆ เริ่มให้ความสนใจในการใช้ช่องทาง SMS เพื่อวัตถุประสงค์ทางการค้า บริการเริ่มต้นไม่ต้องการการจัดการเซสชั่น เนื่องจากเป็นการสื่อสารทางเดียว (เช่น ในปี 2000 บริการข่าวบนมือถือบริการแรกถูกส่งผ่าน SMS ในฟินแลนด์ ) วันนี้ แอปพลิเคชันเหล่านี้เรียกว่าการส่งข้อความระหว่างแอปพลิเคชันต่อเพียร์ (A2P)ซึ่งแตกต่างจากเพียร์ทูเพียร์ (P2P)การส่งข้อความ การพัฒนาแอปพลิเคชันระดับองค์กรแบบโต้ตอบจำเป็นต้องมีการจัดการเซสชัน แต่เนื่องจาก SMS เป็นโปรโตคอลไร้สัญชาติตามที่กำหนดโดยมาตรฐาน GSM [4]การใช้งานในช่วงต้นจึงถูกควบคุมฝั่งไคลเอ็นต์โดยให้ผู้ใช้ปลายทางป้อนคำสั่งและตัวระบุบริการด้วยตนเอง

ดูเพิ่มเติม

อ้างอิง

  1. ^ โปรโตคอลเชิงเซสชันและโปรโตคอลเชิงเซสชัน
  2. ^ InterCarrier Messaging Guidelines (PDF) , CTIA , สืบค้นแล้ว2018-06-02
  3. ^ Hppy bthdy txt! BBC News World Edition, http://news.bbc.co.uk/2/hi/uk_news/2538083.stm 3 ธันวาคม 2545
  4. ^ GSM Doc 28/85 "บริการและสิ่งอำนวยความสะดวกที่จะจัดให้มีในระบบ GSM" ฉบับที่ 2 มิถุนายน 2528

ลิงค์ภายนอก