This program “serves” data on request to one or more programs, called “clients”. These programs communicate using a set of rules, or “protocol”. The most well-known protocol is Hypertext Transfer Protocol (HTTP).

Oftentimes when we think of servers, we think of the underlying hardware (say, a giant server farm comprising many machines). While not entirely wrong, it’s not entirely accurate either. It’s just a figure of speech, and an example of Synecdoche - when a part of something refers to the whole, or vice-versa. We often conflate the program with the machine it’s running on.