Ok, I have done programing in the past, was wondering what the Application Layer really does?
I'm not talking about the TCP/IP model either.
I'm thinking now it's an API, into the rest of the OSI Model. That is written by developers that is specific to that application, i.e. an Email Application would need an Email Application API and it provides all those sevices that the email application would need.
At the very top of the OSI Reference Model stack of layers, we find layer 7, the application layer. the application layer is the one that is used by network applications. These programs are what actually implement the functions performed by users to accomplish various tasks over the network.
It's important to understand that what the OSI model calls an “application” is not exactly the same as what we normally think of as an “application”. In the OSI model, the application layer provides services for user applications to employ. For example, when you use your Web browser, that actual software is an application running on your PC. It doesn't really “reside” at the application layer. Rather, it makes use of the services offered by a protocol that operates at the application layer, which is called the Hypertext Transfer Protocol (HTTP). The distinction between the browser and HTTP is subtle, but important.
The reason for pointing this out is because not all user applications use the application layer of the network in the same way. Sure, your Web browser does, and so does your e-mail client and your Usenet news reader. But if you use a text editor to open a file on another machine on your network, that editor is not using the application layer. In fact, it has no clue that the file you are using is on the network: it just sees a file addressed with a name that has been mapped to a network somewhere else. The operating system takes care of redirecting what the editor does, over the network.
Similarly, not all uses of the application layer are by applications. The operating system itself can (and does) use services directly at the application layer.
That caveat aside, under normal circumstances, whenever you interact with a program on your computer that is designed specifically for use on a network, you are dealing directly with the application layer. For example, sending an e-mail, firing up a Web browser, or using an IRC chat program—all of these involve protocols that reside at the application layer.
There are dozens of different application layer protocols that enable various functions at this layer. Some of the most popular ones include HTTP, FTP, SMTP, DHCP, NFS, Telnet, SNMP, POP3, NNTP and IRC. Lots of alphabet soup, sorry. J I describe all of these and more in the chapter on higher-layer protocols and applications.
As the “top of the stack” layer, the application layer is the only one that does not provide any services to the layer above it in the stack—there isn't one! Instead, it provides services to programs that want to use the network, and to you, the user. So the responsibilities at this layer are simply to implement the functions that are needed by users of the network. And, of course, to issue the appropriate commands to make use of the services provided by the lower layers.
so again in short :
The application layer interacts with software applications (such as Netscape or Outlook Express) that implement a communicating component. Such application programs are outside of the scope of the OSI model, but they translate an enduser's typing into a Layer 7 request. Application layer functions typically include the following: Identifying communication partners - The application layer identifies and determines the availability of communication partners for an application with data to transmit. Determining resource availability - The application layer must determine whether sufficient network resources for the requested communication are available. Synchronizing communication - Communication between applications requires cooperation that is managed by the application layer.
So it's an interface to the Application Protocols, yay. I think I'm getting somewhere now. I'm was getting confused between the application itself and the protocols. I'm trying to get an idea of a real world senario, where I could look at the source code and see how it works, but the OSI model doesn't work like that because its not actually an TCP/IP stack but a standards model.
like i said before, the OSI model is a mere provider of a structure which can be followed in order to design hardware and software. in reality, if you consider the internet, it does not function at all on the OSI model. instead, it functions of a truncated version of the model itself.
lets see the OSI model, what does it have?
the entire internet works on the principle of the following stack:
as you can see it is much different than the model that has been provided. but so notice that it is based on the OSI structure, just that some redundant layers have been omitted for the sake of simplicity.
i have already talked about what some of the most well known protocols are that are used on the Application layer level, e.g HTTP, FTP etc. Famouse Transport layer protocol is TCP, famous Network layer protocol is IP, famouse Datalink layer protocols are IEEE 802.2, IEEE 802.11a/b/g, etc.
so in order to grasp this, the most we can do at this moment is program at the application layer or at maximum at the Transport layer. but do bear in mind that you have to maintain the integral structures determined by the inherant protocols themselves at their respective layers. you can create application that use HTTP to make a browser, or you can use the SMTP protocol to make a email client. how you do it, is details on various books on "how to make a email client or how to make a browser". it's all in socket programming, and as you know sockets are an integral part of the TCP protocol. now if you break down the structures you will get the following :
Application - > Transport -> Network -> Datalink -> Physical ---- ---- ---- >
likewise on the data side :
Application Level Data unit -> TCP segment -> IP Datagram/Packets -> Frames -> Raw analog/digital/RF signals
now you can make a one-to-one correspondence between the layers and their respective data units.
hope this clears the air on programming on the networking layers.