แอปพลิเคชันไคลเอนต์ทราบได้อย่างไรว่าใช้ IPv4 หรือ IPv6


18

เซิร์ฟเวอร์ / คอมพิวเตอร์ / ผู้ใช้ / แอปพลิเคชันรู้ได้อย่างไรว่าต้องการขอทรัพยากรผ่านอินเทอร์เน็ตด้วยที่อยู่ IPv6 กับและที่อยู่ IPv4

คำตอบ:


24

สิ่งแรกที่ลูกค้ากำหนดคือโปรโตคอลใดที่พร้อมใช้งาน สมมติว่าทั้ง IPv4 และ IPv6 พร้อมใช้งาน (ไม่เช่นนั้นคำตอบที่โปรโตคอลจะเลือกใช้มีความสำคัญ;) จากนั้นจะทำการค้นหา DNS สำหรับระเบียน A (ที่อยู่ IPv4) และ AAAA (ที่อยู่ IPv6) หากส่งคืนเพียงประเภทเดียวก็จะใช้มัน หากที่อยู่ทั้ง IPv4 และ IPv6 ถูกส่งคืนพฤติกรรมเริ่มต้นจะขึ้นอยู่กับซอฟต์แวร์ไคลเอนต์ โดยปกติRFC 3484ถูกนำมาใช้

ตามมาตรฐานอย่างเป็นทางการมันควรจะชอบ IPv6 แต่เนื่องจากมีบางเครื่อง (0.01% หรือน้อยกว่า) ที่มีการกำหนดค่า IPv6 ผิดพลาดไคลเอนต์จึงกลายเป็นฉลาดขึ้น เบราว์เซอร์ส่วนใหญ่ในปัจจุบันจะพยายามเชื่อมต่อผ่าน IPv6 แต่หากไม่ได้รับการเชื่อมต่อที่ใช้งานได้ภายใน 300 มิลลิวินาทีพวกเขาจะพยายามเชื่อมต่อผ่าน IPv4 แบบขนาน การเชื่อมต่อครั้งแรกที่ประสบความสำเร็จนั้นจะถูกนำมาใช้ นี้ได้รับการคุ้มครองในความสุขสายตา RFC

Apple เปลี่ยนสิ่งนี้ใน Lion ที่นั่นระบบปฏิบัติการจะติดตามประสิทธิภาพของการเชื่อมต่อทั้งหมดและหากพิจารณาว่าการเชื่อมต่อ IPv4 มีเวลาแฝงที่ต่ำกว่าการเชื่อมต่อ IPv6 ระบบจะเริ่มต้นเลือกใช้ IPv4 แต่ถ้าการเชื่อมต่อ IPv4 ช้าลงอาจเปลี่ยนกลับเป็น IPv6 ลองดูที่หัวข้อรายชื่อผู้รับจดหมายนี้เพื่อการอภิปรายเกี่ยวกับคุณสมบัตินี้

สำหรับผู้ใช้มันไม่สำคัญว่าจะใช้ IPv4 หรือ IPv6 ตราบใดที่ใช้งานได้ IPv4 และ IPv6 ควรให้เท่าเทียมกัน เว็บไซต์ควรทำงานเหมือนกับ IPv4 เหมือนกันมากกว่า IPv6 เป็นต้น

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


1
หลังจากนี้ถูกเขียน RFC 3484 ได้รับการละทิ้งRFC 6724
Michael Hampton

มันกำหนดได้อย่างไรว่ามีโปรโตคอลใดบ้าง ฉันเคยเห็นพฤติกรรมแบบสุ่มที่apt-get updateตัวอย่างพยายามเชื่อมต่อกับโฮสต์ ipv6 แต่โฮสต์นั้นไม่มีแม้แต่ที่อยู่ IPv6 นอกเหนือจากลิงค์ท้องถิ่น
Halfgaar

1
จัดการโดยการเลือกที่อยู่ต้นทางและปลายทาง (RFC 6724) ในกรณีของคุณดูเหมือนว่าโฮสต์จะเห็นระเบียน AAAA ใน DNS เลือกที่อยู่ปลายทางนั้นจากนั้นพบว่าไม่มีที่อยู่ต้นทางที่สามารถใช้กับปลายทางนั้นจากนั้นกลับสู่ IPv4
Sander Steffann

2

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

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

เมื่อถึงจุดหนึ่งในอนาคตที่ค่อนข้างไกลเมื่อ IPv6 ให้อำนาจกับปริมาณการใช้งานส่วนใหญ่ฉันสามารถเห็นการพลิกกลับของโชคชะตาสำหรับ IPv4 โดยที่ปริมาณการใช้งาน IPv4 จะต้องถูกห่อหุ้มภายในแพ็คเก็ต IPv6 ปกติและโบรกเกอร์อุโมงค์ทำหน้าที่คล้ายกัน การขาดการกำหนดเส้นทาง IPv4 / IP แบบกว้าง


1
ฉันไม่คิดว่านี่เป็นคำตอบของคำถาม ... นอกจาก: Tunneling หายไปอย่างรวดเร็วในอินเทอร์เน็ต IPv6 หลักเพราะ IPv6 ดั้งเดิมมีให้ใช้งานทุกที่แล้ว จะมีการขุดอุโมงค์ให้กับลูกค้า แต่ไม่มีอะไรเกี่ยวข้องกับทางเลือกที่ระบบจะทำเมื่อทำการเชื่อมต่อ PS: การทันเนล IPv4-over-IPv6 ปรากฏขึ้นแล้ว ผู้ให้บริการอินเทอร์เน็ตเคเบิลบางรายกำลังปรับใช้ DS-Lite ในปีนี้ซึ่งทำสิ่งนั้นอย่างแน่นอน
Sander Steffann

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

3
มีการใช้งานอุโมงค์อย่างแน่นอน แต่ควรหลีกเลี่ยงเมื่อเป็นไปได้ ผู้ให้บริการอินเทอร์เน็ตที่ยังไม่เสนอ IPv6 ที่ดีให้กับลูกค้าของพวกเขายังไม่ได้ทำงาน ... แต่อย่างไรก็ตาม: คำถามคือวิธีที่แอปพลิเคชันไคลเอนต์เลือกระหว่าง IPv4 และ IPv6 และนั่นไม่เกี่ยวข้องกับวิธีที่เครือข่ายมีการเชื่อมต่อ IPv6 เพราะนั่นคืองานของเราเตอร์ไม่ใช่แอปพลิเคชันไคลเอนต์ แอปพลิเคชันไคลเอนต์เพียงใช้สิ่งที่มีอยู่ในเครือข่ายท้องถิ่น
Sander Steffann

สงครามครูเสดเพื่อนของฉัน
Garrett

-2

ฉันคิดว่าคุณกำลังถามว่าแอพตัดสินใจเลือกอย่างไร จากด้านโปรแกรมขึ้นอยู่กับการใช้งานแอปพลิเคชัน หาก coder ทำให้ IPv6 มีลำดับความสำคัญสูงกว่า IPv4 ตัวอย่างเช่นมันจะลองใช้ getipv6addr () ก่อน หากไม่ได้กำหนดค่าหรือล้มเหลวก็จะลองใช้ getaddr () ฯลฯ ตามนี้แอปจะส่งคำขอผ่าน IPv6 ก่อนหรือในทางกลับกัน

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