The goal of this project is to practice UDP socket programing and understand binary packet structures by developing a simplified DNS lookup client. You must create your own socket and cannot use any existing DNS library.
Tip
If you have trouble deciding between Anaconda and Miniconda, please refer to the table below:
| Anaconda | Miniconda |
|---|---|
| New to conda and/or Python | Familiar with conda and/or Python |
| Not familiar with using terminal and prefer GUI | Comfortable using terminal |
| Like the convenience of having Python and 1,500+ scientific packages automatically installed at once | Want fast access to Python and the conda commands and plan to sort out the other programs later |
| Have the time and space (a few minutes and 3 GB) | Don't have the time or space to install 1,500+ packages |
| Don't want to individually install each package | Don't mind individually installing each package |
Typing out entire Conda commands can sometimes be tedious, so I wrote a shell script (conda_shortcuts.sh on GitHub Gist) to define shortcuts for commonly used Conda commands.
Example: Delete/remove a conda environment named test_env
- Shortcut command
rmenv test_env - Manually typing out the entire command
conda env remove -n test_env && rm -rf $(conda info --base)/envs/test_env
The shortcut has 80.8% fewer characters!
-
Verify that conda is installed
conda --version -
Ensure conda is up to date
conda update conda -
Enter the directory you want
dns-lookupto be cloned in- POSIX
cd ~/path/to/directory
- Windows
cd C:\Users\user\path\to\directory
- POSIX
-
Clone and enter
dns-lookupgit clone https://github.com/lynkos/dns-lookup.git && cd dns-lookup
-
Create virtual environment from
environment.ymlconda env create -f environment.yml
- Activate
dns_env(i.e., virtual environment)conda activate dns_env
- Confirm
dns_envis activedns_envshould be in parentheses () or brackets [] before your command prompt, e.g.(dns_env) $
- See which virtual environments are available and/or currently active (active environment denoted with asterisk (*))
conda info --envs
ORconda env list
- Run
mydns.py(domain-nameis the domain name to be resolved whileroot-dns-ipis the IPv4 address of a root DNS server on the internet)python mydns.py domain-name root-dns-ip
- Deactivate
dns_env(i.e., virtual environment) when finishedconda deactivate