A reasonable initial assumption in modeling is that there will be one protocol (and therefore one type) for each defined thing. In this simple mapping, the responsibilities of the thing become message specifications in the protocol, defined with more detail and more precision. This one-to-one mapping does not always hold true, but it's a good place to start.
Protocols provide an intermediate step in the complex transformation of requirements into implementation code. Protocols themselves are not code, but are abstract interface specifications that can be transformed into an OO implementation in a fairly straightforward manner.