DevToys Web Pro iconDevToys Web Proบล็อก
ให้คะแนนเรา:
ลองใช้ส่วนขยายเบราว์เซอร์:

เครื่องมือสร้างพอร์ตสุ่ม

  • ช่วง
    จำนวน
    12451Registered (IANA-assigned)
    46160Registered (IANA-assigned)
    19307Registered (IANA-assigned)
    42860Registered (IANA-assigned)
    30723Registered (IANA-assigned)
    รายละเอียดทางเทคนิค

    เครื่องสร้างพอร์ตสุ่มทำงานอย่างไร

    เครื่องมือนี้ทำอะไร

    เครื่องสร้างพอร์ตสุ่มเลือกหมายเลขพอร์ต TCP/UDP หนึ่งหรือหลายหมายเลขจากช่วง IANA ที่ร้องขอ โดยใช้ crypto.getRandomValues() ร่วมกับ rejection sampling แบบไม่เอนเอียง โดยค่าเริ่มต้นจะหลีกเลี่ยงทั้งพอร์ต well-known และรายการพอร์ตสำหรับการพัฒนาที่ใช้กันอย่างแพร่หลายที่คัดสรรไว้ (3000, 8080, 5432, 6379 ฯลฯ) เพื่อให้หมายเลขที่สร้างสามารถนำไปใช้กับบริการโลคัลใหม่ได้ทันที

    กรณีการใช้งานทั่วไปของนักพัฒนา

    นักพัฒนาที่กำลังสปินอัปไมโครเซอร์วิสใหม่ สแตก docker-compose หรือสภาพแวดล้อมทดสอบแบบชั่วคราว ใช้เครื่องมือนี้เพื่อเลือกพอร์ตที่ไม่ชนกันโดยไม่ต้องคิดมาก ทีม SRE จัดสรรพอร์ตสำหรับบริการภายในใหม่โดยไม่ต้องไล่ดูตาราง IANA ด้วยมือ ช่วง 'ephemeral' เหมาะสำหรับ TCP test harness ฝั่งไคลเอนต์ที่ต้องการซ็อกเก็ตอายุสั้นซึ่งสอดคล้องกับพฤติกรรมของเคอร์เนลในโปรดักชัน

    รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย

    มีช่วงที่กำหนดไว้ล่วงหน้า 3 ช่วง: Well-known (1–1023), Registered / Unprivileged (1024–49151) และ Dynamic / Ephemeral (49152–65535) หมายเลขที่สร้างแต่ละตัวจะมีคำอธิบายกำกับประเภท รายการหลีกเลี่ยงพอร์ตยอดนิยมครอบคลุม HTTP/HTTPS, SSH, พอร์ตฐานข้อมูลที่พบบ่อย, เซิร์ฟเวอร์สำหรับพัฒนาที่พบบ่อย, คิวข้อความ และบริการแคชมาตรฐาน

    ข้อผิดพลาดที่พบบ่อยและกรณีขอบ

    การสุ่มเลือกพอร์ตไม่ได้ตรวจสอบว่าพอร์ตนั้นว่างจริงบนเครื่องของคุณหรือไม่ — ต้องอาศัยการพยายาม bind ระดับระบบปฏิบัติการ รายการ 'หลีกเลี่ยงพอร์ตยอดนิยม' เป็นรายการที่คัดสรร ไม่ได้ครอบคลุมทั้งหมด; ค่าเริ่มต้นเฉพาะอุตสาหกรรมบางอย่าง (Cassandra 9042, Elasticsearch 9300 ฯลฯ) ถูกทำเครื่องหมายไว้ แต่บริการภายในแบบกำหนดเองอาจยังชนกันได้ สร้างชุดใหม่หากตัวเลือกแรกชนกับสิ่งที่มีอยู่ในเครื่อง

    เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด

    ใช้เครื่องมือบนเบราว์เซอร์เมื่อกำลังกำหนดค่าบริการแบบครั้งเดียวหรือเขียนตัวอย่าง ในงานอัตโนมัติ ควรให้ OS เป็นผู้กำหนดพอร์ต (bind ไปที่พอร์ต 0 แล้วอ่านค่าที่เลือกกลับมา) — วิธีนี้รับประกันว่าพอร์ตว่างจริงและหลีกเลี่ยง race ระหว่างการสุ่มเลือกกับการ bind