HTTP มีคุกกี้ HTTP คุกกี้ช่วยให้เซิร์ฟเวอร์ติดตามสถานะผู้ใช้จำนวนการเชื่อมต่อการเชื่อมต่อล่าสุด ฯลฯ
HTTP มีการเชื่อมต่อแบบต่อเนื่อง (Keep-Alive) ซึ่งสามารถส่งคำขอได้หลายรายการจากการเชื่อมต่อ TCP เดียวกัน
HTTP มีคุกกี้ HTTP คุกกี้ช่วยให้เซิร์ฟเวอร์ติดตามสถานะผู้ใช้จำนวนการเชื่อมต่อการเชื่อมต่อล่าสุด ฯลฯ
HTTP มีการเชื่อมต่อแบบต่อเนื่อง (Keep-Alive) ซึ่งสามารถส่งคำขอได้หลายรายการจากการเชื่อมต่อ TCP เดียวกัน
คำตอบ:
แม้ว่าจะสามารถส่งคำขอได้หลายครั้งผ่านการเชื่อมต่อ HTTP เดียวกัน แต่เซิร์ฟเวอร์ไม่ได้แนบความหมายพิเศษใด ๆ กับการมาถึงผ่านซ็อกเก็ตเดียวกัน นั่นเป็นสิ่งที่มีประสิทธิภาพเพียงอย่างเดียวโดยมีจุดประสงค์เพื่อลดเวลา / แบนด์วิดท์ที่จะใช้ในการสร้างการเชื่อมต่อสำหรับการร้องขอแต่ละครั้ง
เท่าที่เกี่ยวข้องกับ HTTP พวกเขาทั้งหมดยังคงแยกคำขอและต้องมีข้อมูลเพียงพอด้วยตนเองเพื่อตอบสนองคำขอ นั่นคือสาระสำคัญของ "ไร้สัญชาติ" คำขอจะไม่เชื่อมโยงซึ่งกันและกันขาดข้อมูลที่แบ่งปันที่เซิร์ฟเวอร์รู้ซึ่งส่วนใหญ่เป็นรหัสเซสชันในคุกกี้
จากWikipedia :
HTTP เป็นโปรโตคอลไร้สัญชาติ โปรโตคอลไร้สัญชาติไม่ต้องการให้เซิร์ฟเวอร์เก็บข้อมูลหรือสถานะเกี่ยวกับผู้ใช้แต่ละรายในช่วงระยะเวลาของการร้องขอหลายครั้ง
แต่เว็บแอปพลิเคชั่นบางตัวอาจต้องติดตามความคืบหน้าของผู้ใช้จากหน้าหนึ่งไปอีกหน้าหนึ่งเช่นเมื่อต้องใช้เว็บเซิร์ฟเวอร์ในการปรับแต่งเนื้อหาของหน้าเว็บสำหรับผู้ใช้ โซลูชั่นสำหรับกรณีเหล่านี้ ได้แก่ :
- การใช้งานคุกกี้ HTTP
- เซสชันด้านเซิร์ฟเวอร์
- ตัวแปรที่ซ่อนอยู่ (เมื่อหน้าปัจจุบันมีฟอร์ม) และ
- การเขียน URL ใหม่โดยใช้พารามิเตอร์ที่เข้ารหัส URI เช่น /index.php?session_id=some_unique_session_code
สิ่งที่ทำให้โปรโตคอลไร้สัญชาติคือเซิร์ฟเวอร์ไม่จำเป็นต้องติดตามสถานะมากกว่าการร้องขอหลายครั้งไม่ใช่ว่าจะไม่สามารถทำได้หากต้องการ สิ่งนี้ช่วยลดความยุ่งยากในการทำสัญญาระหว่างไคลเอนต์และเซิร์ฟเวอร์และในหลาย ๆ กรณี (เช่นการให้บริการข้อมูลคงที่ผ่าน CDN) ช่วยลดปริมาณข้อมูลที่จำเป็นต้องมีการถ่ายโอน หากเซิร์ฟเวอร์จำเป็นต้องรักษาสถานะของการเข้าชมของลูกค้าโครงสร้างของการออกและการตอบสนองต่อการร้องขอจะมีความซับซ้อนมากขึ้น ความเรียบง่ายของโมเดลเป็นหนึ่งในคุณสมบัติที่ยอดเยี่ยมที่สุด
เนื่องจากโปรโตคอลไร้สัญชาติไม่ต้องการให้เซิร์ฟเวอร์เก็บข้อมูลเซสชันหรือสถานะเกี่ยวกับพันธมิตรการสื่อสารแต่ละรายในช่วงระยะเวลาของการร้องขอหลายครั้ง
HTTP เป็นโปรโตคอลไร้สัญชาติซึ่งหมายความว่าการเชื่อมต่อระหว่างเบราว์เซอร์และเซิร์ฟเวอร์จะหายไปเมื่อการทำธุรกรรมสิ้นสุดลง
HTTPถูกเรียกว่าเป็นstateless protocol
เพราะแต่ละคำขอถูกดำเนินการอย่างเป็นอิสระโดยไม่ทราบว่ามีการร้องขอใด ๆ ที่ดำเนินการมาก่อนซึ่งหมายความว่าเมื่อธุรกรรมสิ้นสุดการเชื่อมต่อระหว่างเบราว์เซอร์และเซิร์ฟเวอร์ก็จะสูญหายเช่นกัน
สิ่งที่ทำให้โปรโตคอลstateless
คือในการออกแบบดั้งเดิมHTTPนั้นค่อนข้างง่ายfile transfer protocol
:
ไม่มีการรักษาความสัมพันธ์ระหว่างการเชื่อมต่อหนึ่งกับอีกแม้จากไคลเอนต์เดียวกัน สิ่งนี้ช่วยลดความยุ่งยากในการทำสัญญาระหว่างไคลเอนต์และเซิร์ฟเวอร์และในหลาย ๆ กรณีจะลดปริมาณข้อมูลที่ต้องโอนให้น้อยที่สุด
หากโปรโตคอล HTTP นั้นถูกกำหนดให้เป็นโปรโตคอลแบบเต็มรัฐหน้าต่างเบราว์เซอร์จะใช้การเชื่อมต่อเดียวเพื่อสื่อสารกับเว็บเซิร์ฟเวอร์สำหรับการร้องขอหลายครั้งที่มอบให้กับเว็บแอปพลิเคชัน พวกเขาอยู่ในสถานะว่างเป็นเวลานานซึ่งอาจสร้างสถานการณ์ในการเข้าถึงการเชื่อมต่อสูงสุดของเว็บเซิร์ฟเวอร์แม้ว่าการเชื่อมต่อส่วนใหญ่ในไคลเอนต์จะไม่ได้ใช้งาน
HTTP เป็น connectionless และเป็นผลลัพธ์โดยตรงที่ HTTP เป็นโปรโตคอลไร้สัญชาติ เซิร์ฟเวอร์และไคลเอนต์ทราบกันเฉพาะระหว่างการร้องขอปัจจุบัน หลังจากนั้นทั้งคู่ก็ลืมกันและกัน เนื่องจากลักษณะของโปรโตคอลนี้ลูกค้าและเบราว์เซอร์ไม่สามารถเก็บข้อมูลระหว่างคำขอที่แตกต่างกันทั่วหน้าเว็บ
ไร้สัญชาติคืออะไร?
เมื่อมีการร้องขอและตอบกลับไปยังลูกค้าการเชื่อมต่อจะถูกยกเลิกหรือถูกยกเลิก เซิร์ฟเวอร์จะลืมทุกอย่างเกี่ยวกับผู้ร้องขอ
ทำไมไร้สัญชาติ?
เว็บเลือกที่จะไปหาโปรโตคอลไร้สัญชาติ มันเป็นตัวเลือกอัจฉริยะเพราะเป้าหมายดั้งเดิมของเว็บคืออนุญาตให้มีการแสดงเอกสาร (หน้าเว็บ) ในจำนวนที่ไม่มาก ของคนที่ใช้ฮาร์ดแวร์พื้นฐานมากสำหรับเซิร์ฟเวอร์
การรักษาการเชื่อมต่อที่ใช้เวลานานจะทำให้สิ้นเปลืองทรัพยากรมาก
หากเว็บได้รับเลือกโปรโตคอล stateful แล้วโหลดบนเซิร์ฟเวอร์จะเพิ่มขึ้นเพื่อรักษาการเชื่อมต่อของผู้เข้าชม
HTTP
ไร้สัญชาติ TCP
เป็นของรัฐ ไม่มีสิ่งที่เรียกว่าHTTP connection
แต่เพียงและHTTP request
เราไม่จำเป็นอะไรที่จะได้รับการรักษาที่จะทำให้อีกHTTP response
HTTP request
ส่วนหัวการเชื่อมต่อที่เป็น"keep-alive"หมายถึงTCP
จะถูกนำมาใช้ใหม่โดยการHTTP
ร้องขอและการตอบสนองที่ตามมาแทนการยกเลิกการเชื่อมต่อและการสร้างTCP
การเชื่อมต่อใหม่ตลอดเวลา
ฉันคิดว่ามีคนเลือกชื่อที่โชคร้ายมากสำหรับแนวคิด STATELESS และนั่นเป็นสาเหตุที่ทำให้เกิดความเข้าใจผิดทั้งหมด มันไม่เกี่ยวกับการจัดเก็บทรัพยากรชนิดใด ๆ แต่เกี่ยวกับความสัมพันธ์ระหว่างไคลเอนต์และเซิร์ฟเวอร์
ลูกค้า: ฉันกำลังรักษาทรัพยากรทั้งหมดไว้ที่ข้างของฉันและส่ง "รายการ" ของรายการสำคัญทั้งหมดที่ต้องดำเนินการ ทำงานของคุณ
เซิร์ฟเวอร์: เอาล่ะ .. ขอให้ฉันรับผิดชอบในการกรองสิ่งที่สำคัญเพื่อให้คุณได้คำตอบที่เหมาะสม
ซึ่งหมายความว่าเซิร์ฟเวอร์เป็น "ทาส" ของลูกค้าและต้องลืมเกี่ยวกับ "เจ้านาย" ของเขาหลังจากการร้องขอแต่ละครั้ง ที่จริงแล้ว STATELESS อ้างถึงสถานะของเซิร์ฟเวอร์เท่านั้น
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3