สมมติว่าต่อไปนี้ถูกกำหนดใน.../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.1http://username
localhostในวิธีพิเศษ แอปพลิเคชันอื่น ๆ จะยังคงค้นหาlocalhostอยู่
ไม่มีอะไรแตกต่าง หนึ่งง่ายต่อการจดจำกว่าอีก โดยทั่วไปแล้วคุณจะกำหนดชื่อเพื่อเชื่อมโยงกับที่อยู่ IP คุณไม่จำเป็นต้องระบุ localhost สำหรับ 127.0.0.1 คุณสามารถระบุชื่อที่คุณต้องการ
ความแตกต่างที่สำคัญคือการเชื่อมต่อสามารถทำได้ผ่าน Unix Domain Socket ดังที่ระบุไว้ที่นี่: localhost vs. 127.0.0.1
localhostเป็นอิสระจากโปรโตคอลทั้ง IPv4 และ IPv6 จะทำงานได้