0.0.0.0 และ *: * เป็นตัวแทนของสิ่งเดียวกันหรือไม่?


23

ฉันใช้ netstat (ใน Windows) เพื่อดูพอร์ตที่ฟังสำหรับ TCP และ UDP:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสังเกตเห็นว่าในคอลัมน์ที่อยู่ต่างประเทศ UDP จะแสดง*:*แทน0.0.0.0:0ค่าสองค่านี้แสดงถึงสิ่งเดียวกันหรือไม่ ถ้าเป็นเช่นนั้นแล้วทำไมไม่แสดง UDP *:*แทน0.0.0.0:0?


ฉันเชื่อว่า*:*เป็น IPv6 ในขณะที่0.0.0.0:0เป็น IPv4
LPChip

ฉันได้สังเกตเห็นสิ่งต่อไปนี้: UDP 0.0.0.0:5355 *:*นั่นหมายความว่าข้อมูลสามารถส่งระหว่าง IPv4 และ IPv6 ได้หรือไม่?
user612473


4
IPv6 ที่เทียบเท่ากับ 0.0.0.0 คือ [::]
marsh-wiggle

2
@ LPChip คุณเข้าใจผิด *:*ไม่ได้พูดอะไรเกี่ยวกับรุ่น IP อย่างไรก็ตามเนื่องจากที่อยู่ในท้องถิ่นของซ็อกเก็ตนั้นเป็น IPv4 เท่านั้นดังนั้นที่อยู่ระยะไกลจึงต้องเป็น IPv4 เช่นกัน
kasperd

คำตอบ:


12

มีการชี้ให้เห็นว่าคำตอบของฉันมีข้อผิดพลาด เนื่องจากฉันไม่สามารถลบได้ฉันจะให้ที่ถูกต้องแทน

การแสดงออก*:*หมายถึง "ที่อยู่ใด ๆ พอร์ตใด ๆ " ผู้ฟัง UDP ทั้งหมดจะแสดงลายเซ็นนี้ นี่เป็นเพราะลักษณะการเชื่อมต่อของ UDP


คำตอบเดิม (ไม่ถูกต้อง) ใช่และไม่. *:*อ้างถึงที่อยู่ IPv6 ใด ๆ ความแตกต่างระหว่างที่อยู่ที่ไม่รู้จัก / ไม่ได้ระบุนั้นคลุมเครือใน IPv4 ดังนั้นเราจึงใช้ 0.0.0.0/0 เพื่อแสดงโฮสต์ใด ๆ บนเครือข่าย แต่ใน IPv6 มีความแตกต่างเล็กน้อย

อย่างไรก็ตามส่วนใหญ่คนใช้::เพื่อแสดงสตริงที่ต่อเนื่องกันของ 0

ในที่อยู่ IPv6 ศูนย์ลำดับที่ต่อเนื่องกันสามารถถูกแทนที่ด้วย:: :

  • 0.0.0.0/0=> 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000 => ::=>*:*
  • fe80:0000:0000:0000:2000:0aff:fea7:0f7c => fe80::2000:0aff:fea7:0f7c

การแทนด้วยการใช้ wildcard อนุญาตให้ควบคุมรูปแบบที่อยู่ได้อย่างละเอียดยิ่งขึ้น ตัวอย่างเช่น::จะไม่ตรงกันfe80::2000:0aff:fea7:0f7cแต่*:*จะ

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


5
แต่คุณเขียนในคำตอบของคุณว่าที่*:* refers to ANY IPv6 address นี่คุณพูดว่าany..addressiepresumably IPv4 หรือ IPv6 แล้วมันคืออะไร? ถูก*:*จำกัด ตัวเองให้ IPv6, หรือไม่ก็อนุญาตให้มีการ IPv4 เกินไป?
barlop

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

7
IPv6 ไม่เกี่ยวข้องกับคำถามนี้เลย
ฮอบส์

8
คำตอบนี้ผิดทั้งหมดสำหรับคำถามที่ถาม
แบรด

3
ในฐานะที่ เป็นความเห็นของ kasperdบันทึก (และความคิดเห็นของ hobbsเกินไป), IPv6 ไม่เกี่ยวข้องกับคำถาม คำถามเกี่ยวกับสิ่งที่เราเห็นในคอลัมน์ที่อยู่ต่างประเทศซึ่งสอดคล้องกับสิ่งที่อยู่ในแถวเดียวกันในคอลัมน์ที่อยู่ในพื้นที่ซึ่งเป็น IPv4 (แม้ว่าจะมีระบบปฏิบัติการบางระบบ แต่การฟังในตระกูลที่อยู่ / รุ่น IP หนึ่งอาจฟังโดยอัตโนมัติในตระกูลที่อยู่อื่น)
TOOGAM

15

The /อ้างถึง subnet netmask ซึ่งเป็นส่วนหนึ่งของ IP Layer

The :อ้างถึงพอร์ตซึ่งเป็นส่วนหนึ่งของ Transport Layer

สำหรับ TCP มันสมเหตุสมผลแล้วที่จะมี remote end สำหรับการเชื่อมต่อ

UDP เนื่องจากไม่มีการเชื่อมต่อจึงไม่มีเหตุผลที่จะแสดงที่อยู่ต่างประเทศ

ความรู้สึกของฉันคือมันจะแสดงสัญลักษณ์แทนสำหรับ UDP และอาจมีการแยกวิเคราะห์ผลลัพธ์ที่เป็นมิตรมากขึ้นเล็กน้อยหรือเพื่อแสดงว่าคุณใช้ IPv4 / 6:

IPV4 "*:*" VS IPV6 "[::]:*"


ฉันแค่บอกสิ่งนี้กับเพื่อนบางคน คุณสามารถแสดง PORTS ที่ฟังได้ แต่เพื่อแสดงเซสชันระยะไกลที่เกิดขึ้นจริงเมื่อไม่มีอาจมีเหตุผลว่าทำไมมันแสดงเป็น*:*เซสชัน UDP ระยะไกลที่ไม่มีอยู่จริง ฉันเห็นด้วยกับคุณที่นี่
NotAdmin Dave

6

ในทั้งสองกรณีข้อมูลนั้นไม่มีความหมายโดยทั่วไป แต่บ่งบอกถึงสิ่งเดียวกันมากกว่าหรือน้อยกว่า

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

บรรทัดที่สองของคุณคือซ็อกเก็ต UDP UDP เป็นโปรโตคอลที่ไม่มีการเชื่อมต่อซึ่งหมายความว่ามันจะส่งและรับแพ็คเก็ตโดยปราศจากความคิดว่าใครเชื่อมต่อกับใครไม่ว่าแพ็กเก็ตนั้นเป็นส่วนหนึ่งของการสนทนาที่มีอยู่หรือว่าข้อมูลเพิ่งมาจากสีน้ำเงิน คอลัมน์ที่อยู่ในท้องถิ่นมีความหมายเช่นเดียวกับที่ทำกับ TCP และคอลัมน์ที่อยู่ระยะไกลนั้นไม่มีความหมายเนื่องจากซ็อกเก็ต UDP สามารถมีเพียร์หนึ่ง, เพื่อนหลายคนหรือไม่มีเพื่อนในเวลาใดก็ได้ (ที่จริงแล้ว POSIX มีความคิดเกี่ยวกับ "ซ็อกเก็ต UDP ที่เชื่อมต่อ" แต่มันก็ค่อนข้างไกลไปหน่อย)

ทีนี้คำถาม: ทำไมมันถึงแสดงต่างออกไป ดูเหมือนว่าจะไม่มีอะไรมากเกินความจริงของ Windows netstat code Linux (เครื่องมือสุทธิ) netstat แสดง0.0.0.0:*สำหรับรีโมตปลายทางของทั้ง TCP Listen sockets และ UDP sockets (สำหรับ IPv4; จะแสดง:::*สำหรับ IPv6) ซึ่งแตกต่างจากตัวอย่างใด ๆ บน Windows แต่อย่างน้อยก็สอดคล้องกันในโปรแกรมเดียวกัน บางที Windows กำลังจะแยกความหมายระหว่าง "จะเติมในภายหลัง" ในกรณีของ TCP และ "open to Anything" ในกรณีของ UDP แต่เป็นไปได้ว่าสองบิตของโค้ดถูกเขียนโดยคนสองคนที่ไม่มี ความกังวลเป็นพิเศษสำหรับความมั่นคง


+1 สำหรับการเริ่มต้นของย่อหน้าที่ 4 0.0.0.0 มีเอกสารบางส่วน: ที่อยู่ของศูนย์ทั้งหมดคือที่อยู่ "ไม่ระบุ" (อ้างอิงจาก IPv6 Addressing RFC 4291 วินาที 2.5.2 ) ซึ่งมักใช้กับที่อยู่ที่ไม่รู้จัก RFC 1700 หน้า 4กล่าวถึง "สามารถใช้เป็นที่อยู่แหล่งที่มา" เท่านั้นและส่วนRFC 1122 # หน้า -29 "a" จะอธิบายการใช้งานเพิ่มเติม ( คำตอบของฉันเกี่ยวกับ :::กล่าวถึง 0.0.0.0)
TOOGAM

ไม่ใช่0.0.0.0:0ค่าในที่อยู่ต่างประเทศคอลัมน์หมายความว่าที่อยู่ IP และหมายเลขพอร์ตสามารถส่งข้อมูลไปยังซ็อกเก็ตนี้หรือไม่? และถ้าค่านี้เป็นเช่น127.0.0.0:12345นั้นหมายความว่าเฉพาะที่อยู่ IP ที่127.0.0.0มีหมายเลขพอร์ต12345สามารถส่งข้อมูลไปยังซ็อกเก็ตนี้และไม่มีใครอื่นได้หรือไม่
Tom

6

ความแตกต่างเป็นเพียงสัญกรณ์

Netstat ใน Windows ใช้0.0.0.0:0เพื่อแสดงแนวคิดที่เป็นนามธรรมของ "ใด ๆ ที่อยู่ระยะไกลและพอร์ต" สำหรับผู้ฟัง TCP IPv4 ท้องถิ่นและ*:*สำหรับผู้ฟัง UDP สำหรับ IPv6 ที่อยู่ระยะไกลจะถูกแทนด้วย[::]:0สำหรับ TCP และ*:*UDP

ใน OS X *.*ใช้สำหรับทั้ง TCP และ UDP ไม่ว่าจะเป็น IPv4 หรือ IPv6 (โปรดทราบว่า OS X ใช้จุดเพื่อแยกที่อยู่และพอร์ต) Linux ใช้0.0.0.0:*สำหรับ IPv4 และ:::*สำหรับ IPv6 โดยที่สองโคลอนแรกแสดงถึงตัวย่อสำหรับที่อยู่ IPv6 ทั้งหมดและโคลอนที่สามเป็นตัวคั่นระหว่างที่อยู่และพอร์ต

IIRC จากสิ่งที่ฉันได้ยินหรืออ่านมานานแล้วฉันคิดว่าการจับคู่ UDP สามารถปรากฏขึ้นได้ แต่โดยทั่วไปแล้วจะไม่เกิดขึ้นเพราะขาดการเชื่อมต่อและการเชื่อมต่อ UDP มักจะสั้นมาก แต่ฉันไม่เคยเห็นสิ่งนี้มาก่อนเลยดังนั้นมันจึงไม่ถูกต้อง

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