A vulnerability taxonomy for network protocols: Corresponding engineering best practice countermeasures