ที่อยู่ IP ':: 1' คืออะไร?


110

ฉันกำลังเล่นกับซ็อกเก็ตบนเครื่องท้องถิ่นโดยไม่มีการเชื่อมต่อเครือข่าย ดูด้านล่าง:

IPAddress address = IPAddress.Any; // doesn't work
IPAddress address = IPAddress.Parse("::1"); // works

ที่อยู่::1IP คืออะไร? เป็นที่อยู่ IP เริ่มต้นที่มีอยู่หรือเป็นที่อยู่ย้อนกลับ? จะเกิดอะไรขึ้นกับรหัสด้านบน (สายการทำงาน) บนเครื่องที่มีที่อยู่ IP เฉพาะและการเชื่อมต่อเครือข่าย

แก้ไข:

รหัสที่แน่นอนถูกใช้เพื่อผูกที่อยู่ IP เฉพาะกับซ็อกเก็ต นี่คือ:

ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind);
// here's the bind delegate:
private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount)
{
   return new IPEndPoint(IPAddress.Parse("::1"), 0);
}

4
IPAddress.Anyคือ::0คุณควรใช้IPAddress.Loopbackสำหรับการเชื่อมต่อภายใน (ย้อนกลับ)
J-16 SDiZ

ฉันคิดว่าสิ่งนี้ควรจะโพสต์บน SuperUser.com
Kamyar

ฉันสมมติว่าส่วนที่บอกว่าIPAddress.Parsเป็นจริงIPAddress.Parseถูกต้อง?
Brad

คำถามย้อนกลับ
user202729

คำตอบ:


152

::1คือที่อยู่ย้อนกลับใน IPv6 คิดว่าเป็นเวอร์ชัน IPv6 ของ127.0.0.1.

ดูhttp://en.wikipedia.org/wiki/Localhost


1
ที่ตัวอย่างด้านบนใช้IPAddress.Parse("127.0.0.1")ไม่ได้กับเครื่องของฉัน
Xaqron

1
@Xaqron - ฟังดูเหมือนคำถาม superuser มากกว่าเพราะอาจหมายความว่ามีบางอย่างเสียกับ IPv4 TCP / IP stack ของคุณ
Joel Coehoorn

Xaqron อาจเป็นไฟร์วอลล์บล็อก v4 แต่ไม่ใช่ v6 Traffic?
SilverbackNet

ฉันใช้Windows Server 2008 Enterprise Edition 64-bitและไม่ได้ติดตั้งไฟร์วอลล์ของ บริษัท อื่น ฉันสงสัยว่าทำไมฉันไม่สามารถเชื่อม127.0.0.1ต่อกับซ็อกเก็ตของฉันในขณะที่::1มีอยู่
Xaqron

@Xaqron คุณสามารถแสดงรหัสของคุณที่คุณพยายามใช้งานได้หรือไม่? คุณบอกว่า "ได้ผล" และ "ไม่ได้ผล" แต่นั่นไม่เป็นประโยชน์กับเรา
Brad

18

เพียงเพื่อเพิ่มข้อมูลเพิ่มเติมเล็กน้อยในที่อยู่ลูปแบ็คของ IPv6 จะแสดงเป็นศูนย์ 127 ตามด้วย 1 ie (0000 ... 127 ครั้ง. 1) การแทนค่าควรจะเป็นแบบนี้ -> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0001แต่เรามีการแทนแบบสั้น ๆ สำหรับสิ่งนี้ หากมีเลขศูนย์ทั้งหมดในบล็อกเดียวที่คุณสามารถเปลี่ยนได้โดย 0. เดียวดังนั้นมันจะกลายเป็น -> 0: 0: 0: 0: 0: 0: 0: 0001 อีกครั้งที่เราจะเห็นได้ว่าเรามีการทำงานของศูนย์ที่พวกเขาสามารถตัดออกและเราได้รับ -> :: 0001 -> :: 1


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