La interacción con la red deberá ser directamente con la biblioteca de sockets. En Python es la "Low-level networking interface", socket.py. En C/C++ es socket.h y relacionados.
Para todo lo que no sea interfaz de red, pueden usar otras bibliotecas. Ejemplo: estructuras de datos, manejo de argumentos por línea de comando, logging, UI, concurrencia, etc. La recomendación es mantener las cosas tan simple como sea posible, y dedicar el principal esfuerzo a la funcionalidad específica del curso de redes.