-
Build the
mjson.o
file:gcc -g -c -o mjson.o mjson.c
-
Make the executable for client, server, and standalone:
make client make server make standalone
-
Run the server:
./server myconfig.json
-
Run the client:
./client myconfig.json
-
After the server and client finished executing, run the standalone program.
-
Run standalone using
sudo
:sudo ./standalone myconfig.json
-
Not able to receive RST packets from closed ports:
- Unable to implement timer correctly.
-
Minor:
- Was not able to exit the while loop on the server side when receiving a packet train without receiving a "done" message from the client.
- Aim to find a way to implement exiting the while loop while the last packet of the packet train is receiving without having to waste resources sending a "done" message.
[+]
indicates successful operation. If a print statement does not have a[+]
, an error/failure occurred during the operation and exits the program.
-
Pre-Probing Phase:
- Socket creation.
- Connection to server.
- Sending JSON file contents to server.
- Closing connection to server.
-
Probing Phase:
- Socket creation.
- Setting DF flag for UDP packets.
- Sending the first packet of Low Entropy Train.
- Sending the last packet of Low Entropy Train.
- Sending "done" message to server.
- Waiting Inter-Measurement time.
- Sending the first packet of High Entropy Train.
- Sending the last packet of High Entropy Train.
- Sending "done" message to server.
- Statement indicating if both packet trains were sent successfully.
-
Post-Probing Phase:
- Socket creation.
- Connection to server.
- Prints the findings of compression detection.
- Closing connection to server.
-
Pre-Probing Phase:
- Prints Server IP and TCP for reference and confirmation of correct parsing of JSON file.
- Socket creation.
- Binding socket to port.
- Listening for any incoming connections from client.
- Prints IP and Port # of client if connection is established.
- Prints the file contents received from client.
- Statement if parsing of the JSON was successful.
- Closing connection to client.
-
Probing Phase:
- Socket creation.
- Binding socket to port.
- Number of packets received from Low Entropy Train.
- Number of packets received from High Entropy Train.
- Compression time of Low Entropy Train.
- Compression time of High Entropy Train.
-
Post-Probing Phase:
- Compression time of Low Entropy Train.
- Compression time of High Entropy Train.
- Socket creation.
- Binding socket to port.
- Listening to client.
- Prints IP and Port # of client if connection is established.
- Sending compression findings to client.
- Closing connection to client.