From 98e103a984da2f5152e1e974c6981645da7cbec0 Mon Sep 17 00:00:00 2001 From: Czar Echavez Date: Wed, 13 Sep 2023 09:48:38 +0100 Subject: [PATCH] #1752: added documentation for DNS Client and Server --- .../system/dns_client_server.rst | 56 +++++++++++++++++++ .../simulation_components/system/software.rst | 1 + 2 files changed, 57 insertions(+) create mode 100644 docs/source/simulation_components/system/dns_client_server.rst diff --git a/docs/source/simulation_components/system/dns_client_server.rst b/docs/source/simulation_components/system/dns_client_server.rst new file mode 100644 index 00000000..776c90b7 --- /dev/null +++ b/docs/source/simulation_components/system/dns_client_server.rst @@ -0,0 +1,56 @@ +.. only:: comment + + © Crown-owned copyright 2023, Defence Science and Technology Laboratory UK + +DNS Client Server +====================== + +DNS Server +---------------- +Also known as a DNS Resolver, the ``DNSServer`` provides a DNS Server simulation by extending the base Service class. + +Key capabilities +^^^^^^^^^^^^^^^^ + +- Simulates DNS requests and DNSPacket transfer across a network +- Registers domain names and the IP Address linked to the domain name +- Returns the IP address for a given domain name within a DNS Packet that a DNS Client can read +- Leverages the Service base class for install/uninstall, status tracking, etc. + +Usage +^^^^^ +- Install on a Node via the ``SoftwareManager`` to start the database service. +- Service runs on TCP port 53 by default. (TODO: TCP for now, should be UDP in future) + +Implementation +^^^^^^^^^^^^^^ + +- DNS request and responses use a ``DNSPacket`` object +- Extends Service class for integration with ``SoftwareManager``. + +DNS Client +--------------- + +The DNSClient provides a client interface for connecting to the ``DNSServer``. + +Key features +^^^^^^^^^^^^ + +- Connects to the ``DNSServer`` via the ``SoftwareManager``. +- Executes DNS lookup requests and keeps a cache of known domain name IP addresses. +- Handles connection to DNSServer and querying for domain name IP addresses. + +Usage +^^^^^ + +- Install on a Node via the ``SoftwareManager`` to start the database service. +- Service runs on TCP port 53 by default. (TODO: TCP for now, should be UDP in future) +- Execute domain name checks with ``check_domain_exists``, providing a ``DNSServer`` ``IPv4Address``. +- ``DNSClient`` will automatically add the IP Address of the domain into its cache + +Implementation +^^^^^^^^^^^^^^ + +- Leverages ``SoftwareManager`` for sending payloads over the network. +- Provides easy interface for Nodes to find IP addresses via domain names. +- Extends base Service class. diff --git a/docs/source/simulation_components/system/software.rst b/docs/source/simulation_components/system/software.rst index d0355d3a..275fdaf9 100644 --- a/docs/source/simulation_components/system/software.rst +++ b/docs/source/simulation_components/system/software.rst @@ -17,3 +17,4 @@ Contents database_client_server data_manipulation_bot + dns_client_server