هذا هو الواجب المنزلي للبرمجة المتقدمة للإنترنت في معهد هاربين للتكنولوجيا.
يحتوي المستودع على مشروعين:
خدمة تعدد الإرسال TCP وUDP لخدمة نقل الملفات باستخدام التحديد.
يمكن للخادم قبول اتصالات TCP وUDP.
أجهزة استشعار الحزم التي تعترض تدفق حركة مرور الشبكة داخل وخارج النظام من خلال واجهات الشبكة.
يستخدم المتشمم مأخذ توصيل خام عند وضعه في حلقة recvfrom ليستقبل جميع الحزم الواردة تعرف على المزيد.
ملحوظة: أنت بحاجة إلى ترجمة هذا المشروع في Linux أو Unix (بما في ذلك نظام التشغيل Mac OS X).
يمكنك ببساطة تجميع هذا المشروع باستخدام أمر make
.
بعد نجاح عملية الترجمة، يمكنك تشغيل الخادم:
./server <PortNumber>
ثم يمكنك بدء عميل UDP أو عميل TCP:
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
في عميل TCP، يمكنك الحصول على الملفات من الخادم:
GET <Path to the file in server>
القضايا المعروفة:
ملاحظة: في أنظمة Linux/Unix، تحتاج إلى أذونات الجذر لتلقي الحزم الأولية على الواجهة. يعد هذا التقييد بمثابة إجراء احترازي أمني، لأن العملية التي تتلقى الحزم الأولية تتمتع بإمكانية الوصول إلى اتصالات كافة العمليات والمستخدمين الآخرين الذين يستخدمون تلك الواجهة.
sudo ./packet-sniffer
سيتم تفريغ جميع الحزم الواردة في ملف packet-sniffer.log
.
هذا المشروع مفتوح المصدر بموجب ترخيص Apache.