In computer networking , the Datagram Congestion Control Protocol ( DCCP ) is a message-oriented transport layer protocol . DCCP implements reliable connection setup, teardown, Explicit Congestion Notification (ECN), congestion control , and feature negotiation. The IETF published DCCP as RFC 4340 , a proposed standard , in March 2006. RFC 4336 provides an introduction.
18-711: DCCP provides a way to gain access to congestion-control mechanisms without having to implement them at the application layer . It allows for flow-based semantics like in Transmission Control Protocol (TCP), but does not provide reliable in-order delivery. Sequenced delivery within multiple streams as in the Stream Control Transmission Protocol (SCTP) is not available in DCCP. A DCCP connection contains acknowledgment traffic as well as data traffic. Acknowledgments inform
36-484: A collaborative approach between operators and academia and are available as an open source solution. Application layer 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
54-412: A general congestion-control mechanism for UDP-based applications, by adding, as needed, mechanisms for reliable or in-order delivery on top of UDP/DCCP. In this context, DCCP allows the use of different, but generally TCP-friendly congestion-control mechanisms. The following operating systems implement DCCP: Userspace library: The DCCP generic header takes different forms depending on the value of X,
72-491: A less tolerant application that rejects its messages. In such a situation, identifying the problem is often difficult, and deploying a solution can be costly. Rose therefore recommended "explicit consistency checks in a protocol ... even if they impose implementation overhead". In 2018, a paper on privacy-enhancing technologies by Florentin Rochet and Olivier Pereira showed how to exploit Postel's robustness principle inside
90-512: A sender whether its packets have arrived, and whether they were marked by Explicit Congestion Notification (ECN). Acknowledgements are transmitted as reliably as the congestion control mechanism in use requires, possibly completely reliably. DCCP has the option for very long (48-bit) sequence numbers corresponding to a packet ID, rather than a byte ID as in TCP. The long length of the sequence numbers aims to guard against "some blind attacks, such as
108-450: Is often reworded as: "be conservative in what you send, be liberal in what you accept". The principle is also known as Postel's law , after Jon Postel , who used the wording in an early specification of TCP . In other words, programs that send messages to other machines (or to other programs on the same machine) should conform completely to the specifications, but programs that receive messages should accept non-conformant input as long as
126-556: Is realized by the use of the functionality of a number of application service elements. Some application service elements invoke different procedures based on 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
144-451: The OSI model , the definition of the application layer is narrower in scope. The OSI model defines 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
162-491: The OSI model . Although both models use the same term for their respective highest-level layer, the detailed definitions and purposes are different. In 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
180-517: The Tor routing protocol to compromise the anonymity of onion services and Tor clients. In 2023, Martin Thomson and David Schinazi argued that Postel's robustness principle actually leads to a lack of robustness, including security: A flaw can become entrenched as a de facto standard. Any implementation of the protocol is required to replicate the aberrant behavior, or it is not interoperable. This
198-666: The Extended Sequence Numbers bit. If X is one, the Sequence Number field is 48 bits long, and the generic header takes 16 bytes, as follows. If X is zero, only the low 24 bits of the Sequence Number are transmitted, and the generic header is 12 bytes long. Similarly to the extension of TCP protocol by multipath capability ( MPTCP ) also for DCCP the multipath feature is under discussion at IETF correspondingly denoted as MP-DCCP . First implementations have already been developed, tested, and presented in
SECTION 10
#1732787604972216-421: The addition of new codes for existing fields in future versions of protocols by accepting messages with unknown codes (possibly logging them). Programmers should avoid sending messages with "legal but obscure protocol features" that might expose deficiencies in receivers, and design their code "not just to survive other misbehaving hosts, but also to cooperate to limit the amount of disruption such hosts can cause to
234-534: The application layer in 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: Robustness principle In computing , the robustness principle is a design guideline for software that states: "be conservative in what you do, be liberal in what you accept from others". It
252-624: The injection of DCCP-Resets into the connection". DCCP is useful for applications with timing constraints on the delivery of data. Such applications include streaming media , multiplayer online games and Internet telephony . In such applications, old messages quickly become useless, so that getting new messages is preferred to resending lost messages. As of 2017 such applications have often either settled for TCP or used User Datagram Protocol (UDP) and implemented their own congestion-control mechanisms, or have no congestion control at all. While being useful for these applications, DCCP can also serve as
270-432: The meaning is clear. Among programmers, to produce compatible functions , the principle is also known in the form: be contravariant in the input type and covariant in the output type. RFC 1122 (1989) expanded on Postel's principle by recommending that programmers "assume that the network is filled with malevolent entities that will send in packets designed to have the worst possible effect". Protocols should allow for
288-411: The shared communication facility". In 2001, Marshall Rose characterized several deployment problems when applying Postel's principle in the design of a new application protocol. For example, a defective implementation that sends non-conforming messages might be used only with implementations that tolerate those deviations from the specification until, possibly several years later, it is connected with
306-555: The transport layer. OSI specifies a strict modular separation of functionality at these layers and provides protocol implementations for each. In contrast, 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
324-551: The underlying transport layer protocols to establish host-to-host data transfer channels and manage the data exchange in 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
#971028