เป้าหมายของฉันคือการตรวจสอบซ็อกเก็ตและเชื่อมโยงซ็อกเก็ตเหล่านั้นกับแอปพลิเคชันที่สร้างขึ้น
ฉันรู้จัก netstat, ss, lsof และอื่นๆ และสามารถแสดงรายการซ็อกเก็ตทั้งหมดพร้อมกับแอปพลิเคชันของตนได้
และฉันก็รู้ด้วยว่า ฉันสามารถแยกวิเคราะห์ /proc/net/tcp
เพื่อรับซ็อกเก็ตและเชื่อมโยงกับแอปพลิเคชันด้วย /proc/(PID)
ซึ่งเป็นสิ่งที่เครื่องมือเหล่านี้ทำหรือใช้ซ็อกเก็ต netlink
งานวิจัยของฉันพาฉันไปที่บทความ ซึ่งอธิบายวิธีรับซ็อกเก็ตทั้งหมดจากเคอร์เนลด้วย netlink ผ่านโปรโตคอล inet_diag โปรแกรมพื้นที่ผู้ใช้ตั้งค่าซ็อกเก็ต netlink ประเภท inet_diag และส่งคำขอไปยังเคอร์เนล การตอบกลับประกอบด้วยข้อความหลายข้อความซึ่งมีซ็อกเก็ตและข้อมูลที่เกี่ยวข้องเพิ่มเติม
นี่เป็นระเบียบจริงๆ แต่น่าเสียดายที่เคอร์เนลส่งข้อมูลนี้เพียงครั้งเดียวต่อคำขอ เลยต้อง "สำรวจ" อย่างต่อเนื่อง
การวิจัยเพิ่มเติมทำให้ฉันพบบทความอีกฉบับหนึ่งที่ตรวจสอบ การเปลี่ยนแปลง IP ของอินเทอร์เฟซพร้อมซ็อกเก็ตเส้นทาง netlink อย่างต่อเนื่อง ซ็อกเก็ตถูกผูกไว้กับกลุ่มแบบหลายผู้รับ จากนั้นข้อความจะถูกอ่านจากกลุ่มนั้นแบบวนซ้ำไม่สิ้นสุด
ดังนั้นฉันจึงตรวจสอบว่ามีความเป็นไปได้แบบเดียวกันกับซ็อกเก็ต inet_diag หรือไม่ น่าเสียดายที่ฉันไม่สามารถเข้าใจโค้ดเคอร์เนลได้จริงๆ แต่เท่าที่ฉันสามารถบอกได้ว่าไม่มีกลุ่มมัลติคาสต์สำหรับตระกูลซ็อกเก็ตนี้
ณ จุดนี้ ฉันติดอยู่กับที่และจำเป็นต้องรู้ว่าวิธีนี้เป็นไปได้หรือไม่ หรือใครรู้คำแนะนำอื่น ๆ
lsof
จึงไม่ตรงกับความต้องการของคุณ - person Greg Hewgill   schedule 31.08.2013