สมมติว่าต่อไปนี้ถูกกำหนดใน.../hosts
:
127.0.0.1 localhost
อะไรคือความแตกต่างที่แท้จริงระหว่างการใช้127.0.0.1
และlocalhost
ชื่อเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งเมื่อการกดปุ่มกระบวนการทำงานในเครื่องที่กำลังฟังการเชื่อมต่ออยู่?
สมมติว่าต่อไปนี้ถูกกำหนดใน.../hosts
:
127.0.0.1 localhost
อะไรคือความแตกต่างที่แท้จริงระหว่างการใช้127.0.0.1
และlocalhost
ชื่อเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งเมื่อการกดปุ่มกระบวนการทำงานในเครื่องที่กำลังฟังการเชื่อมต่ออยู่?
คำตอบ:
ความแตกต่างที่เป็นไปได้มากที่สุดก็คือคุณยังต้องค้นหาข้อมูลจริงจากที่localhost
อื่น
หากคุณใช้127.0.0.1
ซอฟต์แวร์ (อัจฉริยะ) จะเปลี่ยนเป็นที่อยู่ IP โดยตรงและใช้งาน การใช้งานบางอย่างของgethostbyname
จะตรวจจับรูปแบบประ (และสันนิษฐานว่าเป็นรูปแบบ IPv6 ที่เทียบเท่า) และไม่ทำการค้นหาเลย
มิฉะนั้นจะต้องแก้ไขชื่อ และไม่มีการรับประกันว่าhosts
ไฟล์ของคุณจะถูกใช้สำหรับการแก้ไขนั้น (อย่างแรกหรือเลย) ดังนั้นlocalhost
อาจกลายเป็นที่อยู่ IP ที่แตกต่างกันโดยสิ้นเชิง
โดยที่ฉันหมายความว่าในบางระบบhosts
ไฟล์ท้องถิ่นสามารถข้าม host.conf
ควบคุมแฟ้มนี้บนลินุกซ์ (และ Unices อื่น ๆ อีกมากมาย)
/etc/nsswitch.conf
เลือกว่าhosts
จะใช้หรือ DNS ใช้เป็นอันดับแรกสำหรับการค้นหาโฮสต์หรือไม่หาก nss กำลังทำงาน
บนระบบคอมพิวเตอร์ที่ทันสมัย localhost ในฐานะชื่อโฮสต์แปลเป็นที่อยู่ IPv4 ในบล็อกสุทธิ 127.0.0.0/8 (ลูปแบ็ค) ปกติ 127.0.0.1 หรือ :: 1 ใน IPv6
ข้อแตกต่างเพียงอย่างเดียวก็คือจะต้องค้นหาใน DNS เพื่อหาระบบที่localhost
แก้ไขได้ การค้นหานี้รวดเร็วจริงๆ ตัวอย่างเช่นเพื่อให้stackoverflow.com
คุณพิมพ์ลงในแถบที่อยู่ (หรือใช้ bookmarklet ที่ชี้ไปที่นี่) ไม่ว่าจะด้วยวิธีใดคุณจะได้รับชื่อโฮสต์ที่นี่ localhost
ให้ฟังก์ชั่นที่คล้ายกัน
แอปพลิเคชั่นบางตัวจะจัดการกับ "localhost" เป็นพิเศษ ไคลเอนต์ mysql จะปฏิบัติต่อ localhost เป็นคำขอเชื่อมต่อกับซ็อกเก็ตโดเมน unix ในพื้นที่แทนการใช้ tcp เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ใน 127.0.0.1 นี่อาจเร็วกว่าและอาจอยู่ในโซนการตรวจสอบสิทธิ์อื่น
ฉันไม่รู้จักแอปอื่น ๆ ที่ดูแล localhost แตกต่างจาก 127.0.0.1 แต่อาจมีบางอย่าง
โดย IP เร็วกว่า
โดยทั่วไปเมื่อคุณโทรตามชื่อเซิร์ฟเวอร์มันจะถูกแปลงเป็น IP ดั้งเดิม
แต่มันจะเป็นการยากที่จะจดจำ IP ด้วยเหตุนี้ชื่อโดเมนจึงถูกสร้างขึ้น
ส่วนตัวผมใช้http://localhost
แทนหรือhttp://127.0.0.1
http://username
localhost
ในวิธีพิเศษ แอปพลิเคชันอื่น ๆ จะยังคงค้นหาlocalhost
อยู่
ไม่มีอะไรแตกต่าง หนึ่งง่ายต่อการจดจำกว่าอีก โดยทั่วไปแล้วคุณจะกำหนดชื่อเพื่อเชื่อมโยงกับที่อยู่ IP คุณไม่จำเป็นต้องระบุ localhost สำหรับ 127.0.0.1 คุณสามารถระบุชื่อที่คุณต้องการ
ความแตกต่างที่สำคัญคือการเชื่อมต่อสามารถทำได้ผ่าน Unix Domain Socket ดังที่ระบุไว้ที่นี่: localhost vs. 127.0.0.1
localhost
เป็นอิสระจากโปรโตคอลทั้ง IPv4 และ IPv6 จะทำงานได้