usi++ (UNIX Socket Interface) เป็นไลบรารีเครือข่ายระดับต่ำสำหรับการส่ง/รับแพ็กเก็ต IP, IP6, ARP ฯลฯ บนซ็อกเก็ต RAW หรือ PACKET โดยตรง นอกจากนี้ยังสามารถใช้สำหรับการตรวจสอบเครือข่ายและการพัฒนาเครื่องมือทดสอบอย่างรวดเร็ว ต้องใช้ libpcap
และ libdnet
หากคุณต้องการผู้ให้บริการ Layer2 DNET
usi++ อยู่ภายใต้ GPL ดูการคัดลอกไฟล์สำหรับรายละเอียดเพิ่มเติม
รวมไฟล์ข้อมูลสำหรับ ethernet-MAC มันถูกนำมาจาก arpwatch
เนื่องจาก USI++ เป็น GPL จึงไม่รับประกันอย่างแน่นอน คุณใช้มันด้วยความเสี่ยงของคุณเอง
$ cd src
$ autoconf
$ ./configure
$ make
# make install
โปรดทราบว่า หากคุณมีการติดตั้ง libpcap
หลายรายการสำหรับการทดสอบ Makefile
ที่สร้างขึ้นเป็นเพียงข้อเสนอ สคริปต์กำหนดค่าไม่สามารถทราบได้ว่ารวมหรือเส้นทาง lib ใดที่คุณต้องการ ในกรณีเช่นนี้ คุณจะต้องแก้ไข Makefile
ที่สร้างขึ้นให้ชี้ไปที่ไฟล์นั้นทุกประการ รวมถึงการตั้งค่า/ยกเลิกการตั้งค่ากำหนดที่คุณต้องการใน config.h
การติดตั้ง libpcap มากกว่าหนึ่งรายการไม่ใช่เรื่องแปลก เนื่องจากฟังก์ชันต่างๆ เช่น pcap_set_immediate_mode()
หรือ mmapped packet sockets เพิ่งปรากฏขึ้นเมื่อไม่นานมานี้
โดยปกติจะเป็นเช่นนี้:
# c++ -std=c++11 foo.cc -lusi++ -lpcap -L/usr/local/lib -I/usr/local/include
หากคุณคอมไพล์ usi++ ด้วยการสนับสนุน dnet ซึ่งช่วยให้คุณสามารถส่งแพ็กเก็ตที่ดาต้าลิงก์เลเยอร์ได้ (ไม่ใช่แค่ซ็อกเก็ต RAW) คุณจะต้องลิงก์กับ -ldnet
ด้วย libpcap ที่ใหม่กว่าอาจมี pcap_inject()
อยู่แล้ว ดังนั้นคุณสามารถสร้าง usi++ โดยไม่ต้องใช้ libdnet ได้ เนื่องจากฟังก์ชันนี้ยังให้วิธีการส่งเฟรมดาต้าลิงก์แบบพกพาอีกด้วย
โปรดดูเอกสาร HTML (สร้างผ่าน doxygen) ของ libusi++
หรือที่ตัวอย่าง
ลินุกซ์, BSD, OSX.
ไม่มี.
การจัดการระดับลิงก์มีการเปลี่ยนแปลง ตอนนี้คลาสทั้งหมดได้มาจาก Layer2 {} ซึ่งมีวัตถุ RX และ TX ซึ่งใช้สำหรับรับและส่งข้อมูล การประกาศคลาสสามารถพบได้ในไฟล์ .h ที่เกี่ยวข้อง คลาสเหล่านี้เป็นคลาสนามธรรม ซึ่งหมายความว่าคุณต้องสืบทอดคลาสของคุณเองเพื่อให้มันทำงานได้ ดูไฟล์ .h ที่คุณต้องปฏิบัติตาม USI++ จัดส่งพร้อมกับคลาส Pcap
, TX_IP
, TX_eth_dnet
ฯลฯ ซึ่งช่วยให้คุณสามารถจับ/ส่งแพ็กเก็ตได้ มีฟังก์ชันพื้นฐานเพื่อให้คุณสามารถใช้โปรแกรมที่ทำงานร่วมกับ USI++ 1.67 หรือต่ำกว่าได้ตามปกติ ด้วยการทำให้ RX
และ TX
เป็นนามธรรม เราแน่ใจว่า Layer2
สามารถเข้าถึงรูทีนเช่น sendpack()
ได้ คุณมีอิสระที่จะเขียนคลาสที่ใช้ RX/TX ของคุณเองสำหรับฮาร์ดแวร์ต่างๆ (FDDI,...) คุณสามารถเปลี่ยนลักษณะการทำงานของ RX/TX ขณะรันไทม์ได้ ดังนั้นจึงมีความยืดหยุ่นมากที่สุด ตัวอย่างเช่น คุณสามารถตรวจพบว่าคุณกำลังทำงานกับ PPP จากนั้นคุณโหลดตัวส่งสัญญาณ PPP มีความสุข.