อินเทอร์เน็ตไม่ได้ใช้เพียงหนึ่งโปรโตคอล ไม่ได้ใช้เพียงหนึ่งโปรโตคอลในเวลาเดียว: มันใช้หลายอย่างพร้อมกันซึ่งจริง ๆ แล้ววางซ้อนทับกันเพื่อทำสิ่งต่าง ๆ ทุกประเภท หากเราสรุปสิ่งต่าง ๆ เล็กน้อยคุณสามารถพูดได้ว่ามันใช้สี่อย่าง
- Link Layer : โปรโตคอลที่ให้คุณส่งสัญญาณลงลวด (หรือคลื่นวิทยุหรือแสงแฟลชหรืออะไรก็ตาม) ไปยังเครื่องอื่นที่ปลายอีกด้านหนึ่ง ตัวอย่างเช่น PPP, WiFi และ Ethernet
- Network Layer : โปรโตคอลที่ให้คุณส่งสัญญาณผ่านเครือข่ายของเครื่องเพื่อให้คุณสามารถรับข้อมูลระหว่างเครื่องที่ไม่ได้เชื่อมต่อโดยตรง นี่คือที่ที่ IP และ IPv6 ใช้งานได้
- Transport Layer : โปรโตคอลที่ให้คุณใช้ความรู้สึกพื้นฐานบางอย่างจากสัญญาณนั้น บางอย่างเช่น TCP สร้าง "การเชื่อมต่อเสมือน" ระหว่างสองเครื่องราวกับว่ามีสายตรงระหว่างพวกเขา อื่น ๆ เช่น UDP เพียงระเบิดบิตข้อมูลออกจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง โปรโตคอลที่แตกต่างกันมีจุดแข็งและจุดอ่อนต่างกันซึ่งเป็นส่วนหนึ่งของสาเหตุที่มีมากมาย
- Application Layer : นี่คือสิ่งที่เรามักคิดว่าเป็น "โปรโตคอล" พวกมันเชี่ยวชาญเฉพาะกับข้อมูลบางประเภทซึ่งมีวัตถุประสงค์เพื่อวัตถุประสงค์เฉพาะ ตัวอย่างบางส่วน ได้แก่ FTP, HTTP และ BitTorrent ซึ่งถ่ายโอนไฟล์ทั้งหมด
โปรโตคอลการถ่ายโอนไฟล์เหล่านั้นที่ฉันกล่าวถึงมักจะถูกซ้อนทับบน TCP (ซึ่งเป็นตัวซ้อนบน IP) ซึ่งเป็นที่ที่เราได้รับคำถามของคุณ TCP พยายามอย่างดีที่สุดเพื่อให้ทำงานได้เหมือนสายตรงระหว่างเครื่อง: เมื่อเซิร์ฟเวอร์ส่งแพ็คเก็ตก็สามารถมั่นใจได้ว่าลูกค้าได้รับมันและสามารถมั่นใจได้ว่าลูกค้าจะได้รับแพ็กเก็ตในลำดับเดียวกันกับที่ เซิร์ฟเวอร์ส่งพวกเขา ส่วนหนึ่งของวิธีการทำเช่นนี้คือทุกแพ็กเก็ตที่เซิร์ฟเวอร์ส่งต้องได้รับการยอมรับจากลูกค้า: มันจะส่งสัญญาณขนาดเล็กกลับมาโดยบอกว่า "ตกลงฉันได้รับแพ็คเก็ตนั้นแล้วคุณพร้อมแล้วสำหรับอีกอัน" หากเซิร์ฟเวอร์ไม่ได้รับการยอมรับนั้นมันจะส่งแพ็กเก็ตไปเรื่อย ๆ จนกว่ามันจะเกิดขึ้น (หรือตัดสินใจว่าสิ่งนี้จะไม่ทำงานและยอมแพ้)
นี่คือกุญแจสำคัญในการตอบคำถามของคุณ เซิร์ฟเวอร์ไม่สามารถส่งแพ็คเก็ต 2 จนกว่าจะรู้ว่าแพกเก็ต 1 ได้ผ่านซึ่งไม่สามารถเกิดขึ้นจนกว่า Packet 1 ได้รับการยอมรับและที่ไม่สามารถเกิดขึ้นจนกว่า Packet 1 เสร็จจริงๆ เซิร์ฟเวอร์ที่อยู่ตรงกลางของเชนไม่จำเป็นต้องแคชข้อมูลใด ๆ (ไม่มากกว่าหนึ่งแพ็คเก็ตในเวลาต่อไป) เพราะเมื่อเครื่องเห็น Packet 2 ก็รู้ว่าไม่จำเป็นต้อง Packet 1 อีกต่อไป .
หนึ่งจุดสุดท้าย: ในทางเทคนิคนี่หมายความว่าอินเทอร์เน็ตไม่จำเป็นต้องเก็บข้อมูลตามที่คุณพูดถึง หากมีคนต้องการแคชข้อมูลทั้งหมดจริง ๆ พวกเขาก็สามารถทำได้ ไม่มีอะไรในโปรโตคอลที่จะหยุดไม่ให้เกิดขึ้น แต่อินเทอร์เน็ตไม่ต้องการแคชเหล่านี้เพื่อทำงาน