จัดลำดับความสำคัญพอร์ตหนึ่งไปข้างหน้าข้ามอีกพอร์ตหนึ่ง


0

ฉันอยู่ในขั้นตอนการวิจัยของโครงการขนาดเล็กที่เกี่ยวข้องกับการส่งต่อพอร์ตลำดับความสำคัญ

ฉันมีกลุ่มลูกค้าที่พยายามติดต่อกับเซิร์ฟเวอร์เทอร์มินัลโดยมีวิทยุอยู่ด้านหลัง

ปัญหาคือว่าถ้าไคลเอนต์สองรายเข้าใช้พอร์ตเป้าหมายเดียวกันบนเซิร์ฟเวอร์เทอร์มินัลฉันเห็นข้อมูลขยะบนไคลเอนต์ที่ไม่ถูกต้อง

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

หมายเหตุพอร์ตเป้าหมายจะเหมือนกันสำหรับไคลเอ็นต์ทั้งสอง

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

ฉันอาจกระโดดปืนและพัฒนาแอพพลิเคชั่นหลามขนาดเล็กที่ฟังพอร์ต 2 พอร์ตและส่งต่อ "ลำดับความสำคัญ" ไปยังเซิร์ฟเวอร์เทอร์มินัล การบล็อกการส่งต่อของพอร์ต "ไม่มีลำดับความสำคัญ" จนกว่าจะมีจำนวนของการสื่อสารที่ไม่เกิดขึ้นในพอร์ตลำดับความสำคัญ

ฉันได้อ่านเกี่ยวกับ iptables, NATing, socat, QoS นิดหน่อย ฯลฯ แต่ดูเหมือนว่าฉันไม่สามารถหาสิ่งที่ตรงกับปัญหาของฉันได้

ฉันไม่มีผู้เชี่ยวชาญด้านระบบเครือข่ายและใช้ linux มาประมาณ 2 ปีแล้ว แต่ฉันไม่เคยทำอะไรมากกับสถานการณ์การกำหนดเส้นทาง TCP / IP / การส่งต่อนี้ดังนั้นฉันอยากจะรู้ว่ามีอะไรบางอย่างออกมาไหม ฉันด้วยการจัดลำดับความสำคัญพอร์ตหนึ่งไปข้างหน้าเหนือสิ่งอื่นและนั่นจะมีประสิทธิภาพมากกว่าที่แอพไพ ธ อนที่กำหนดเอง

ขอบคุณสำหรับความคิดเห็นใด ๆ

นี่คือ img ขนาดเล็กสำหรับการอ้างอิงสิ่งที่ฉันพยายามทำ:

การส่งต่อระดับความสำคัญ


1
นี่ไม่ใช่วิธีการทำงานของ TCP / IP และไม่มีโอกาสที่ระบบหนึ่งที่เชื่อมต่อกับพอร์ตเดียวกันจะได้รับข้อมูลที่ถูกกำหนดสำหรับระบบอื่น สิ่งที่คุณต้องการไม่ใช่การส่งต่อพอร์ตลำดับความสำคัญหากสิ่งนั้นมีอยู่จริง สิ่งที่คุณต้องการคือทางออกของปัญหาที่เกิดขึ้นจากสิ่งที่คุณเรียกว่า "เซิร์ฟเวอร์เทอร์มินัล" แต่คุณไม่ได้กำหนดไว้ หากปัญหาที่คุณกล่าวถึงมีอยู่มันจะเป็นไปไม่ได้เลยที่จะเรียกใช้แม้แต่เว็บเซิร์ฟเวอร์พื้นฐานที่มีการเชื่อมต่อมากกว่าหนึ่งคนและอินเทอร์เน็ตจะไม่มีอยู่จริง
Appleoddity

@Appleoddity มันเป็นอนุกรมผ่านเซิร์ฟเวอร์ IP ดังนั้นจึงมีอุปกรณ์อนุกรมที่โฮสต์บนพอร์ตเซิร์ฟเวอร์เทอร์มินัลนั้น เท่าที่ปัญหาที่เกิดจากเซิร์ฟเวอร์เทอร์มินัลนั่นไม่ใช่เรื่องจริงฉันไม่คิด เซิร์ฟเวอร์เทอร์มินัลกำลังเชื่อมต่อพอร์ตเข้ากับอุปกรณ์อนุกรมซึ่งตอบสนองต่อข้อมูลที่อยู่ในคิว ฉันคิดว่าคำอธิบายที่ดีที่สุดที่ฉันได้รับฮ่าฮ่า ฉันต้องการบางสิ่งบางอย่างเพื่อจัดลำดับความสำคัญปริมาณการใช้งานอุปกรณ์เหล่านี้และหยุดส่งต่อปริมาณข้อมูลจากไคลเอนต์อื่น ๆ ในลักษณะที่ค่อนข้างไดนามิก
Eauto04

ดังที่ Appleodity กล่าวว่าจากมาตรฐาน tcp / IP ที่เป็นไปตามมาตรฐานสิ่งนี้ไม่สามารถเกิดขึ้นได้ในระดับ IP ซึ่งดูเหมือนจะเป็นข้อ จำกัด ของวิธีที่พอร์ตอนุกรมสื่อสารกับสแต็ก TCP ทางออกที่เหมาะสมคือการแก้ไขพอร์ตอนุกรมเพื่อล็อคการเข้าถึง IP การสื่อสารจนกว่าจะถูกตัดการเชื่อมต่อ (และตัดการเชื่อมต่อหากไม่ได้ใช้งานหากเหมาะสม) คุณอาจจะสามารถเขียน wrapper พอร์ตอนุกรมหรือแก้ไข terminal emulator
davidgo

นี่ไม่ใช่สิ่งที่เป็นประโยชน์สำหรับสังคมหรือไม่
Tim_Stewart

คำตอบ:


0

ฉันเชื่อว่าคุณสามารถบรรลุสิ่งที่คุณพยายามทำ:

  1. socat
  2. หน้าจอ GNU
  3. TMUX

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

นี่คือคำสั่ง SOCAT ที่มีประโยชน์

ฉันเชื่อว่า TMUX จะเป็นทางออกที่ดีที่สุดของคุณนี่คือคู่มือเริ่มต้นใช้งานสำหรับ tmux

ฉันแสดงหน้าจอ GNU เพราะดูเหมือนว่าอาจมีประโยชน์ในสถานการณ์นี้

ฉันยังพบคำถามที่คล้ายกันกับคำถามของคุณใน serverfault

https://serverfault.com/questions/797397/connect-two-ttys-via-tcp-ip

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