HTTP is a request/response protocol. An HTTP client, such as a web browser, initiates a requested by connecting to (usually) TCP/IP port 80. The client then sends a request string, such as "GET / HTTP/1.1", which would request the default page of that web server. The server would then respond with a file (or error message). The file sent by the server is preceded by an HTTP Header, which is a set of ASCII strings containing information about the server and the document being sent. HTTP is defined in RFC 2068.
HTTP differs from other TCP-based protocols such as FTP, in that connections are generally torn down once a particular request (or related series of requests) has been completed. This design makes HTTP ideal for the World Wide Web, where pages regularly link to pages on other servers. It can occasionally pose problems for Web designers, as the lack of a persistent connection necessitates alternative methods of maintaining users' "state". Many of these methods involve the use of "cookies".
HTTP, sadly, is now a point of bottleneck for the Internet. It was originally designed to send plain 7-bit ASCII text faster than FTP could, and without the high latency login procedure of FTP. This it can. However, images and other files are not 7-bit ASCII text, they are 8-bit data. They have to be encoded into plain text (by MIME) before being transferred over HTTP. This can and does result in quite a substantial increase in the amount of data that has to be sent, depending on the file it may be anything between 10% and 30%.
There is a secure version of HTTP called HTTPS that can use any given encryption method as long as it is understood by both sides.
Tim-Berners Lee in 1990 "wrote specifications for HTML (hypertext markup language), HTTP (hypertext transfer protocol) and the precursor of URL (uniform resource locator)."