I was wondering what counts a protocol?
When an arbitrary (software or hardware) application is implemented on top of the service of layer n in the Internet Protocol stack or the OSI model,
does the application necessarily implement a protocol in layer n+1, either an existing protocol in layer n+1 or its own protocol in layer n+1?
does the application belong to layer n+1?
Kurose's Computer Networking book says
The application layer is where network applications and their application-layer pro- tocols reside. The Internet’s application layer includes many protocols, such as the HTTP protocol (which provides for Web document request and transfer), SMTP (which provides for the transfer of e-mail messages), and FTP (which provides for the transfer of files between two end systems).
It is important to distinguish between network applications and application-layer protocols. An application-layer protocol is only one piece of a network application (albeit, a very important piece of the application from our point of view!). Let’s look at a couple of examples. The Web is a client-server application that allows users to obtain documents from Web servers on demand. The Web application consists of many components, including a standard for document formats (that is, HTML), Web browsers (for example, Firefox and Microsoft Internet Explorer), Web servers (for example, Apache and Microsoft servers), and an application-layer protocol. The Web’s application-layer protocol, HTTP, defines the format and sequence of mes- sages exchanged between browser and Web server. Thus, HTTP is only one piece (albeit, an important piece) of the Web application.
Here are two examples:
when I implement an arbitrary client-server application using the Socket API, no matter how simple it is,
does the application implement an application-layer protocol, either an existing application-layer protocol or its own application-layer protocol, even though its own protocol is not necessarily usable by other applications and developers?
does the application belong to the application layer?
When I implement a web application or web service using HTTP API, does the web application/service necessarily
- belong to a layer one or more layer higher than the layer where HTTP belongs, and
- implement a protocol one ore more layer higher than HTTP? ( SOAP has its own protocol, so does a SOAP web service implement a protocol two layer higher than HTTP? Does a RESTful service implement a protocol one layer higher than HTTP?)