Shopping on line can be easy, simple and save you lots of money. It can also take a lot of your time, frustrate you, and result in unwanted purchases. Now the same can be said for regular high street shopping, but with the vast opportunity presented by the Internet it will pay you to spend a few minutes reading this and understanding how to better optimize your Extensible Messaging And Presence Protocol shopping experience:
1. Compare - without doubt the biggest advantage that the Extensible Messaging And Presence Protocol offers shoppers today is the ability to compare thousands of Extensible Messaging And Presence Protocol at a time. This is a great thing, but not necessarily all the time! Too much can be daunting at times so take advantage of the great comparison sites and where possible let them do the hard work for you.
2. Research - if it has been said it will be on the internet. Ignorance is no longer a justifiable reason for buying the wrong thing. Take the time to research in detail everything that you could possible want to know about
3. Testimonials - don't know anybody that has bought a Extensible Messaging And Presence Protocol? Wrong! If the Extensible Messaging And Presence Protocol is good the internet will let you know. Use the Internet as a friend and get testimonials before you buy.
4. Questions - Got a question about Extensible Messaging And Presence Protocol then search the Forums, FAQ's, Blogs etc. Don't be afraid to ask .....
5. Reputation - Never heard of the company selling Extensible Messaging And Presence Protocol? Don't worry, no reason why you should know every company in the world, but you know someone that does! Use the internet to find out what people are saying about Extensible Messaging And Presence Protocol and build up a picture of their reputation for sales, returns, customer service, delivery etc.
6. Returns - still worried that even after all of the above your Extensible Messaging And Presence Protocol wont be what you want? Check out the returns policy. There is so much competition now that someone, somewhere is bound to offer the terms that you are comfortable with.
7. Feedback - happy with your Extensible Messaging And Presence Protocol then let people know, after all you are depending on others people input in your buying decision, so why not give a little back.
8. Security - check for the yellow padlock on the Extensible Messaging And Presence Protocol site before you buy, and the s after http:/ /i.e. https:// = a secure site
9. Contact - got a question about Extensible Messaging And Presence Protocol, or want to leave a comment then check out the sites contact page. Reputable companies have them and respond.
10. Payment - ready to pay for your Extensible Messaging And Presence Protocol, then use your credit card or PayPal! Be aware of companies that don't accept them, there may be genuine reasons but given the huge amount of choice you have when buying online there is no reason at all not to buy via credit card or PayPal.
Extensible Messaging and Presence Protocol (
XMPP) is an open,
XML-inspired network protocol for near-real-time, extensible instant messaging (IM) and presence information (a.k.a. buddy lists). It is the core protocol of the
Jabber Instant Messaging and Presence technology. The protocol is built to be extensible and other features such as
Voice over IP and file transfer signaling have been added.
Unlike most instant messaging protocols, XMPP is based on open standards. Like e-mail, it is an open system (computing) where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also
free software and
open-source software software.
The Internet Engineering Task Force (IETF) formed an XMPP Working Group in 2002 to formalize the core protocols as an IETF Instant Messaging and presence technology. The four specifications produced by the XMPP WG were approved by the IESG as Proposed Standards in 2004. RFC 3920 and RFC 3921 are currently undergoing revisions in preparation for advancing them to Draft Standard within the Internet Standards Process. The XMPP Standards Foundation (formerly the Jabber Software Foundation) is active in developing open XMPP extensions. Unfortunately no Jabber technology correctly implements the RFCs in full.
XMPP-based software is deployed on thousands of servers across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation.http://www.xmpp.org/xsf/press/2003-09-22.shtml Popular commercial servers include the Gizmo Project. Popular client applications include the freeware clients offered by
Google and the
Gizmo Project, Multiprotocol instant messaging application such as
iChat and Pidgin (instant messaging client) (formerly Gaim), and free dedicated clients such as Psi (instant messaging client). Google Talk provides XMPP gateways to its service.
History
Jeremie Miller began the Jabber project in 1998. Its first major public release occurred in May 2000. The project's main product was
jabberd, a Jabber server.
This early Jabber
Communications protocol formed the basis for XMPP, published as RFC 3920. It has often been regarded as being in competition with SIMPLE, based on the
Session Initiation Protocol protocol, as the standard protocol for instant messaging and presence notification.
As of 2005, about half a dozen XMPP server software implementations written in different programming languages and targeting different use cases existed.
In August 2005, Google introduced Google Talk, a combination
Voice over IP and IM system which uses XMPP for its instant messaging function. The initial launch did not include inter-server communications, but as of January 17, 2006, it has server-to-server communications enabled.
Features
Decentralization The architecture of the XMPP network is similar to email; anyone can run their own XMPP server and there is no central master server.Open standards The Internet Engineering Task Force has formalized XMPP as an approved instant messaging and presence technology under the name of XMPP, and the XMPP specifications have been published as RFC 3920 and RFC 3921. No royalties are required to implement support of these specifications and their development is not tied to a single vendor.History XMPP technologies have been in use since 1998. Multiple implementations of the XMPP standards exist for clients, servers, components, and code libraries, with the backing of large companies such as
Sun Microsystems and Google.Security XMPP servers may be isolated from the public Jabber network (e.g., on a company intranet), and robust security (via Simple Authentication and Security Layer and
Transport Layer Security) has been built into the core XMPP specifications. To encourage use of channel encryption, the [httpFlexibility Custom functionality can be built on top of XMPP; to maintain interoperability, common extensions are managed by the XMPP Software Foundation. XMPP applications beyond IM include network management, content syndication, collaboration tools, file sharing, gaming, and remote systems monitoring.
Decentralisation and addressing
The Jabber network is server-based (i.e. clients do not talk directly to one another) but decentralized; by design there is no central authoritative server, as there is with services such as AOL Instant Messenger or MSN Messenger. Some confusion often arises on this point as there is a public XMPP server being run at "Jabber.org", to which a large number of users subscribe. However, anyone may run their own XMPP server on their own domain.
Every user on the network has a unique
Jabber ID (usually abbreviated as
JID). To avoid the need for a central server with a list of IDs, the JID is structured like an e-mail address with a username and a
domain name system address for the server where that user resides separated by an
at sign (@), such as
username@domain.com.
Since a user may wish to log in from multiple locations, the server allows the client to specify a further string known as a resource, which identifies which of the user's clients it is (for example home, work and mobile). This may then be included in the JID by adding a forward slash followed by the name of the resource. Each resource may have specified a numerical value called priority. For example the full JID of a user's mobile account would be
username@domain.com/mobile. Messages that are simply sent to
username@domain.com will go to client with highest priority, but those sent to
username@domain.com/mobile will only go to the mobile client.
JIDs without a username part are also valid and may be used (with or without a resource part) for system messages and control of special features on the server.
Message delivery process
Suppose
juliet@capulet.com wants to chat with
romeo@montague.net. Juliet and Romeo each respectively have accounts on the capulet.com and montague.net servers. When Juliet types in and sends her message, a sequence of events is set in action:
Juliet's client sends her message to the capulet.com server
- If montague.net is blocked on capulet.com the message is dropped.
The capulet.com server opens a connection to the montague.net server.
The montague.net server delivers the message to Romeo
- If capulet.com is blocked on montague.net, the message is dropped.
- If Romeo is not currently connected, the message is stored for later delivery.
{| style="margin-left: auto; margin-right: auto; margin-top: 2em; text-align: center"| style="border: 1px solid #cccccc; border-collapse:collapse; background-color:#ffffff; text-align:center; padding: 0.33em" | Juliet| style="width: 2em" | ↔| style="border: 1px solid #999999; border-collapse:collapse; background-color:#cccccc; text-align:center; padding: 0.33em" | capulet.com| style="width: 2em" | →| style="border: 1px solid #999999; border-collapse:collapse; background-color:#cccccc; text-align:center; padding: 0.33em" | montague.net| style="width: 2em" | ↔| style="border: 1px solid #cccccc; border-collapse:collapse; background-color:#ffffff; text-align:center; padding: 0.33em" | Romeo|}
Connecting to other protocols
Another useful feature of the XMPP system is that of
transports, also known as
gateways, which allow users to access networks using other protocols. This can be other instant messaging protocols, but also protocols such as
Short message service or E-mail. Unlike
Multiprotocol instant messaging application, XMPP provides this access at the server level by communicating via special gateway services running on a remote computer. Any user can "register" with one of these gateways by providing the information needed to log on to that network, and can then communicate with users of that network as though they were Jabber users. This means that any client which fully supports XMPP can be used to access any network to which a gateway exists, without the need for any extra code in the client and without the need for the client to have direct access to the Internet. This may violate terms of service on the protocol used; however, such terms of service are not legally enforceable in several countries.
XMPP and HTTP
Another interesting aspect of XMPP is the
Hypertext Transfer Protocol binding for users behind restricted
firewall (networking). In the original specification, XMPP could use HTTP in two ways:
polling XEP-0025 and
binding. XEP-0124. Polling is now deprecated from the standard. but HTTP polling essentially implies messages stored on a server-side database are being fetched (and posted) regularly by an XMPP client by way of HTTP 'GET' and 'POST' requests. With binding, the client uses longer-lived HTTP connections to receive messages as soon as they are sent. This push-model of notification is more efficient than polling, where many of the polls return no new data.
Because the client uses HTTP, most firewalls would allow the client to fetch and post messages without any hindrance. Thus, in scenarios where the Transmission Control Protocol port used by XMPP is blocked, a server can listen on the normal HTTP port and the traffic should pass without problems. There also are various websites which allow people to sign in to Jabber via their browser.
Uptake and clients
XMPP is implemented by a large number of XMPP clients, servers, and code libraries. These include:
- Google Talk, Google's instant messaging product, uses an implementation of the protocol.
- LJTalk, Livejournal's instant messaging product, also uses XMPP, running the perl-based implementation, DJabberd
- The Gizmo Project, primarily a Voice over IP system using Session Initiation Protocol (SIP), uses XMPP as its instant messaging protocol and can interoperate with Google Talk for text.
- The open source peer-to-peer WiredReach Universal Content Sharing System, an example of Social Networking Software, depends upon XMPP.
Development
The IETF XMPP
IETF Working Group has produced a number of
Request for Comments protocol documents:
- RFC 3920, Extensible Messaging and Presence Protocol (XMPP): Core which describes client-server messaging using two open ended XML streams. XML streams consist of <presence/>, <message/> and <iq/> (info/query). A connection is authenticated with Simple Authentication and Security Layer (SASL) and Encryption with Transport Layer Security (TLS).
- RFC 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP.
- RFC 3922, Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM) relates XMPP and the Common Presence and Instant Messaging (CPIM) specifications.
- RFC 3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) describes end to end encryption of XMPP messages using S/MIME. Conflicting this proposal, many clients currently use GNU Privacy Guard for encrypting messages. XEP-0027
The XMPP Standards Foundation (XSF) develops and publishes extensions to XMPP through a standards process centered around
XMPP Extension Protocols (XEPs, previously known as Jabber Enhancement Proposals - JEPs). The following extensions are in especially wide use:
- Data Forms XEP-0004
- Service Discovery XEP-0030
- Multi-User Chat XEP-0045
- XHTML-IM XEP-0071
- File Transfer XEP-0096
- Entity Capabilities XEP-0115
- HTTP Binding XEP-0124
XMPP is also currently being extended to handle signalling / negotiation for
Voice over Internet protocol (VoIP) and other media sessions. This signalling protocol is called Jingle (protocol). Jingle is designed to be consistent with the Google Talk service and interoperable with the Session Initiation Protocol.
References
See also
External links
- Jabber User Guide - End user introduction to Jabber.
- XMPP Standards Foundation
- List of Jabber servers by country or domain
- Jabber Software Foundation (JSF)
- Press release from the JSF regarding the publication of the XMPP RFCs.
- XMPP Case Studies
Extensible Messaging and Presence Protocol (
XMPP) is an open,
XML-inspired
network protocol for near-real-time, extensible
instant messaging (IM) and presence information (a.k.a. buddy lists). It is the core protocol of the
Jabber Instant Messaging and Presence technology. The protocol is built to be extensible and other features such as Voice over IP and file transfer signaling have been added.
Unlike most instant messaging protocols, XMPP is based on
open standards. Like
e-mail, it is an open system (computing) where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers. The standard server implementations and many clients are also free software and open-source software software.
The Internet Engineering Task Force (
IETF) formed an XMPP Working Group in 2002 to formalize the core protocols as an IETF Instant Messaging and presence technology. The four specifications produced by the XMPP WG were approved by the
IESG as Proposed Standards in 2004. RFC 3920 and RFC 3921 are currently undergoing revisions in preparation for advancing them to Draft Standard within the Internet Standards Process. The
XMPP Standards Foundation (formerly the Jabber Software Foundation) is active in developing open XMPP extensions. Unfortunately no Jabber technology correctly implements the RFCs in full.
XMPP-based software is deployed on thousands of servers across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation.http://www.xmpp.org/xsf/press/2003-09-22.shtml Popular commercial servers include the Gizmo Project. Popular client applications include the freeware clients offered by
Google and the
Gizmo Project,
Multiprotocol instant messaging application such as
iChat and
Pidgin (instant messaging client) (formerly Gaim), and free dedicated clients such as
Psi (instant messaging client).
Google Talk provides XMPP gateways to its service.
History
Jeremie Miller began the Jabber project in 1998. Its first major public release occurred in May 2000. The project's main product was jabberd, a Jabber server.
This early Jabber
Communications protocol formed the basis for XMPP, published as RFC 3920. It has often been regarded as being in competition with
SIMPLE, based on the Session Initiation Protocol protocol, as the standard protocol for instant messaging and presence notification.
As of 2005, about half a dozen XMPP server software implementations written in different programming languages and targeting different use cases existed.
In August 2005, Google introduced
Google Talk, a combination Voice over IP and IM system which uses XMPP for its instant messaging function. The initial launch did not include
inter-server communications, but as of
January 17,
2006, it has server-to-server communications enabled.
Features
Decentralization The architecture of the XMPP network is similar to email; anyone can run their own XMPP server and there is no central master server.Open standards The Internet Engineering Task Force has formalized XMPP as an approved instant messaging and presence technology under the name of
XMPP, and the XMPP specifications have been published as RFC 3920 and RFC 3921. No royalties are required to implement support of these specifications and their development is not tied to a single vendor.History XMPP technologies have been in use since 1998. Multiple implementations of the XMPP standards exist for clients, servers, components, and code libraries, with the backing of large companies such as
Sun Microsystems and
Google.Security XMPP servers may be isolated from the public Jabber network (e.g., on a company intranet), and robust security (via
Simple Authentication and Security Layer and
Transport Layer Security) has been built into the core XMPP specifications. To encourage use of channel encryption, the [httpFlexibility Custom functionality can be built on top of XMPP; to maintain interoperability, common extensions are managed by the XMPP Software Foundation. XMPP applications beyond IM include network management, content syndication, collaboration tools, file sharing, gaming, and remote systems monitoring.
Decentralisation and addressing
The Jabber network is server-based (i.e. clients do not talk directly to one another) but decentralized; by design there is no central authoritative server, as there is with services such as AOL Instant Messenger or MSN Messenger. Some confusion often arises on this point as there is a public XMPP server being run at "Jabber.org", to which a large number of users subscribe. However, anyone may run their own XMPP server on their own domain.
Every user on the network has a unique
Jabber ID (usually abbreviated as
JID). To avoid the need for a central server with a list of IDs, the JID is structured like an e-mail address with a username and a domain name system address for the server where that user resides separated by an
at sign (@), such as
username@domain.com.
Since a user may wish to log in from multiple locations, the server allows the client to specify a further string known as a resource, which identifies which of the user's clients it is (for example home, work and mobile). This may then be included in the JID by adding a forward slash followed by the name of the resource. Each resource may have specified a numerical value called priority. For example the full JID of a user's mobile account would be
username@domain.com/mobile. Messages that are simply sent to
username@domain.com will go to client with highest priority, but those sent to
username@domain.com/mobile will only go to the mobile client.
JIDs without a username part are also valid and may be used (with or without a resource part) for system messages and control of special features on the server.
Message delivery process
Suppose
juliet@capulet.com wants to chat with
romeo@montague.net. Juliet and Romeo each respectively have accounts on the capulet.com and montague.net servers. When Juliet types in and sends her message, a sequence of events is set in action:
Juliet's client sends her message to the capulet.com server
- If montague.net is blocked on capulet.com the message is dropped.
The capulet.com server opens a connection to the montague.net server.
The montague.net server delivers the message to Romeo
- If capulet.com is blocked on montague.net, the message is dropped.
- If Romeo is not currently connected, the message is stored for later delivery.
{| style="margin-left: auto; margin-right: auto; margin-top: 2em; text-align: center"| style="border: 1px solid #cccccc; border-collapse:collapse; background-color:#ffffff; text-align:center; padding: 0.33em" | Juliet| style="width: 2em" | ↔| style="border: 1px solid #999999; border-collapse:collapse; background-color:#cccccc; text-align:center; padding: 0.33em" | capulet.com| style="width: 2em" | →| style="border: 1px solid #999999; border-collapse:collapse; background-color:#cccccc; text-align:center; padding: 0.33em" | montague.net| style="width: 2em" | ↔| style="border: 1px solid #cccccc; border-collapse:collapse; background-color:#ffffff; text-align:center; padding: 0.33em" | Romeo|}
Connecting to other protocols
Another useful feature of the XMPP system is that of
transports, also known as
gateways, which allow users to access networks using other protocols. This can be other instant messaging protocols, but also protocols such as
Short message service or
E-mail. Unlike
Multiprotocol instant messaging application, XMPP provides this access at the server level by communicating via special gateway services running on a remote computer. Any user can "register" with one of these gateways by providing the information needed to log on to that network, and can then communicate with users of that network as though they were Jabber users. This means that any client which fully supports XMPP can be used to access any network to which a gateway exists, without the need for any extra code in the client and without the need for the client to have direct access to the Internet. This may violate terms of service on the protocol used; however, such terms of service are not legally enforceable in several countries.
XMPP and HTTP
Another interesting aspect of XMPP is the
Hypertext Transfer Protocol binding for users behind restricted
firewall (networking). In the original specification, XMPP could use HTTP in two ways:
polling XEP-0025 and
binding. XEP-0124. Polling is now deprecated from the standard. but HTTP polling essentially implies messages stored on a server-side database are being fetched (and posted) regularly by an XMPP client by way of HTTP 'GET' and 'POST' requests. With binding, the client uses longer-lived HTTP connections to receive messages as soon as they are sent. This push-model of notification is more efficient than polling, where many of the polls return no new data.
Because the client uses HTTP, most firewalls would allow the client to fetch and post messages without any hindrance. Thus, in scenarios where the
Transmission Control Protocol port used by XMPP is blocked, a server can listen on the normal HTTP port and the traffic should pass without problems. There also are various websites which allow people to sign in to Jabber via their browser.
Uptake and clients
XMPP is implemented by a large number of XMPP clients, servers, and code libraries. These include:
- Google Talk, Google's instant messaging product, uses an implementation of the protocol.
- LJTalk, Livejournal's instant messaging product, also uses XMPP, running the perl-based implementation, DJabberd
- The Gizmo Project, primarily a Voice over IP system using Session Initiation Protocol (SIP), uses XMPP as its instant messaging protocol and can interoperate with Google Talk for text.
- The open source peer-to-peer WiredReach Universal Content Sharing System, an example of Social Networking Software, depends upon XMPP.
Development
The IETF XMPP IETF Working Group has produced a number of
Request for Comments protocol documents:
- RFC 3920, Extensible Messaging and Presence Protocol (XMPP): Core which describes client-server messaging using two open ended XML streams. XML streams consist of <presence/>, <message/> and <iq/> (info/query). A connection is authenticated with Simple Authentication and Security Layer (SASL) and Encryption with Transport Layer Security (TLS).
- RFC 3921, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence describes instant messaging (IM), the most common application of XMPP.
- RFC 3922, Mapping the Extensible Messaging and Presence Protocol (XMPP) to Common Presence and Instant Messaging (CPIM) relates XMPP and the Common Presence and Instant Messaging (CPIM) specifications.
- RFC 3923, End-to-End Signing and Object Encryption for the Extensible Messaging and Presence Protocol (XMPP) describes end to end encryption of XMPP messages using S/MIME. Conflicting this proposal, many clients currently use GNU Privacy Guard for encrypting messages. XEP-0027
The XMPP Standards Foundation (XSF) develops and publishes extensions to XMPP through a standards process centered around
XMPP Extension Protocols (XEPs, previously known as Jabber Enhancement Proposals - JEPs). The following extensions are in especially wide use:
- Data Forms XEP-0004
- Service Discovery XEP-0030
- Multi-User Chat XEP-0045
- XHTML-IM XEP-0071
- File Transfer XEP-0096
- Entity Capabilities XEP-0115
- HTTP Binding XEP-0124
XMPP is also currently being extended to handle signalling / negotiation for
Voice over Internet protocol (VoIP) and other media sessions. This signalling protocol is called
Jingle (protocol). Jingle is designed to be consistent with the Google Talk service and interoperable with the Session Initiation Protocol.
References
See also
External links
- Jabber User Guide - End user introduction to Jabber.
- XMPP Standards Foundation
- List of Jabber servers by country or domain
- Jabber Software Foundation (JSF)
- Press release from the JSF regarding the publication of the XMPP RFCs.
- XMPP Case Studies