Comparison of file transfer protocols
{{Short description|none}}
{{for multi|file sharing software|Comparison of file-sharing applications|file synchronization software|Comparison of file synchronization software}}
{{Use dmy dates|date=February 2018}}
This article lists communication protocols that are designed for file transfer over a telecommunications network.
Protocols for shared file systems—such as 9P and the Network File System—are beyond the scope of this article, as are file synchronization protocols.
Protocols for packet-switched networks
A packet-switched network transmits data that is divided into units called packets. A packet comprises a header (which describes the packet) and a payload (the data). The Internet is a packet-switched network, and most of the protocols in this list are designed for its protocol stack, the IP protocol suite.
They use one of two transport layer protocols: the Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP). In the tables below, the "Transport" column indicates which protocol(s) the transfer protocol uses at the transport layer. Some protocols designed to transmit data over UDP also use a TCP port for oversight.
The "Server port" column indicates the port from which the server transmits data. In the case of FTP, this port differs from the listening port. Some protocols—including FTP, FTP Secure, FASP, and Tsunami—listen on a "control port" or "command port", at which they receive commands from the client.
Similarly, the encryption scheme indicated in the "Encryption" column applies to transmitted data only, and not to the authentication system.
=Overview=
=Features=
The "Managed" column indicates whether the protocol is designed for managed file transfer (MFT). MFT protocols prioritise secure transmission in industrial applications that require such features as auditable transaction records, monitoring, and end-to-end data security. Such protocols may be preferred for electronic data interchange.{{cite web |url=http://www.jscape.com/blog/oftp-odette-file-transfer-protocol |title=Managed File Transfer and Network Solutions |last=Villanueva |first=John Carl |date=17 February 2015 |website=JSCAPE.com |publisher=JSCAPE}}
{{notelist|refs=
{{efn|name=a|Some implementations can obfuscate traffic using RC4 et al. See BitTorrent protocol encryption.}}
{{efn|name=ii|One implementation, Fujitsu openFT, applies AES.}}
{{efn|name=f|These are the options in the reference implementation, which uses OpenSSL.}}
}}
=Ports=
In the table below, the data port is the network port or range of ports through which the protocol transmits file data. The control port is the port used for the dialogue of commands and status updates between client and server.
The column "Assigned by IANA" indicates whether the port is listed in the Service Name and Transport Protocol Port Number Registry, which is curated by the Internet Assigned Numbers Authority (IANA). IANA devotes each port number in the registry to a specific service with a specific transport protocol. The table below lists the transport protocol in the "Transport" column.
class="wikitable sortable" style="text-align:center"
! scope="col" rowspan="2" colspan="2" | Protocol !! scope="col" colspan="3" | Data port !! scope="col" colspan="3" | Control port !! scope="col" rowspan="2" | Assigned | ||||||||||
scope="col" | Server | scope="col" | Client | scope="col" | Transport
! scope="col" | Server | scope="col" | Client | scope="col" | Transport | ||||||
---|---|---|---|---|---|---|---|---|---|---|
style="text-align:left" colspan="2" | BITS | 80/443{{efn|When used with HTTP/HTTPS, configurable}} / 137–139{{efn|When used with SMB}} | TCP / UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | BitTorrent | 6881{{efn|name=BT_port}} | 6881 | TCP | 6881 | 6881 | TCP | {{no}} | {{n/a}} | {{cite web |url=https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt |title=Service Name and Transport Protocol Port Number Registry |date=28 February 2018 |website=IANA.org |publisher=Internet Assigned Numbers Authority |access-date=2018-03-17}} | |
style="text-align:left" colspan="2" | CCSDS File Delivery Protocol (CFDP) | ||||||||||
style="text-align:left" colspan="2" | Cross File Transfer (CFT) | 1761{{efn|name=i}} | TCP / X.25 | ||||||||
style="text-align:left" colspan="2" | Ether File Transfer Protocol (EFTP) | {{n/a}} | {{n/a}} | {{n/a|None}} | {{n/a}} | {{n/a}} | {{n/a|None}} | {{n/a}} | {{n/a}} | ||
style="text-align:left" colspan="2" | Fast and Secure Protocol (FASP) | ≥33001 | UDP | 22 | TCP | {{no}} | {{n/a}} | ||||
style="text-align:left" colspan="2" | File Delivery over Unidirectional Transport (FLUTE) | 4001 | UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | File Service Protocol (FSP) | {{varies|Chosen by user}}{{efn|UDP port 21 is sometimes chosen for FSP.}} | UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | File Transfer Access and Management (FTAM) | 4800 / 102 | TCP | {{cite web |url=https://sp.ts.fujitsu.com/dmsp/Publications/public/dp-openft-connection-to-customs-atlas-em-en.pdf |title=openFT v11.0: Setting Up a Connection to Customs (Atlas) with openFT FTAM |publisher=Fujitsu |year=2010 |page=2 |access-date=2018-02-18 }} | |||||||
style="text-align:left" rowspan="2" | File Transfer Protocol (FTP) | style="text-align:right" | Active mode | 20 | 20 | rowspan="2" | TCP{{efn|name=d}} | rowspan="2" | 21 | rowspan="2" | ≥1024 | rowspan="2" | TCP | rowspan="2" {{yes}} | rowspan="2" | Jon Postel | rowspan="2" | |
style="text-align:right" | Passive mode | ≥1024{{efn|name=c}} | ≥1024 | ||||||||
style="text-align:left" colspan="2" | FTP Secure (FTPS) | 989 | TCP | 990 | TCP | {{yes}} | Christopher Allen | ||||
style="text-align:left" colspan="2" | HTTP Secure (HTTPS) | 443 | TCP | TCP | {{yes}} | IESG | |||||
style="text-align:left" colspan="2" | Host Unix Linkage File Transfer (HULFT) | 30000 | TCP | TCP | {{no}} | {{n/a}} | |||||
style="text-align:left" colspan="2" | Hypertext Transfer Protocol (HTTP) | 80 | TCP | TCP | {{yes}} | Tim Berners-Lee | |||||
style="text-align:left" colspan="2" | Micro Transport Protocol (μTP) | UDP | {{no}} | {{n/a}} | |||||||
style="text-align:left" colspan="2" | Multicast Dissemination Protocol (MDP) | {{varies|Chosen by user}} | UDP | {{cite web |url=https://downloads.pf.itd.nrl.navy.mil/docs/mdp/MdpDevGuide.html |archive-url=https://web.archive.org/web/20151209021755/http://downloads.pf.itd.nrl.navy.mil/docs/mdp/MdpDevGuide.html |url-status=dead |archive-date=9 December 2015 |title=Multicast Dissemination Protocol (MDP) Developer's Guide |last1=Adamson |first1=Brian |last2=Macker |first2=Joe |website=nrl.navy.mil |publisher=United States Naval Research Laboratory |access-date=2018-02-22}} | |||||||
style="text-align:left" colspan="2" | Multicast File Transfer Protocol (MFTP) | 5402 | UDP | {{yes}} | Steve Bannister | ||||||
style="text-align:left" colspan="2" | NACK-Oriented Reliable Multicast Transport Protocol (NORM) | UDP | |||||||||
style="text-align:left" colspan="2" | Odette File Transfer Protocol (OFTP) | 3305 | TCP / X.25 | TCP / X.25 | |||||||
style="text-align:left" colspan="2" | Odette File Transfer Protocol 2 (OFTP2) | 6619 | TCP / X.25 | TCP / X.25 | |||||||
style="text-align:left" colspan="2" | Reliable Blast UDP (RBUDP) | {{varies|Chosen by user}} | UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | Remote copy (rcp) | 514 | TCP | TCP | {{yes}} | ||||||
style="text-align:left" colspan="2" | Secure copy (SCP) | 22 | TCP | TCP | {{yes}} | ||||||
style="text-align:left" colspan="2" | Secure Hypertext Transfer Protocol (S-HTTP) | 80 | TCP | TCP | {{no}} | {{n/a}} | |||||
style="text-align:left" colspan="2" | Simple Asynchronous File Transfer (SAFT) | 487 | TCP | {{yes}} | Ulli Horlacher | ||||||
style="text-align:left" colspan="2" | Simple File Transfer Protocol (SFTP) | 115 | TCP | TCP | {{yes}} | Mark Lottor | |||||
style="text-align:left" colspan="2" | SSH file transfer protocol (SFTP) | 22 | TCP | TCP | {{yes}} | ||||||
style="text-align:left" colspan="2" | T.127 | 1503 | TCP | TCP | {{yes}} | Jim Johnston | |||||
style="text-align:left" colspan="2" | Trivial File Transfer Protocol (TFTP) | 69 | UDP | {{yes}} | David Clark | ||||||
style="text-align:left" colspan="2" | Tsunami UDP Protocol | {{varies|Chosen by user}} | UDP | TCP | {{no}} | {{n/a}} | |||||
style="text-align:left" colspan="2" | Tus open protocol for resumable file uploads (tus) | 80{{efn|name=f}} | TCP | TCP | {{no}} | {{n/a}} | |||||
style="text-align:left" colspan="2" | UDP-based Data Transfer Protocol (UDT) | {{varies|Chosen by server}} | UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | UDP-based File Transfer Protocol (UFTP) | 1044 | UDP | {{no}} | {{n/a}} | ||||||
style="text-align:left" colspan="2" | Unix-to-Unix Copy (UUCP) | 540 | TCP | TCP | {{yes}} | ||||||
style="text-align:left" colspan="2" | Warp Speed Data Transfer (WDT) | {{varies|Chosen by server or by user}} | TCP | TCP | {{no}} | {{n/a}} |
{{notelist|refs=
{{efn|name=BT_port|Typically, if port 6881 is unavailable as a listening port, the peer incrementally tries 6882–6889. Another port may be specified in software.}}
{{efn|name=i|1761 is the default port, but 1761–1768 are allocated by IANA.}}
{{efn|name=c|The server listens on TCP port 21 (the control port), and the client sends commands to this port from a random port above 1023. To transfer data in active mode, the server initiates a connection from port 20 to the client at the randomly selected port number.{{pb}}In passive mode, the client uses a random port above 1023 as a control port, and from this initiates file transfer. The server sends or receives data from a randomly selected port above 1023, and the client sends or receives data from one port number above its own randomly selected control port.}}
{{efn|name=d|FTP was originally designed for NCP, a protocol used on ARPANET before the advent of TCP. The TCP implementation of FTP was standardized in {{IETF RFC|959}}.}}
{{efn|name=f|Can be chosen by user, but layers on top of HTTP(S) so often 80/443}}
}}
Serial protocols
File:RS-232-Cable-9-25.jpg adapter cable]]
The following protocols were designed for serial communication, mostly for the RS-232 standard. They are used for uploading and downloading computer files via modem or serial cable (e.g., by null modem or direct cable connection). UUCP is one protocol that can operate with either RS-232 or the Transmission Control Protocol as its transport. The Kermit protocol can operate over any computer-to-computer transport: direct serial, modem, or network (notably TCP/IP, including on connections secured by SSL, SSH, or Kerberos). OBject EXchange is a protocol for binary object wireless transfer via the Bluetooth standard. Bluetooth was conceived as a wireless replacement for RS-232.
=Overview=
class="wikitable sortable" style="text-align:center"
! scope="col" | Protocol !! scope="col" | Author !! scope="col" | First released !! scope="col" | License !! scope="col" | Description !! scope="col" class="unsortable" | {{abbr|Refs|References}} | |||||
style="text-align:left" | BiModem | Erik Labs | 1989 | Bi-directional transfers. | ||
style="text-align:left" | BLAST | Communications Research Group | 1981 | Powerful protocol originating on the Data General Nova minicomputer, and then ported to micros and mainframes. | {{cite news |url=http://www.birds-of-the-air-press.com/bota/blast/unix_today.pdf |title=Moving Files Can Be a BLAST |last=Magidson |first=Steve |date=15 May 1989 |newspaper=UNIX Today! |publisher=CMP Media |access-date=2018-02-18}} | |
style="text-align:left" | C-MODEM | Lavio Pareschi | 1989 | Packet lengths from 32 to 4096 bytes, optional (but normally used) streaming mode. | ||
style="text-align:left" | B protocol | CompuServe | 1981 | Offered file transfer as well as a command stream. | ||
style="text-align:left" | JMODEM | Richard B. Johnson | {{dunno}} | XMODEM derivative with blocks from 512 to 8192 bytes and RLE compression. | ||
style="text-align:left" | HS/Link | Samuel H. Smith | 1991 | |||
style="text-align:left" | Kermit | Frank da Cruz et al. | 1981 | Open Source (BSD) as of 2011 | Transport- and platform-independent transfer of text and binary files across full- or half-duplex connections with conversion of text file formats and character sets. | da Cruz (1987) [https://books.google.com/books?id=_FEvBQAAQBAJ&pg=PA3 p. 3] |
style="text-align:left" | LeechModem | Sam Brown | {{dunno}} | Variations of X and Y that faked failed downloads in order to avoid BBS download quotas. | ||
style="text-align:left" | Lynx | Matthew Thomas | 1989 | Similar to Kermit: 64-byte packets, 2 to 16 packets per window, CRC-32. Little or no support outside the Lynx program itself. | ||
style="text-align:left" | NMODEM | L. B. Neal | 1990 | Essentially XMODEM-CRC with 2048 byte blocks. | ||
style="text-align:left" | OBEX File Transfer Protocol | {{dunno}} | {{dunno}} | style="text-align:left" | A synchronous file transfer protocol in the OBject EXchange (OBEX) Bluetooth profile. | ||
style="text-align:left" | OBEX Push | {{dunno}} | {{dunno}} | style="text-align:left" | An asynchronous file transfer protocol in the OBject EXchange (OBEX) Bluetooth profile. | {{cite web |url=http://www.irdajp.org/irdajp.info/obex.html |title=OBEX (Object Exchange) Protocol |year=2011 |website=irdajp.org |publisher=Infrared Data Association |access-date=2018-02-20 |archive-url=https://web.archive.org/web/20180221095941/http://www.irdajp.org/irdajp.info/obex.html |archive-date=21 February 2018 |url-status=dead }} | |
style="text-align:left" | Punter | Steve Punter | {{dunno}} | Suite of similar-but-different XMODEM-like protocols for various Commodore machines. | ||
style="text-align:left" | SEAlink | Thom Henderson | 1986 | style="text-align:left" | A MODEM7/XMODEM-compatible protocol with sliding window support developed to avoid propagation delays in satellite transmissions and packet networks. | {{GitHub|cpeterso/sealink/blob/master/sealink.c}}{{cite book |title=Mastering PC Communications Software |last=Held |first=Gilbert |publisher=Van Nostrand Reinhold |year=1993 |page=74 |chapter=SeaLink}}{{cite book |title=Telecommunications Using ProComm & ProComm Plus Made Easy |last=Woggon |first=Michele |publisher=Prentice Hall |year=1995 |page=34 |chapter=SeaLink}} | |
style="text-align:left" | SMODEM | Arisoft | {{dunno}} | |||
style="text-align:left" | TMODEM | Mike Bryeans | {{dunno}} | |||
style="text-align:left" | UUCP | Mike Lesk | 1979 | Suite of protocols for copying files between Unix machines, used for many purposes including the distribution of email. Also allows commands to be sent, which led to the first internet worms. The file transfer protocol within UUCP is the "g" protocol. | {{cite web |title=UUCP protocol internals |url=http://www.math.utah.edu/docs/info/uucp_5.html#SEC53 |website=University of Utah }} | |
style="text-align:left" | MODEM7 | Mark M. Zeigler, James K. Mills | 1980 | Slight extension of XMODEM to add filename support and batch transfers. | {{cite magazine |last=Lucas |first=Jay |date=6 September 1982 |title=Freeware: Modem lets your computers communicate |url=https://books.google.com/books?id=CDAEAAAAMBAJ&pg=PA53 |magazine=InfoWorld |publisher=IDG |page=53 |access-date=2018-02-18}} | |
style="text-align:left" | XMODEM | Ward Christensen | 1977 | {{good|Public domain}} | Very simple protocol that saw widespread use and provided the pattern for many following protocols. | Glass (1988) [https://books.google.com/books?id=4D4EAAAAMBAJ&pg=PA87 p. 87] |
style="text-align:left" | WXMODEM | Peter Boswell | 1986 | {{good|Public domain}} | Version of XMODEM with sliding windows for higher performance. | Glass (1988) [https://books.google.com/books?id=4D4EAAAAMBAJ&pg=PA89 p. 89]{{cite book |url=http://www.zoklet.net/totse/en/technology/telecommunications/wxmodem.html |archive-url=https://web.archive.org/web/20140923084745/http://www.zoklet.net/totse/en/technology/telecommunications/wxmodem.html |archive-date=2014-09-23 |title=How XModem, XModem CRC, and WXModem work |last=Boswell |first=Peter |year=2007 |orig-year=1986 |via=Totse.com}} |
style="text-align:left" | YMODEM | Chuck Forsberg | 1985 | {{good|Public domain}} | Series of optional expansions on XMODEM for higher performance. | |
style="text-align:left" | ZMax | Mike Bryeans | {{sort|1991|c. 1991}} | Modifications to ZMODEM to allow packets up to 32 kB in length. | ||
style="text-align:left" | ZMODEM | Chuck Forsberg | 1986 | {{good|Public domain}} | Streaming protocol that forsakes XMODEM compatibility but offers a wide variety of new features and improved performance. Became almost universal on BBS systems in the early 1990s. |
=Features=
class="wikitable sortable" style="text-align:center"
! scope="col" | Protocol !! scope="col" | Data block size | |||||||
style="text-align:left" | BiModem | {{yes}} | ||||||
style="text-align:left" | BLAST | 84–1024+ | RLE | CRC | {{yes}} | {{yes}} | {{yes}} | {{cite news |url=http://www.birds-of-the-air-press.com/bota/blast/unix_today.pdf |title=Moving Files Can Be a BLAST |last=Magidson |first=Steve |date=15 May 1989 |newspaper=UNIX Today! |publisher=CMP Media |access-date=2018-02-18}} |
style="text-align:left" | C-MODEM | 32–4096 | CRC | {{yes}} | ||||
style="text-align:left" | B protocol | 128–2048 | CRC32 / CRC16 / 8-bit checksum | {{yes}} | {{yes}} | |||
style="text-align:left" | JMODEM | 64–8192 | RLE | |||||
style="text-align:left" | HS/Link | CRC32 | {{yes}} | {{yes}} | ||||
style="text-align:left" | Kermit | ≤9024 (negotiated) | RLE (run length encoding, negotiated) | Checksum or CRC16 (negotiated) | {{yes}} (binary files only, negotiated) | {{no}} | {{optional|Over full-duplex only (negotiated)}} | da Cruz (1987) pp. [https://books.google.com/books?id=_FEvBQAAQBAJ&pg=PA234 234], [https://books.google.com/books?id=_FEvBQAAQBAJ&pg=PA253 253], [https://books.google.com/books?id=_FEvBQAAQBAJ&pg=PA307 307] |
style="text-align:left" | LeechModem | |||||||
style="text-align:left" | Lynx | RLE | CRC32 | {{yes}} | ||||
style="text-align:left" | NMODEM | 2048 | ||||||
style="text-align:left" | OBject EXchange | |||||||
style="text-align:left" | Punter | |||||||
style="text-align:left" | SEAlink | {{yes}} | {{yes}} | |||||
style="text-align:left" | SMODEM | {{yes}} | ||||||
style="text-align:left" | Tmodem | {{no}} | ||||||
style="text-align:left" | UUCP "g" | ≤4096 | {{no}} | {{no}} | {{cite book |title=Guide to Linux Installation and Administration |last=Wells |first=Nicholas |page=140 |chapter=Using UUCP for Remote Access |chapter-url=https://books.google.com/books?id=jQE-iUCjUKAC&pg=PA140 |publisher=Course Technology |isbn=978-0-619-00094-3 |year=2003 |via=Google Books }}{{cite web |url=https://docs.freebsd.org/info/uucp/uucp.info.g_Protocol.html |title=UUCP 'g' Protocol |last=Taylor |first=Ian Lance |website=FreeBSD Documentation Server |publisher=The FreeBSD Project |access-date=2018-03-08}} | |||
style="text-align:left" | MODEM7 | 128 | {{no}} | Checksum | {{partial|Stop-and-wait ARQ}} | |||
style="text-align:left" | XMODEM | 128 | {{no}} | Checksum | {{partial|Stop-and-wait ARQ}} | |||
style="text-align:left" | WXMODEM | ≤512 | {{yes}} | |||||
style="text-align:left" | YMODEM | 1024 | {{no}} | CRC16 | ||||
style="text-align:left" | ZMax | ≤~32,768 | CRC32 | |||||
style="text-align:left" | ZMODEM | 256 / 1024 | {{no}} | CRC32 | {{yes}} | {{yes}} |
See also
{{columns-list|colwidth=20em|
- Comparison of file-sharing applications
- Comparison of file synchronization software
- Comparison of distributed file systems
- Lists of network protocols
- List of TCP and UDP port numbers
- List of backup software
- AS2
- Connect:Direct
- Files transferred over shell protocol (FISH)
- Pragmatic General Multicast
- Sendfile
- Waarp
}}
Notes
{{Reflist}}
References
- {{cite book |title=Kermit: A File Transfer Protocol |last=da Cruz |first=Frank |location=Bedford |publisher=Digital Press |year=1987 |isbn=978-0-932376-88-6 |oclc=751527576 |via=Google Books |url=https://archive.org/details/kermitfiletransf0000dacr }}
- {{cite web |url=http://www.kermitproject.org/kproto.pdf |title=Kermit Protocol Manual |last=da Cruz |first=Frank |date=June 1986|website=KermitProject.org
|publisher=The Kermit Project}}
- {{cite magazine |title=Xmodem Popular for Its Simplicity, Public Domain Status |last=Glass |first=Brett |date=30 May 1988 |magazine=InfoWorld |via=Google Books}}
- {{cite IETF |title=Simple File Transfer Protocol |rfc=913 |last=Lottor |first=Mark K. |date=September 1984 |publisher=IETF |accessdate=2018-03-01}}
Further reading
- {{cite web |url=http://www.tldp.org/HOWTO/Multicast-HOWTO-9.html |title=Multicast Transport Protocols |work=Multicast over TCP/IP HOWTO |last=de Goyeneche |first=Juan-Mariano |date=20 March 1998 |via=The Linux Documentation Project}}
- {{citation |title=Survey of Protocols and Mechanisms for Enhanced Transport over LONG FAT PIPES |last1=He |first1=Eric |last2=Kettimuthu |first2=Rajkumar |last3=Gu |first3=Yunhong |display-authors=etal |chapter=Reliable UDP Variants |pages=6–11 |chapter-url=https://www.globus.org/sites/default/files/Survey.pdf}}
- {{cite thesis |last=Kaplan |first=Ali |title=Collaborative Framework for High-Performance P2P-based Data Transfer in Scientific Computing |type=Ph.D. thesis |publisher=Indiana University Bloomington |year=2009 |isbn=978-1-109-50327-2 |oclc=648765323 |chapter=Literature Survey |pages=12–39 |url=http://dsc.soic.indiana.edu/publications/ali.kaplan.proofreading.V6.docx |format=DOCX}}
- {{cite book |title=The Working Programmer's Guide to Serial Protocols |last=Kientzle |first=Tim |year=1995 |publisher=Coriolis Group Books |isbn=978-1-883577-20-9 |oclc=441637109}}
- {{cite web |url=http://kermitproject.org/kermit.html |title=About Kermit |website=KermitProject.org |publisher=The Kermit Project}}
- {{cite web |url=http://kermitproject.org/archive.html |title=The Kermit Software Archive |website=KermitProject.org |publisher=The Kermit Project}}
{{DEFAULTSORT:File transfer protocols}}