เบราว์เซอร์สร้างการเชื่อมต่อ TCP ใหม่สำหรับคำขอ HTTP แต่ละรายการหรือไม่


23

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

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

คำตอบ:


30

ใน HTTP / 0.9 (ไม่ได้ใช้อีกต่อไป) คำขอแต่ละรายการใช้การเชื่อมต่อ TCP แยกต่างหากและการสิ้นสุดการตอบกลับถูกส่งสัญญาณโดยปิดการเชื่อมต่อ

ใน HTTP / 1.0 การเชื่อมต่อแยกต่างหากยังคงเป็นค่าเริ่มต้นอย่างเป็นทางการ อย่างไรก็ตามConnection: Keep-Aliveสามารถใช้ส่วนหัวคำขอที่ไม่เป็นทางการ แต่ได้รับการสนับสนุนอย่างกว้างขวาง " " เพื่อขอการเชื่อมต่อแบบถาวรหากเซิร์ฟเวอร์รองรับ

ใน HTTP / 1.1 การเชื่อมต่อแบบถาวรกลายเป็นค่าเริ่มต้นและการร้องขอแบบคำขอครั้งเดียวแบบเก่าจะต้องมีการร้องขออย่างชัดเจน โดยปกติจะใช้การเชื่อมต่อแบบต่อเนื่องหลายรายการ (2-5) ครั้ง

(คำขอทางเลือกอาจมีการส่งไปป์ไลน์แม้ว่าสิ่งนี้จะเป็นการยากที่จะนำไปใช้และสร้างปัญหามากกว่าที่จะแก้ปัญหา (การบล็อกส่วนหัวของบรรทัด ฯลฯ ) ดังนั้นจึงไม่มีใครใช้ HTTP / 1.x pipelining)

HTTP / 2 (aka SPDY ) ได้รับการออกแบบมาเป็นพิเศษเพื่อให้หลายคำขอในเวลาเดียวกัน มันมีเลเยอร์ของเฟรม / แพ็คเก็ตซึ่งช่วยให้การตอบสนองมาถึงในลำดับใด ๆ และพร้อมกัน

แหล่งข้อมูล: บทความวิกิพีเดียและRFC 2616 ส่วน 8.1


อีกบทความที่น่าสนใจที่กล่าวถึงdeveloper.mozilla.org/en-US/docs/Web/HTTP//
Ganesh Satpute

6

มีส่วนหัว "การเชื่อมต่อ: Keep-Alive" ดูenwikiสำหรับรายละเอียด

คุณสามารถใช้ Wireshark เพื่อจับภาพและวิเคราะห์การเชื่อมต่อและดูส่วนหัวทั้งหมด


ทำไมต้อง Wireshark แทนที่จะเป็น Fiddler?
Pacerier

3
พู้ทำเล่นคือ 1. ไม่ใช่ซอฟต์แวร์โอเพ่นซอร์ส 2. Windows เท่านั้น
วิ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.