ความแตกต่างระหว่าง localhost และที่อยู่ IP


16

ถ้าผูกซ็อกเก็ตในหลามเพื่อ localhost, 8200 นี้สามารถเข้าถึงได้ผ่านทางhttp: // localhost: 8200 / แต่ไม่ใช่http: // xxxx: 8200 /

หากผูกซ็อกเก็ตใน Python กับ xxxx, 8200, machinename, 8200 สามารถเข้าถึงได้ผ่านhttp: // xxxx: 8200 /และhttp: // machinename: 8200 /แต่ไม่ใช่http: // localhost: 8200 /

ฉันคิดว่า localhost หมายถึง 'เครื่องนี้' และการใช้มันจะ 'วนกลับ' ไปยังที่อยู่ IP ของเครื่อง แต่ดูเหมือนว่าจะเป็น IPS ที่แตกต่างกัน

127.0.0.1 เป็นที่อยู่ IP ที่แตกต่างกันเสมอกับที่อยู่ IP ของเครื่องหรือไม่

อัปเดต:

ฉันเข้าใจว่าตัวเลขจริงต่างกัน แต่ลูปแบ็คทำอะไรได้บ้าง

ตัวอย่างเช่นwikepediaบอกว่า
'ชี้เว็บเบราว์เซอร์ไปยัง URL http://127.0.0.1/หรือhttp: // localhost /จะเข้าถึงเว็บไซต์ของคอมพิวเตอร์นั้น'

แต่เว็บไซต์นั้นจะสามารถเข้าถึงได้ใน xxxx และอาจจะตั้งค่าด้วยซ็อกเก็ตเดียวบน xxxx ดังนั้นการอ้างอิงทั้งสองจะทำงานอย่างไร

สรุป:

ฉันคิดว่าในที่สุดฉันก็เข้าใจว่า 127.0.0.1 และ xxxx ทำงานเช่นนี้

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

และไม่

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

หรือ

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

ขอบคุณทุกคนสำหรับความช่วยเหลือ


1
คุณเขียนว่า "is 127.0.0.1 เสมอที่อยู่ IP ที่แตกต่างกันไปยังที่อยู่ IP ของเครื่อง" ตัวเลขระหว่างจุดต่างกันนั่นคือที่อยู่ IP ที่แตกต่างกัน เป็นคำถามแปลก ๆ ที่คุณถาม หากตามที่อยู่ IP ของเครื่องคุณหมายถึงอย่างอื่นที่ไม่ใช่ 127.0.0.1 ดังนั้นใช่มันจะเป็นที่อยู่ IP อื่น และถ้าสิ่งที่คุณเรียกว่าที่อยู่ IP ของเครื่องคือ 192.168.0.1 (หรือช่วงมาตรฐานท้องถิ่นอื่น ๆ ) คุณก็ไม่ต้องกลัวที่จะพูดเช่นนั้น คุณสามารถเขียนแทน xxxx ที่อยู่ 192 แห่งจะไม่มีอยู่บนอินเทอร์เน็ต
barlop

การอ้างอิงสำหรับทั้งสองทำงานเนื่องจากวิธีกำหนดค่าเว็บเซิร์ฟเวอร์ คุณสามารถบอกเซิร์ฟเวอร์ให้ผูกกับที่อยู่ทั้งหมดหรือฟังเฉพาะที่อยู่เท่านั้น เนื่องจาก Loopback และ IP จริงเป็นที่อยู่ที่แตกต่างกันการกำหนดค่าจึงกำหนดว่า IP ใดที่จะรับฟัง เนื่องจาก localhost เป็นเพียงรายการโฮสต์สำหรับ 127.0.0.1 จึงจะทำงานได้เมื่อเว็บเซิร์ฟเวอร์ถูกผูกไว้กับ 127.0.0.1 เท่านั้น
ปอกเปลือก

คำตอบ:


17

เพื่อตอบคำถามของคุณ

127.0.0.1 ไม่ได้เป็นเพียงที่อยู่ IP ที่แตกต่างจากที่อยู่ IP ของเครื่อง แต่ก็เป็นส่วนต่อประสานที่แตกต่างกันเช่นกัน ไม่ควรเห็น 127.0.0.1 ในเครือข่ายท้องถิ่น มันเป็นที่อยู่ IP ภายในพิเศษสำหรับอะแดปเตอร์ย้อนกลับ

xxxx จะเป็นอีเธอร์เน็ตการ์ดของคุณ

โดย 'localhost' เป็นเพียงรายการในไฟล์โฮสต์ที่ชี้ไปที่ 127.0.0.1

หากคุณผูกซ็อกเก็ตกับ 127.0.0.1:8200 ดังนั้นเฉพาะไคลเอ็นต์ที่ทำงานในเครื่องเท่านั้นที่จะสามารถเข้าถึงได้และจะมีเฉพาะhttp://127.0.0.1:8200หรือhttp: // localhost: 8200 (หรือรายการไฟล์โฮสต์หรือ DNS ชี้ไปที่ 127.0.0.1)

ซ็อกเก็ตที่เชื่อมโยงกับ xxxx: 8200 จะสามารถใช้ได้ผ่านhttp: // xxxx: 8200หรือรายการไฟล์ dns หรือโฮสต์ที่ชี้ไปที่นั้น

การเชื่อมต่อซ็อกเก็ตกับ 127.0.0.1 จะไม่ทำให้สามารถใช้งานได้บนอินเทอร์เฟซอีเธอร์เน็ตเช่นกัน

นั่นเป็นเหตุผลที่คุณไม่สามารถเชื่อมต่อกับ xxxx: 8200

คุณสามารถผูกพอร์ต 8200 กับอินเทอร์เฟซที่มีอยู่ทั้งหมด (0.0.0.0) จากนั้นควรทำงาน


ดังนั้นบิต 'วนรอบ' จะทำอย่างไร มันวนกลับไปเป็นเท่าไร? ฉันคิดว่ามันเป็นวิธีการอ้างอิงที่อยู่ IP ของเครื่องสิ่งที่เกิดขึ้นเป็น 'เช่น 127.0.0.1 => xxxx
David

1
อินเตอร์เฟส loopback เป็นอินเตอร์เฟสเสมือน มักใช้เพื่ออนุญาตให้โปรแกรมพูดคุยกันในเครื่องเดียวกัน ไม่ใช่วิธีอ้างอิงที่อยู่ IP ของเครื่อง 127.0.0.1 เป็นที่อยู่ IP ของอะแดปเตอร์เสมือนลูปแบ็ค
Matt H

1
อีกสิ่งหนึ่งเกี่ยวกับอะแดปเตอร์ลูปแบ็คคือเนื่องจากเป็นเสมือนจริงมันไม่ได้ส่งผ่านแพ็กเก็ตใด ๆ ไปยังการ์ดเครือข่าย
แมตต์เอช

1
แท้จริงเสียเวลา 4 ชั่วโมงที่ไม่เข้าใจแนวคิดนี้ ... ดูเหมือนว่าบางเว็บเซิร์ฟเวอร์จะผูกกับทั้ง xxxx และ 127.0.0.1 โดยอัตโนมัติสำหรับคุณซึ่งทำให้เกิดความสับสน สุดยอดคำถามและคำตอบ ขอบคุณ =)
jrhee17

3

ตัวอย่างเช่น wikepedia บอกว่า 'ชี้เว็บเบราว์เซอร์ไปยัง URL http://127.0.0.1/หรือhttp: // localhost /จะเข้าถึงเว็บไซต์ของคอมพิวเตอร์นั้น'

คลาดเคลื่อนเล็กน้อย มันอาจทำเช่นนั้น อย่างเท่าเทียมกันอาจไม่นำมาใช้กับเว็บไซต์ใด ๆ และเป็นไปได้ที่จะแสดงเว็บไซต์ภายในที่แตกต่างจากสิ่งที่คุณได้รับเมื่อคุณใช้ที่อยู่ xxxx ของคุณ

127.0.0.1 ชี้ไปที่เครื่องของคุณเอง แต่นั่นไม่ได้หมายความว่ามันจะทำงานเหมือนเดิมเมื่อมันมาถึงเครื่องของคุณ

หากคุณต้องการการเปรียบเทียบที่ไม่ใช่ด้านเทคนิคคุณสามารถพิจารณาพวกเขาถึงประตูที่แตกต่างเข้ามาในบ้านของคุณ

มีทั้งคู่ชี้ไปที่บ้านหลังเดียวกัน แต่พวกเขาไม่เหมือนกัน มันเป็นไปได้ที่แต่ละประตูจะพาคุณเข้าไปในห้องเดียวกันหรือพวกเขาอาจจะพาคุณไปที่ห้องอื่น นอกจากนี้ยังเป็นไปได้ที่จะล็อคประตูหนึ่งและไม่อื่น ๆ

เมื่อคุณกำหนดค่าเว็บไซต์คุณจะระบุที่อยู่ที่จะผูกและบ่อยครั้งคำตอบคือที่อยู่ทั้งหมด (นั่นเทียบเท่ากับให้ทุกประตูนำคุณเข้าสู่ห้องเดียว)

คุณสามารถระบุเว็บไซต์เพื่อผูกกับที่อยู่เดียวเท่านั้น (นั่นเท่ากับล็อคประตูทุกบานยกเว้นประตูเดียว)

หากคุณมีเว็บไซต์สองแห่งขึ้นไปคุณสามารถผูกเว็บไซต์เหล่านั้นเพื่อแยกที่อยู่ (นั่นเท่ากับการให้แต่ละประตูเข้าไปในห้องแยก)

ตัวอย่างของการอ้างอิงทั้งสองวิธีคอมพิวเตอร์ Windows 7 ของฉันติดตั้ง IIS เมื่อฉันไปที่ตัวจัดการ IIS และคลิกขวาบนเว็บไซต์เริ่มต้นมันให้ตัวเลือกเมนู 'แก้ไขการผูก' การเลือกที่แสดงรายการการรวม ฉันมีเพียงอันเดียว แต่สำหรับที่อยู่ IP นั้นมี * ซึ่งหมายถึง IIS ฟังที่อยู่ IP ทั้งหมดของฉัน


การเปรียบเทียบที่ยอดเยี่ยม! ขอบคุณมาก ๆ ! ฉันเพิ่งทำการทดลอง ฉันผูก127.0.0.1:5000เว็บไซต์สำเร็จแล้วและผูก192.168.1.104:5000เข้ากับเว็บไซต์อื่น กุญแจคือนั่นaddress:portหมายถึงห้องที่แตกต่างกัน (บริการ) ในบ้าน (คอมพิวเตอร์)
Rick

1

ที่อยู่ IP ทุกตัวในระบบมีความเป็นอิสระและสามารถเชื่อมต่อกันด้วยซ็อกเก็ตแยกกันยกเว้นที่อยู่พิเศษ 0.0.0.0 ซึ่งระบุว่าระบบปฏิบัติการจะผูกซ็อกเก็ตเข้ากับอินเตอร์เฟสทั้งหมด


1
แต่ 127.0.0.1 ยังเป็นที่อยู่พิเศษเป็นตัวเลือกที่ใช้กันมากที่สุดสำหรับส่วนต่อประสานย้อนกลับ ที่อยู่นั้นวนกลับไปที่อะไร?
เดวิด

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