Это домашнее задание по продвинутому программированию для Интернета в Харбинском технологическом институте.
Репозиторий содержит два проекта:
Служба мультиплексирования TCP и UDP для передачи файлов с использованием select.
Сервер может принимать соединения 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 для получения необработанных пакетов на интерфейсе необходимы права root. Это ограничение является мерой безопасности, поскольку процесс, получающий необработанные пакеты, получает доступ к сообщениям всех других процессов и пользователей, использующих этот интерфейс.
sudo ./packet-sniffer
Все входящие пакеты будут сохраняться в файл packet-sniffer.log
.
Этот проект имеет открытый исходный код под лицензией Apache.