อะไรคือความแตกต่างระหว่าง 127.0.0.1 และ 0.0.0.0?

พวกเราส่วนใหญ่เคยได้ยินคำว่า '127.0.0.1 และ 0.0.0.0' แต่อาจไม่ได้คิดมากกับพวกเขา แต่ถ้าทั้งสองดูเหมือนจะชี้ไปที่ตำแหน่งเดียวกันจริงๆแล้วความแตกต่างที่แท้จริงระหว่างทั้งสองคืออะไร? โพสต์ SuperUser Q&A ของวันนี้ช่วยให้ผู้อ่านสับสน

เซสชันคำถามและคำตอบของวันนี้มาถึงเราโดยได้รับความอนุเคราะห์จาก SuperUser ซึ่งเป็นแผนกย่อยของ Stack Exchange ซึ่งเป็นกลุ่มเว็บไซต์ถาม & ตอบที่ขับเคลื่อนโดยชุมชน

ได้รับความอนุเคราะห์จาก Kate Gardiner (Flickr)

คำถาม

ผู้อ่าน SuperUser Sagnik Sarkar ต้องการทราบความแตกต่างระหว่าง 127.0.0.1 และ 0.0.0.0 คืออะไร:

ฉันเข้าใจว่า 127.0.0.1 ชี้ไปที่localhostและ 0.0.0.0 นั้นก็ทำเช่นกัน (แก้ไขฉันถ้าฉันผิด) แล้วความแตกต่างระหว่าง 127.0.0.1 และ 0.0.0.0 คืออะไร?

ความแตกต่างระหว่าง 127.0.0.1 และ 0.0.0.0 คืออะไร?

คำตอบ

ผู้สนับสนุน SuperUser DavidPostill มีคำตอบสำหรับเรา:

อะไรคือความแตกต่างระหว่าง 127.0.0.1 และ 0.0.0.0?

  • 127.0.0.1 คือที่อยู่ย้อนกลับ (หรือที่เรียกว่า localhost)
  • 0.0.0.0 คือเมตาแอดเดรสที่ไม่สามารถกำหนดเส้นทางได้ซึ่งใช้ในการกำหนดเป้าหมายที่ไม่ถูกต้องไม่รู้จักหรือใช้ไม่ได้ (ตัวยึดตำแหน่ง 'ไม่มีที่อยู่เฉพาะ')

ในบริบทของรายการเส้นทางมักหมายถึงเส้นทางเริ่มต้น

ในบริบทของเซิร์ฟเวอร์ 0.0.0.0 หมายความว่าอยู่ IPv4 ทั้งหมดบนเครื่องท้องถิ่น หากโฮสต์มีที่อยู่ IP สองรายการคือ 192.168.1.1 และ 10.1.2.1 และเซิร์ฟเวอร์ที่ทำงานบนโฮสต์รับฟังข้อมูลที่ 0.0.0.0 จะสามารถเข้าถึงได้จาก IP ทั้งสองนั้น

ที่อยู่ IP 127.0.0.1 คืออะไร

127.0.0.1 เป็นโปรโตคอลย้อนกลับทางอินเทอร์เน็ต (IP) นอกจากนี้ยังเรียกว่าlocalhost ที่อยู่นี้ใช้เพื่อสร้างการเชื่อมต่อ IP กับเครื่องหรือคอมพิวเตอร์เครื่องเดียวกับที่ผู้ใช้ปลายทางใช้

มีการกำหนดแบบแผนเดียวกันสำหรับคอมพิวเตอร์ที่รองรับการกำหนดแอดเดรส IPv6 โดยใช้ความหมายของ :: 1 การสร้างการเชื่อมต่อโดยใช้ที่อยู่ 127.0.0.1 เป็นแนวทางปฏิบัติที่พบบ่อยที่สุด อย่างไรก็ตามการใช้ที่อยู่ IP ใด ๆ ในช่วง 127 … * จะทำงานในลักษณะเดียวกันหรือคล้ายกัน โครงสร้างแบบวนกลับทำให้คอมพิวเตอร์หรืออุปกรณ์ที่มีความสามารถในการเชื่อมต่อเครือข่ายสามารถตรวจสอบความถูกต้องหรือสร้าง IP stack บนเครื่อง

ที่มา: 127.0.0.1 - ใช้ประโยชน์อะไรและทำไมจึงสำคัญ?

ที่อยู่พิเศษ

เครือข่ายคลาส A หมายเลข 127 ถูกกำหนดฟังก์ชันลูปแบ็คนั่นคือดาตาแกรมที่ส่งโดยโปรโตคอลระดับสูงไปยังที่อยู่เครือข่าย 127 ควรวนกลับภายในโฮสต์ ไม่ควรมีการส่งดาตาแกรมไปยังที่อยู่ 127 ของเครือข่ายบนเครือข่ายใด ๆ

ที่มา:หมายเลขเครือข่าย

ถ้าเป็น Whole Class A จุดของค่าตามอำเภอใจอื่น ๆ สำหรับออคเต็ตสามตัวสุดท้ายคืออะไร?

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

ที่มา: IP Reserved, Loopback และ Private Addresses

สำหรับข้อมูลเพิ่มเติมโปรดดูคำถาม Ask Ubuntu : อุปกรณ์ Loopback คืออะไรและฉันจะใช้มันได้อย่างไร

ที่อยู่ IP 0.0.0.0 คืออะไร?

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

ค่าศูนย์ทั้งหมดมีความหมายพิเศษ ดังนั้นจึงถูกต้องแต่มีความหมายที่อาจไม่เหมาะสม (และถือว่าไม่ถูกต้อง) สำหรับสถานการณ์เฉพาะ โดยพื้นฐานแล้วเป็นตัวยึดตำแหน่ง "ไม่มีที่อยู่เฉพาะ" สำหรับสิ่งต่างๆเช่นการเชื่อมโยงที่อยู่ของการเชื่อมต่อเครือข่ายผลลัพธ์สามารถกำหนดที่อยู่อินเตอร์เฟสที่เหมาะสมให้กับการเชื่อมต่อ หากคุณกำลังใช้เพื่อกำหนดค่าอินเทอร์เฟซสามารถลบที่อยู่ออกจากอินเทอร์เฟซได้ ขึ้นอยู่กับบริบทการใช้งานเพื่อพิจารณาว่า 'ไม่มีที่อยู่เฉพาะ' ทำอะไรได้บ้าง

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

ในบางกรณี '0' เท่านั้นที่จะใช้งานได้และมีผลเช่นเดียวกัน แต่ไม่รับประกัน 0.0.0.0 แบบฟอร์มที่เป็นวิธีมาตรฐานในการพูดว่า 'ไม่อยู่โดยเฉพาะอย่างยิ่ง' (ใน IPv6 ที่เป็น:: 0หรือเพียงแค่:: )

ที่มา:ความหมายของที่อยู่ IP 0.0.0.0 คืออะไร?

ใน Internet Protocol เวอร์ชัน 4 ที่อยู่ 0.0.0.0 คือเมตาแอดเดรสที่ไม่สามารถกำหนดเส้นทางได้ซึ่งใช้ในการกำหนดเป้าหมายที่ไม่ถูกต้องไม่รู้จักหรือไม่เกี่ยวข้อง การให้ความหมายพิเศษแก่ข้อมูลที่ไม่ถูกต้องคือการประยุกต์ใช้การส่งสัญญาณแบบอินแบนด์

ในบริบทของเซิร์ฟเวอร์ 0.0.0.0 หมายความว่าอยู่ IPv4 ทั้งหมดบนเครื่องท้องถิ่น หากโฮสต์มีที่อยู่ IP สองรายการคือ 192.168.1.1 และ 10.1.2.1 และเซิร์ฟเวอร์ที่ทำงานบนโฮสต์รับฟังข้อมูลใน 0.0.0.0 จะสามารถเข้าถึงได้ที่ IP ทั้งสอง ( หมายเหตุ: ข้อความนี้ซ้ำจากด้านบนเป็นส่วนหนึ่ง ของคำตอบโดยรวม )

ในบริบทของการกำหนดเส้นทาง 0.0.0.0 มักจะหมายถึงเส้นทางเริ่มต้นกล่าวคือเส้นทางที่นำไปสู่ ​​'ส่วนที่เหลือของอินเทอร์เน็ต' แทนที่จะเป็นที่ใดที่หนึ่งบนเครือข่ายท้องถิ่น

การใช้งานรวมถึง:

  • ที่อยู่ที่โฮสต์อ้างว่าเป็นของตนเองเมื่อยังไม่ได้รับการกำหนดที่อยู่ เช่นเมื่อส่งแพ็กเก็ต DHCPDISCOVER เริ่มต้นเมื่อใช้ DHCP
  • ที่อยู่ที่โฮสต์กำหนดให้กับตัวเองเมื่อคำขอที่อยู่ผ่าน DHCP ล้มเหลวหาก IP stack ของโฮสต์รองรับสิ่งนี้ การใช้งานนี้ถูกแทนที่ด้วยกลไก APIPA ในระบบปฏิบัติการสมัยใหม่
  • วิธีระบุโฮสต์ IPv4 ใด ๆเลย ใช้ในลักษณะนี้เมื่อระบุเส้นทางเริ่มต้น
  • วิธีระบุอย่างชัดเจนว่าเป้าหมายไม่พร้อมใช้งาน ที่มา:  127.0.0.1 - ใช้ประโยชน์อะไรและทำไมจึงสำคัญ?
  • วิธีระบุที่อยู่ IPv4 ใด ๆเลย ใช้ในลักษณะนี้เมื่อกำหนดค่าเซิร์ฟเวอร์ (เช่นเมื่อเชื่อมต่อซ็อกเก็ตการฟัง) โปรแกรมเมอร์ TCP รู้จักกันในชื่อ INADDR_ANY [ bind (2) ผูกกับแอดเดรสไม่ใช่อินเทอร์เฟซ ]

ใน IPv6 ที่อยู่ศูนย์ทั้งหมดเขียนว่า::

ที่มา: 0.0.0.0 [Wikipedia]

การค้นพบ DHCP / คำขอ

เมื่อไคลเอนต์บูทเป็นครั้งแรกระบบจะบอกว่าอยู่ในสถานะเริ่มต้นและส่งข้อความ DHCPDISCOVER บนเครือข่ายย่อยทางกายภาพภายในเครื่องผ่านพอร์ต User Datagram Protocol (UDP) 67 (เซิร์ฟเวอร์ BootP) เนื่องจากไคลเอนต์ไม่มีทางรู้ซับเน็ตที่เป็นของเครือข่าย DHCPDISCOVER คือซับเน็ตทั้งหมดที่ออกอากาศ (ที่อยู่ IP ปลายทางคือ 255.255.255.255) โดยมีที่อยู่ IP ต้นทาง 0.0.0.0 ที่อยู่ IP ต้นทางคือ 0.0.0.0 เนื่องจากไคลเอนต์ไม่มีที่อยู่ IP ที่กำหนดค่าไว้

หากเซิร์ฟเวอร์ DHCP มีอยู่บนซับเน็ตภายในเครื่องนี้และได้รับการกำหนดค่าและทำงานอย่างถูกต้องเซิร์ฟเวอร์ DHCP จะได้ยินการออกอากาศและตอบกลับด้วยข้อความ DHCPOFFER ถ้าเซิร์ฟเวอร์ DHCP ไม่มีอยู่บนซับเน็ตภายในเครื่องจะต้องมี DHCP / BootP Relay Agent บนซับเน็ตภายในนี้เพื่อส่งต่อข้อความ DHCPDISCOVER ไปยังซับเน็ตที่มีเซิร์ฟเวอร์ DHCP

เอเจนต์รีเลย์นี้สามารถเป็นโฮสต์เฉพาะ (เช่น Microsoft Windows Server) หรือเราเตอร์ (เช่นเราเตอร์ Cisco ที่กำหนดค่าด้วยคำสั่ง IP ตัวช่วยระดับอินเตอร์เฟสเป็นต้น)

หลังจากที่ลูกค้าได้รับ DHCPOFFER ก็ตอบสนองด้วยข้อความ DHCPREQUEST แสดงให้เห็นความตั้งใจที่จะยอมรับพารามิเตอร์ใน DHCPOFFER และย้ายเข้าไปในรัฐที่ร้องขอไคลเอนต์อาจได้รับข้อความ DHCPOFFER หลายข้อความหนึ่งข้อความจากเซิร์ฟเวอร์ DHCP แต่ละตัวที่ได้รับข้อความ DHCPDISCOVER ดั้งเดิม ไคลเอนต์เลือก DHCPOFFER หนึ่งรายการและตอบสนองต่อเซิร์ฟเวอร์ DHCP นั้นเท่านั้นโดยปริยายจะปฏิเสธข้อความ DHCPOFFER อื่น ๆ ทั้งหมด ไคลเอนต์ระบุเซิร์ฟเวอร์ที่เลือกโดยการเติมฟิลด์ตัวเลือกตัวระบุเซิร์ฟเวอร์ด้วยที่อยู่ IP ของเซิร์ฟเวอร์ DHCP

DHCPREQUEST ยังเป็นการออกอากาศดังนั้นเซิร์ฟเวอร์ DHCP ทั้งหมดที่ส่ง DHCPOFFER จะเห็น DHCPREQUEST และแต่ละเซิร์ฟเวอร์จะทราบว่า DHCPOFFER ได้รับการยอมรับหรือปฏิเสธ ตัวเลือกการกำหนดค่าเพิ่มเติมใด ๆ ที่ไคลเอ็นต์ต้องการจะรวมอยู่ในฟิลด์ตัวเลือกของข้อความ DHCPREQUEST แม้ว่าไคลเอ็นต์จะได้รับที่อยู่ IP แต่ก็จะส่งข้อความ DHCPREQUEST พร้อมที่อยู่ IP ต้นทางเป็น 0.0.0.0 ในขณะนี้ไคลเอนต์ยังไม่ได้รับการตรวจสอบว่ามีความชัดเจนในการใช้ที่อยู่ IP

การสนทนาไคลเอนต์เซิร์ฟเวอร์สำหรับไคลเอนต์ที่ได้รับที่อยู่ DHCP โดยที่ไคลเอนต์และเซิร์ฟเวอร์ DHCP อยู่บนซับเน็ตเดียวกัน:

ที่มา: การทำความเข้าใจและการแก้ไขปัญหา DHCP ใน Catalyst Switch หรือ Enterprise Networks

เส้นทางเริ่มต้น

เอกสารนี้อธิบายวิธีกำหนดค่าเส้นทางเริ่มต้นหรือเกตเวย์ของทางเลือกสุดท้าย ใช้คำสั่ง IP เหล่านี้:

  • ip เริ่มต้นเกตเวย์
  • ip เครือข่ายเริ่มต้น
  • เส้นทาง ip 0.0.0.0 0.0.0.0

เส้นทาง IP 0.0.0.0 0.0.0.0

การสร้างเส้นทางแบบคงที่ไปยังเครือข่าย 0.0.0.0 0.0.0.0 เป็นอีกวิธีหนึ่งในการตั้งค่าเกตเวย์ของทางเลือกสุดท้ายบนเราเตอร์ เช่นเดียวกับคำสั่งip default-network การใช้เส้นทางแบบคงที่ไปที่ 0.0.0.0 จะไม่ขึ้นอยู่กับโปรโตคอลการกำหนดเส้นทางใด ๆ อย่างไรก็ตามต้องเปิดใช้งานการกำหนดเส้นทาง IP บนเราเตอร์

หมายเหตุ: IGRP ไม่เข้าใจเส้นทางไปที่ 0.0.0.0 ดังนั้นจึงไม่สามารถเผยแพร่เส้นทางเริ่มต้นที่สร้างโดยใช้คำสั่งip route 0.0.0.0 0.0.0.0 ใช้คำสั่งip default-networkเพื่อให้ IGRP เผยแพร่เส้นทางเริ่มต้น

ที่มา: การกำหนดค่า Gateway of Last Resort โดยใช้คำสั่ง IP

มีสิ่งที่จะเพิ่มคำอธิบาย? ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange ที่เชี่ยวชาญด้านเทคโนโลยีอื่น ๆ หรือไม่? ดูกระทู้สนทนาฉบับเต็มได้ที่นี่