Clients identify resources with addresses and use standard operations whose meaning is defined by the protocol. Requests are stateless, so each one carries the context required for the server to process it. Caching and layered intermediaries can be used when the interface preserves their semantics.