จะเกิดอะไรขึ้นเมื่อคุณพิมพ์ URL ในเบราว์เซอร์ [ปิด]


293

ใครสามารถบอกฉันได้ว่าเกิดอะไรขึ้นเบื้องหลังเบื้องหลังจากเวลาที่ฉันพิมพ์ URL ในเบราว์เซอร์จนถึงเวลาที่ฉันได้เห็นหน้าเว็บในเบราว์เซอร์ บัญชีรายละเอียดของกระบวนการจะเป็นประโยชน์อย่างมาก


2
แม้ว่าสิ่งนี้อาจเกี่ยวข้องกับการเขียนโปรแกรม (ในที่สุด) - ระดับของรายละเอียดที่สิ่งนี้สามารถตอบได้ (และมี) ปริมาณที่กรอกไว้ โปรดระบุใหม่เป็นแบบสอบถามการเขียนโปรแกรม
KevinDTimm

28
ได้รับโอเรลลีDNS และการผูกหนังสือ มันเป็นเพียง 624 หน้า
Wim Hollebrandse

7
edusagar.com/articles/view/70/… นี่เป็นคำตอบที่ดีที่สุด!
Shivendra

1
เพื่อเห็นแก่ลูกหลานของที่นี่เป็นรุ่นที่รายละเอียดของวิธีการทำงานของอินเทอร์เน็ต - goo.gl/eEHmpZ
Ashwin Krishnamurthy

4
ขณะนี้มีความพยายามในการทำงานร่วมกันเพื่อตอบคำถามในรายละเอียดให้มากที่สุด: github.com/alex/what-happens-when/blob/master/README.rst
Piskvor ออกจากอาคาร

คำตอบ:


587

เรียนนี้เป็นอย่างมากหยาบและสมจริงสมจังร่างสมมติร้องขอ HTTP ที่เป็นไปได้ง่าย (ไม่ HTTPS ไม่มี HTTP2, ไม่มีแถม) DNS เป็นไปได้ง่ายผู้รับมอบฉันทะไม่มีเดียวกอง IPv4 หนึ่ง HTTP ขอเพียงเซิร์ฟเวอร์ HTTP ง่ายใน ส่วนอื่น ๆ และไม่มีปัญหาในขั้นตอนใด ๆ นี่คือสำหรับเจตนารมณ์และวัตถุประสงค์ร่วมสมัยส่วนใหญ่เป็นสถานการณ์ที่ไม่สมจริง สิ่งเหล่านี้มีความซับซ้อนมากขึ้นในการใช้งานจริงและกองเทคโนโลยีได้กลายเป็นลำดับความสำคัญที่ซับซ้อนมากขึ้นนับตั้งแต่มีการเขียน เมื่อคำนึงถึงเรื่องนี้ไทม์ไลน์ต่อไปนี้ยังคงใช้ได้:

  1. เบราว์เซอร์ตรวจสอบแคช หากวัตถุที่ร้องขออยู่ในแคชและใหม่ให้ข้ามไปที่ # 9
  2. เบราว์เซอร์ขอให้ระบบปฏิบัติการที่อยู่ IP ของเซิร์ฟเวอร์
  3. ระบบปฏิบัติการทำการค้นหา DNS และตอบกลับที่อยู่ IP ไปยังเบราว์เซอร์
  4. เบราว์เซอร์เปิดการเชื่อมต่อ TCP ไปยังเซิร์ฟเวอร์ (ขั้นตอนนี้ซับซ้อนกว่า HTTPS มากขึ้น)
  5. เบราว์เซอร์ส่งคำขอ HTTP ผ่านการเชื่อมต่อ TCP
  6. เบราว์เซอร์ได้รับการตอบสนอง HTTP และอาจปิดการเชื่อมต่อ TCP หรือนำมาใช้ซ้ำสำหรับคำขออื่น
  7. เบราว์เซอร์ตรวจสอบว่าการตอบสนองเป็นการเปลี่ยนเส้นทางหรือการตอบสนองตามเงื่อนไข (รหัสสถานะผลลัพธ์ 3xx), คำขอการให้สิทธิ์ (401), ข้อผิดพลาด (4xx และ 5xx), ฯลฯ ; สิ่งเหล่านี้ได้รับการจัดการแตกต่างจากคำตอบปกติ (2xx)
  8. หากแคชการตอบสนองจะถูกเก็บไว้ในแคช
  9. เบราว์เซอร์ถอดรหัสการตอบสนอง (เช่นถ้าเป็น gzipped)
  10. เบราว์เซอร์กำหนดว่าจะทำอย่างไรกับการตอบสนอง (เช่นหน้า HTML, รูปภาพ, คลิปเสียงหรือไม่)
  11. เบราว์เซอร์แสดงการตอบสนองหรือเสนอกล่องโต้ตอบดาวน์โหลดสำหรับประเภทที่ไม่รู้จัก

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


จะเกิดอะไรขึ้นในกรณีที่คำขอ https ในขั้นตอนที่ 4 คุณช่วยอธิบายเพิ่มเติมอีกเล็กน้อยได้ไหม
Mohammad Raheem

2
นั่นเป็นวิธีที่เกินขอบเขตของคำตอบนี้ แต่จะตรวจสอบหน้า GH ที่ลิงก์ด้านบนซึ่งจะให้ภาพรวมโดยย่อ: github.com/alex/what-happens-when/blob/master/ …
Piskvor ออกจากอาคารเมื่อ

41

ก่อนอื่นคอมพิวเตอร์จะค้นหาโฮสต์ปลายทาง ถ้ามันมีอยู่ในแคช DNS ท้องถิ่นมันจะใช้ข้อมูลนั้น มิฉะนั้นการสืบค้น DNS จะดำเนินการจนกว่าจะพบที่อยู่ IP

จากนั้นเบราว์เซอร์ของคุณจะเปิดการเชื่อมต่อ TCP ไปยังโฮสต์ปลายทางและส่งคำขอตาม HTTP 1.1 (หรืออาจใช้ HTTP 1.0 แต่เบราว์เซอร์ปกติจะไม่ทำอะไรอีกแล้ว)

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

จากนั้นเบราว์เซอร์จะใช้ตัวแยกวิเคราะห์ HTML เพื่อสร้างโครงสร้างเอกสารใหม่ซึ่งจะแสดงให้คุณเห็นบนหน้าจอในภายหลัง หากพบการอ้างอิงถึงแหล่งข้อมูลภายนอกเช่นรูปภาพ, ไฟล์ css, ไฟล์ javascript สิ่งเหล่านี้จะถูกส่งแบบเดียวกับเอกสาร HTML


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