เครื่องมือสร้างพอร์ตสุ่ม
รายละเอียดทางเทคนิค
เครื่องสร้างพอร์ตสุ่มทำงานอย่างไร
เครื่องมือนี้ทำอะไร
เครื่องสร้างพอร์ตสุ่มเลือกหมายเลขพอร์ต 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