In computing , an abstraction layer or abstraction level is a way of hiding the working details of a subsystem. Examples of software models that use layers of abstraction include the OSI model for network protocols , OpenGL , and other graphics libraries , which allow the separation of concerns to facilitate interoperability and platform independence .
16-547: An application layer is an abstraction layer that specifies the shared communication protocols and interface methods used by hosts in a communications network. An application layer abstraction is specified in both the Internet Protocol Suite (TCP/IP) and the OSI model . Although both models use the same term for their respective highest-level layer, the detailed definitions and purposes are different. In
32-525: A client–server or peer-to-peer networking model. Though the TCP/IP application layer does not describe specific rules or data formats that applications must consider when communicating, the original specification (in RFC 1123 ) does rely on and recommend the robustness principle for application design. In the OSI model , the definition of the application layer is narrower in scope. The OSI model defines
48-452: A compiled language , interpreter , and script language . In the Unix operating system, most types of input and output operations are considered to be streams of bytes read from a device or written to a device. This stream of bytes model is used for file I/O, socket I/O, and terminal I/O in order to provide device independence. In order to read and write to a device at the application level,
64-430: A good abstraction layer allows for easy reuse by distilling a useful concept or design pattern so that situations, where it may be accurately applied, can be quickly recognized. Just composing lower-level elements into a construct doesn't count as an abstraction layer unless it shields users from its underlying complexity. A layer is considered to be on top of another if it depends on it. Every layer can exist without
80-478: Is a general principle for managing complexity through abstraction . The theorem is often expanded by the humorous clause "…except for the problem of too many levels of indirection," referring to the fact that too many abstractions may create intrinsic complexity issues of their own. For example, the use of protocol layering in computer networks , which today is ubiquitous, has been criticized in ways that are typical of more general disadvantages of abstraction. Here,
96-470: Is often deliberately misquoted with "abstraction" substituted for "indirection." It is also sometimes misattributed to Butler Lampson . Kevlin Henney 's corollary to this is, "...except for the problem of too many layers of indirection." In a computer architecture , a computer system is usually represented as consisting of several abstraction levels such as: Programmable logic is often considered part of
112-629: The Internet Protocol Suite compiles these functions into a single layer. Originally the OSI model consisted of two kinds of application layer services with their related protocols. These two sublayers are the common application service element (CASE) and specific application service element (SASE). Generally, an application layer protocol is realized by the use of the functionality of a number of application service elements. Some application service elements invoke different procedures based on
128-593: The Internet Protocol Suite is RFC 1123. It provided an initial set of protocols that covered the major aspects of the functionality of the early Internet : Additional notable application-layer protocols include the following: Abstraction layer In computer science , an abstraction layer is a generalization of a conceptual model or algorithm , away from any specific implementation. These generalizations arise from broad similarities that are best encapsulated by models that express similarities present in various specific implementations. The simplification provided by
144-456: The Internet protocol suite, the application layer contains the communications protocols and interface methods used in process-to-process communications across an Internet Protocol (IP) computer network. The application layer only standardizes communication and depends upon the underlying transport layer protocols to establish host-to-host data transfer channels and manage the data exchange in
160-459: The application layer as only the interface responsible for communicating with host-based and user-facing applications. OSI then explicitly distinguishes the functionality of two additional layers, the session layer and presentation layer , as separate levels below the application layer and above the transport layer. OSI specifies a strict modular separation of functionality at these layers and provides protocol implementations for each. In contrast,
176-591: The graphics library hides the implementation and device-dependent details by providing an abstract interface which provides a set of primitives that are generally useful for drawing graphical objects. Fundamental theorem of software engineering The fundamental theorem of software engineering ( FTSE ) is a term originated by Andrew Koenig to describe a remark by Butler Lampson attributed to David J. Wheeler : "We can solve any problem by introducing an extra level of indirection ." The theorem does not describe an actual theorem that can be proven; rather, it
SECTION 10
#1732773377715192-576: The hardware, while the logical definitions are also sometimes seen as part of a device's software or firmware. Firmware may include only low-level software, but can also include all software, including an operating system and applications. The software layers can be further divided into hardware abstraction layers, physical and logical device drivers, repositories such as filesystems, operating system kernels, middleware, applications, and others. A distinction can also be made from low-level programming languages like VHDL , machine language , assembly language to
208-518: The layers above it, and requires the layers below it to function. Frequently abstraction layers can be composed into a hierarchy of abstraction levels. The OSI model comprises seven abstraction layers. Each layer of the model encapsulates and addresses a different part of the needs of digital communications, thereby reducing the complexity of the associated engineering solutions. A famous aphorism of David Wheeler is, "All problems in computer science can be solved by another level of indirection ." This
224-442: The program calls a function to open the device, which may be a real device such as a terminal or a virtual device such as a network port or a file in a file system. The device's physical characteristics are mediated by the operating system which in turn presents an abstract interface that allows the programmer to read and write bytes from/to the device. The operating system then performs the actual transformation needed to read and write
240-412: The stream of bytes to the device. Most graphics libraries such as OpenGL provide an abstract graphical device model as an interface. The library is responsible for translating the commands provided by the programmer into the specific device commands needed to draw the graphical elements and objects. The specific device commands for a plotter are different from the device commands for a CRT monitor , but
256-419: The version of the session service available. The common application service element sublayer provides services for the application layer and request services from the session layer. It provides support for common application services, such as: The specific application service element sublayer provides application-specific services (protocols), such as: The IETF definition document for the application layer in
#714285