Protocol Discovery: A Reverse Engineering of Network Applications