AppConnect

Application data channels

Some notes on the protocols needed for file transfers and generic app data streams.

Uses

The Telepathy spec ought to be able to describe all these.

XEP-0096 File Transfer - Draft

Sender offers a single file with size, name, and optional description, date and md5sum. Sender may offer ranged transfers. Data streaming occurs over either XEP-0065 SOCKS5 Bytestreams, XEP-0047 In-Band Bytestreams or other implementation-dependent mechanisms.

MSNFTP

Sender offers a single file ("invitation") with size and name, and if they are unable to serve incoming connections, says so.

Receiver accepts or cancels. If the invitation said the sender couldn't serve incoming connections, the receiver offers to be the server.

The official client will only work if the switchboard session contains exactly the two people involved.

You can also offer arbitrary streams:

Application-Name: human-readable name Application-GUID: some unique identifier for the type of stream Application-URL: optional "more info" URL Session-Protocol: official client only supports SM1 Context-Data: application-specific

MSNP2P

File transfer through the switchboard. Analogous to IBB in XMPP?

IRC DCC

Basically, "connect to this IP:port and I'll send you this filename".

Google Talk

Jingle for session management, HTTP over pseudotcp over UDP for transfer, apparently lets you offer multiple files at once

Mechanisms

XEP-0047 In-Band Bytestreams - Draft

Binary blocks are sent over the XMPP stream as Base64 blobs.

XEP-0065 SOCKS5 Bytestreams

Direct connection: Initiator offers Target a network address and SID. Target connects to that network address and requests a SOCKS5 connection to hostname=SHA1(SID + initiator full JID + target full JID) port=0.

Mediated connection: Initiator offers Target the full JID and network address of the proxy, and a SID. Target connects to that network address and requests a SOCKS5 connection to hostname=SHA1(SID + initiator full JID + target full JID) port=0; so does the initiator. Now they can talk.

UDP support is also possible.

XEP-0095 Stream Initiation

Used to implement XEP-0096. Various modes can be selected.