This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:xapend:xapend.b_stds:defact:zmtp:start [2021/08/09 12:29] murphy [Goals] |
dido:public:ra:xapend:xapend.b_stds:defact:zmtp:start [2021/11/09 15:36] (current) char ↷ Page moved and renamed from dido:public:ra:xapend:xapend.b_stds:defact:zmtp to dido:public:ra:xapend:xapend.b_stds:defact:zmtp:start |
||
|---|---|---|---|
| Line 25: | Line 25: | ||
| ==== Abstract ==== | ==== Abstract ==== | ||
| - | //The ZeroMQ Message Transport Protocol (ZMTP) is a transport layer protocol for exchanging messages between two peers over a connected transport layer such as TCP. This document describes ZMTP 3.0. // | + | //The ZeroMQ Message Transport Protocol (ZMTP) is a [[dido:public:ra:xapend:xapend.a_glossary:t:transportlayer|transport layer]] protocol for exchanging messages between two peers over a connected transport layer such as TCP. This document describes ZMTP 3.0. // |
| ==== Goals ==== | ==== Goals ==== | ||
| Line 32: | Line 32: | ||
| * //TCP carries a stream of octets with no delimiters, but we want to send and receive discrete messages. Thus, ZMTP reads and writes frames consisting of a size and a body.// | * //TCP carries a stream of octets with no delimiters, but we want to send and receive discrete messages. Thus, ZMTP reads and writes frames consisting of a size and a body.// | ||
| - | * //We need to carry metadata on each frame (such as, whether the frame is part of a multipart message, or not). ZMTP provides a flags field in each frame for metadata.// | + | * //We need to carry [[dido:public:ra:xapend:xapend.a_glossary:m:metadata|metadata]] on each frame (such as, whether the frame is part of a multipart message, or not). ZMTP provides a flags field in each frame for metadata.// |
| * //We need to be able to talk to older implementations, so that our framing can evolve without breaking existing implementations. ZMTP defines a greeting that announces the implemented version number, and specifies a method for version negotiation.// | * //We need to be able to talk to older implementations, so that our framing can evolve without breaking existing implementations. ZMTP defines a greeting that announces the implemented version number, and specifies a method for version negotiation.// | ||
| Line 42: | Line 42: | ||
| * //We need a way to carry metadata about the connection, after the security handshake. ZMTP defines a standard set of metadata properties (socket type, identity, etc.) that peers exchange after the security mechanism.// | * //We need a way to carry metadata about the connection, after the security handshake. ZMTP defines a standard set of metadata properties (socket type, identity, etc.) that peers exchange after the security mechanism.// | ||
| - | * //We need to write down these solutions in a way that is easy for teams to implement on any platform and in any language. ZMTP is thus specified as a formal protocol (this document) and made available to teams under a free license.// | + | * //We need to write down these solutions in a way that is easy for teams to implement on any [[dido:public:ra:xapend:xapend.a_glossary:p:platform|platform]] and in any language. ZMTP is thus specified as a formal protocol (this document) and made available to teams under a free license.// |
| * //We need guarantees that people will not create private forks of ZMTP, thus breaking [[dido:public:ra:xapend:xapend.a_glossary:i:interoperability|interoperability]]. ZMTP is thus licensed under the GPLv3, so that any derived versions must also be made available to users of software that implements it. // | * //We need guarantees that people will not create private forks of ZMTP, thus breaking [[dido:public:ra:xapend:xapend.a_glossary:i:interoperability|interoperability]]. ZMTP is thus licensed under the GPLv3, so that any derived versions must also be made available to users of software that implements it. // | ||