It needn't support modification. Keys should be given as all lowercase. No state changes. If not even a single byte is available, and the end of the stream has not yet been reached, this blocks until at least one byte is available or the stream is closed by the other end. None Close the connection.
Some protocols are simple enough that there is effectively no metadata.
Some URL schemes, e.g. mailto, don't return any meaningful data but interact with the user instead. The user interaction should preferably be done in a modeless dialog. Some URL schemes, e.g. hdl, CNRI's handle scheme, translate into other URL schemes. Such errors are handled by higher levels. The protocol object should not attempt to implement the redirection itself, since it may be redirecting to a different protocol or to an already cached item.