In Section 1.3 Terminology, RFC2616 (HTTP/1.1) says:

client: A program that establishes connections for the purpose of sending requests.

user agent: The client which initiates a request. These are often browsers, editors, spiders (web-traversing robots), or other end user tools.

Can someone provide examples of a client that is not a user agent? Why is there an official distinction made in sec 1.3?


The difference is subtle and not described in much detail in the RFC linked above in the question. The term "User Agent" and "Client" have a generic definition above how they are used in defining the HTTP specification.

A User Agent can be any software or automated process that acts on behalf of a User.

A Client can be defined as any software or automated process that performs requests for resources or services in a Client-Server model.

Essentially in a generic sense a User Agent doesn't necessarily require to operate in a Client-Server model. For instance, a User Agent might be an abstraction of a workflow software that automates a number of data processing steps on a work item based on defined business rules. It is performing this work on behalf of a User, although doesn't necessarily need to interact with a server to do so.

Essentially in the HTTP protocol, it is a network application protocol, and as such interaction between a client and server is a given. In this case they are defining the terminology of a User-Agent as being effectively synonymous with a Client. In the general sense for HTTP protocol they mean the same thing.

  • Your explanation of a user agent sounds reasonable as some 'agent' that acts on behalf of the 'user'. However, the rfc specifically says that a user agent IS A client. So, the example you give goes in the other direction. I'm still not confident how to consume this terminology in a way that is consistent with the authors' usage. Thanks. – perpetual May 2 at 13:11
  • 1
    The section you are referring to of the RFC is a glossary of terms so that nobody will be stuck wondering the definition of a term while reading the spec. My answer is basically explaining why I think the authors defined both terms, basically so there is no ambiguity between the two terms. Again, in the generic sense, they are different terms but for HTTP they made clear that they refer to the same thing. – maple_shaft May 2 at 13:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.