Skip to content

funov/tcping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TCPing

Автор: @s_vanyaa

Описание

Аналог консольной утилиты ping. Отправляет Echo запросы по протоколу ICMP. По завершении строит статистику

Состав

  • Точка входа, передача ключей tcping.py
  • Связующий узел ping_process.py
  • Тесты tests/tests.py
  • Вывод информации на консоль utils/printer.py
  • Работа с замерами времени utils/timer.py
  • Формирование ICMP запроса network/icmp_echo_request.py
  • Класс ICMP ответа network/icmp_echo_reply.py
  • Конфигурация и работа с RAW socket network/icmp_socket.py

Требования

  • RAW socket
  • ICMP протокол
  • Поддержка ipv6

Реализация

Структура ICMP Echo сообщения:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Identifier          |        Sequence Number        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Data ...
   +-+-+-+-+-

Алгоритм нахождения checksum:

The checksum is the 16-bit ones's complement of the one's
complement sum of the ICMP message starting with the ICMP Type.
For computing the checksum , the checksum field should be zero.
If the total length is odd, the received data is padded with one
octet of zeros for computing the checksum.  This checksum may be
replaced in the future.

Вроде все уже написано, но есть нюанс...

Тесты

Полностью покрыты тестами:

  • utils/printer.py
  • utils/timer.py
  • network/icmp_echo_request.py
  • network/icmp_echo_reply.py
  • network/icmp_socket.py

network/icmp_socket.py и utils/printer.py протестированы с помощью mock.patch

Запуск

Реализован подробный и понятный help

sudo python3 tcping.py -h

Вот он:

usage: tcping.py [-h] [--port PORT] [--count COUNT] [--interval INTERVAL] [--wait WAIT] destination

Usage tcping [options] <destination>

positional arguments:
  destination           dns name or ip address

optional arguments:
  -h, --help            show this help message and exit
  --port PORT, -p PORT  port
  --count COUNT, -c COUNT
                        stop after <count> replies
  --interval INTERVAL, -i INTERVAL
                        seconds between sending each packet
  --wait WAIT, -w WAIT  seconds time to wait for response

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages