Source: http://igm.univ-mlv.fr/~quidelleur/ESIPE/IMAC/TP_IMAC2_Exercice 5_Firewall_2017-2018.pdf