What are protocols and their types?