Comparison of file transfer protocols

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description Template:For multi Template:Use dmy dates

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

Color key:Script error: No such module "Check for unknown parameters". Template:Pad Template:Legend2 Template:Pad Template:Legend2 Template:Pad Template:Legend2 Template:Pad Template:Legend2
Protocol Original author First published Protocol suite Standard Refs
Full name Abbreviation
Background Intelligent Transfer Service BITS Microsoft 2001 Template:Nonpartisan [1]
BitTorrent BT Bram Cohen 2001 Template:Nonpartisan [2]
CCSDS File Delivery Protocol CFDP 2002 Template:Operational
Cross File Transfer CFT Template:Nonpartisan
Ether File Transfer Protocol EFTP John Shoch 1979 PARC Universal Packet Template:Nonpartisan [3][4]
Fast and Secure Protocol FASP Ying Xu, Michelle Munson, Serban Simu 2007 Template:Nonpartisan [5]
File Delivery over Unidirectional Transport FLUTE Internet Society 2004 Template:IETF RFC [6]
File Service Protocol FSP Wen-King Su 1991 Template:Nonpartisan [7][8]
File Transfer Access and Management FTAM 1988 Template:Operational
File Transfer Protocol FTP Abhay Bhushan 1971 Internet protocol suite Template:Ya [9]
FTP Secure FTPS Internet Society 1997 Internet protocol suite Template:IETF RFC [10][11]
HTTP Secure HTTPS Taher Elgamal et al. 1995 Internet protocol suite Template:Ya [12][13]
Host Unix Linkage File Transfer HULFT ? 1993 Template:Nonpartisan
Hypertext Transfer Protocol HTTP Tim Berners-Lee et al. 1991 Internet protocol suite Template:Ya [14][15]
Micro Transport Protocol μTP Ludvig Strigeus, Greg Hazel, Stanislav Shalunov, Arvid Norberg, Bram Cohen 2007 Template:Nonpartisan [16][17]
Multicast Dissemination Protocol MDP 1993 Template:Nonpartisan
Multicast File Transfer Protocol MFTP C. Kenneth Miller et al. 1995 Template:Partial failure [18]
NACK-Oriented Reliable Multicast Transport Protocol NORM 2000 Template:IETF RFC
Odette File Transfer Protocol OFTP Organisation for Data Exchange by Tele Transmission in Europe 1986 X.25 Template:IETF RFC [19]
Odette File Transfer Protocol 2 OFTP2 Organisation for Data Exchange by Tele Transmission in Europe 2007 X.25, Internet protocol suite Template:IETF RFC [20]
Reliable Blast UDP RBUDP Eric He et al. 2002 Template:Nonpartisan [21]
Remote copy rcp ? 1982 Internet protocol suite Template:Nonpartisan [22]
Secure copy SCP Tatu Ylönen 1995 Secure Shell Template:Nonpartisan [23]
Secure Hypertext Transfer Protocol S-HTTP IETF Web Transaction Security Working Group 1999 Template:IETF RFC [24]
Simple Asynchronous File Transfer SAFT Ulli Horlacher 1995 Template:Nonpartisan [25][26]
Simple File Transfer Protocol SFTP Mark K. Lottor 1984 Template:IETF RFC [27]
SSH file transfer protocol SFTP Tatu Ylönen Template:Sort Secure Shell Template:Partial failure [28]
T.127 T.127 ITU[29] 1995 [30] Template:Operational
Trivial File Transfer Protocol TFTP Noel Chiappa 1980 Internet protocol suite Template:Ya [31]
Tsunami UDP Protocol Tsunami Mark Meiss et al. 2002 Template:Nonpartisan [32][33]
Tus open protocol for resumable file uploads tus Felix Geisendörfer, Marius Kleidl et al. 2014 Template:Nonpartisan [34][35]
UDP-based Data Transfer Protocol UDT Yunhong Gu 2004 Template:Nonpartisan
UDP-based File Transfer Protocol UFTP Dennis Bush 2001 Template:Nonpartisan [36]
Unix-to-Unix Copy UUCP Mike Lesk 1979 Template:Nonpartisan
Warp Speed Data Transfer WDT Laurent Demailly et al. 2015 Template:Nonpartisan [37]

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.[38]

Protocol Encryption
(data)Script error: No such module "Check for unknown parameters".
Transfer
resuming
Multicast
capable
Managed Refs
BITS Template:YaTemplate:Efn Yes No No
BitTorrent NoneTemplate:Efn Yes Template:Yes-No No [39][40]
CCSDS File Delivery Protocol (CFDP) Template:None Yes No No
Cross File Transfer (CFT) Template:Ya Yes [41][42]
Ether File Transfer Protocol (EFTP) None ? No No [43]
Fast and Secure Protocol (FASP) Template:Ya Yes No [44][45][46]
File Delivery over Unidirectional Transport (FLUTE) Optional/UnspecifiedTemplate:Efn No Yes [47][48][49]
File Service Protocol (FSP) None Yes No No [50][51]
File Transfer Access and Management (FTAM) ?Template:Efn [52]
File Transfer Protocol (FTP) None YesTemplate:Efn No No [53][54][55][56][57]
FTP Secure (FTPS) Template:Ya Yes No No
HTTP Secure (HTTPS) Template:Ya Yes No No [15][58][59]
Host Unix Linkage File Transfer (HULFT) Template:Ya ? No [60][61][62][63]
Hypertext Transfer Protocol (HTTP) None
(see HTTPS and S-HTTP)
Yes No No [15][64]
Micro Transport Protocol (μTP) None Yes Template:Yes-No No [16]
Multicast Dissemination Protocol (MDP) None Yes Yes [65][66]
Multicast File Transfer Protocol (MFTP) None Yes Yes No [67][68]
NACK-Oriented Reliable Multicast Transport Protocol (NORM) Template:Ya Yes Yes [69][70]
Odette File Transfer Protocol (OFTP) None Yes [19]
Odette File Transfer Protocol 2 (OFTP2) Template:Ya Yes [20]
Reliable Blast UDP (RBUDP) None No No [21][71][72]
Remote copy (rcp) None No No No [73]
Secure copy (SCP) Template:Ya No No No
Secure Hypertext Transfer Protocol (S-HTTP) Template:Ya No No No [74]
Simple Asynchronous File Transfer (SAFT) Template:Ya ? No No [25][26][75]
Simple File Transfer Protocol (SFTP) None Yes No No [76]
SSH file transfer protocol (SFTP) Template:Ya Yes No No [77]
T.127 None Yes Yes No [78][79][80]
Trivial File Transfer Protocol (TFTP) None No No No [81]
Tsunami UDP Protocol None No No No [82][83]
Tus open protocol for resumable file uploads (tus) Optional/UnspecifiedTemplate:Efn Yes No No [34][35]
UDP-based Data Transfer Protocol (UDT) Template:Unofficial No No No [83][84][85]
UDP-based File Transfer Protocol (UFTP) Template:YaTemplate:Efn Yes Yes No [83][36][86]
Unix-to-Unix Copy (UUCP) None SomeTemplate:Efn No No [87][88]
Warp Speed Data Transfer (WDT) Template:Ya Yes No No [89][90][91]

Template:Notelist

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.

Protocol Data port Control port Assigned
by IANAScript error: No such module "Check for unknown parameters".
Assignee Refs
Server Client Transport Server Client Transport
BITS 80/443Template:Efn / 137–139Template:Efn TCP / UDP No
BitTorrent 6881Template:Efn 6881 TCP 6881 6881 TCP No [92]
CCSDS File Delivery Protocol (CFDP)
Cross File Transfer (CFT) 1761Template:Efn TCP / X.25 [41][42]
Ether File Transfer Protocol (EFTP) None None
Fast and Secure Protocol (FASP) ≥33001 UDP 22 TCP No [92]
File Delivery over Unidirectional Transport (FLUTE) 4001 UDP No [92]
File Service Protocol (FSP) Template:VariesTemplate:Efn UDP No [92]
File Transfer Access and Management (FTAM) 4800 / 102 TCP [93]
File Transfer Protocol (FTP) Active mode 20 20 TCPTemplate:Efn 21 ≥1024 TCP Yes Jon Postel [92]
Passive mode ≥1024Template:Efn ≥1024
FTP Secure (FTPS) 989 TCP 990 TCP Yes Christopher Allen [92]
HTTP Secure (HTTPS) 443 TCP TCP Yes IESG [92]
Host Unix Linkage File Transfer (HULFT) 30000 TCP TCP No [92]
Hypertext Transfer Protocol (HTTP) 80 TCP TCP Yes Tim Berners-Lee [92]
Micro Transport Protocol (μTP) UDP No [92]
Multicast Dissemination Protocol (MDP) Template:Varies UDP [94][66]
Multicast File Transfer Protocol (MFTP) 5402 UDP Yes Steve Bannister [92]
NACK-Oriented Reliable Multicast Transport Protocol (NORM) UDP [69][70]
Odette File Transfer Protocol (OFTP) 3305 TCP / X.25 TCP / X.25 [19]
Odette File Transfer Protocol 2 (OFTP2) 6619 TCP / X.25 TCP / X.25 [20]
Reliable Blast UDP (RBUDP) Template:Varies UDP No [92]
Remote copy (rcp) 514 TCP TCP Yes [92]
Secure copy (SCP) 22 TCP TCP Yes [92]
Secure Hypertext Transfer Protocol (S-HTTP) 80 TCP TCP No [92]
Simple Asynchronous File Transfer (SAFT) 487 TCP Yes Ulli Horlacher [92]
Simple File Transfer Protocol (SFTP) 115 TCP TCP Yes Mark Lottor [92]
SSH file transfer protocol (SFTP) 22 TCP TCP Yes [92]
T.127 1503 TCP TCP Yes Jim Johnston [92]
Trivial File Transfer Protocol (TFTP) 69 UDP Yes David Clark [92]
Tsunami UDP Protocol Template:Varies UDP TCP No [92]
Tus open protocol for resumable file uploads (tus) 80Template:Efn TCP TCP No [92]
UDP-based Data Transfer Protocol (UDT) Template:Varies UDP No [92]
UDP-based File Transfer Protocol (UFTP) 1044 UDP No [92]
Unix-to-Unix Copy (UUCP) 540 TCP TCP Yes [92]
Warp Speed Data Transfer (WDT) Template:Varies TCP TCP No [92]

Template:Notelist

Serial protocols

File:RS-232-Cable-9-25.jpg
A 9-pin to 25-pin RS-232 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

Protocol Author First released License Description Refs
BiModem Erik Labs 1989 Bi-directional transfers.
BLAST Communications Research Group 1981 Powerful protocol originating on the Data General Nova minicomputer, and then ported to micros and mainframes. [95]
C-MODEM Lavio Pareschi 1989 Packet lengths from 32 to 4096 bytes, optional (but normally used) streaming mode.
B protocol CompuServe 1981 Offered file transfer as well as a command stream.
JMODEM Richard B. Johnson ? XMODEM derivative with blocks from 512 to 8192 bytes and RLE compression.
HS/Link Samuel H. Smith 1991
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. [96]
LeechModem Sam Brown ? Variations of X and Y that faked failed downloads in order to avoid BBS download quotas.
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.
NMODEM L. B. Neal 1990 Essentially XMODEM-CRC with 2048 byte blocks.
OBEX File Transfer Protocol ? ? A synchronous file transfer protocol in the OBject EXchange (OBEX) Bluetooth profile.
OBEX Push ? ? An asynchronous file transfer protocol in the OBject EXchange (OBEX) Bluetooth profile. [97]
Punter Steve Punter ? Suite of similar-but-different XMODEM-like protocols for various Commodore machines.
SEAlink Thom Henderson 1986 A MODEM7/XMODEM-compatible protocol with sliding window support developed to avoid propagation delays in satellite transmissions and packet networks. [98][99][100]
SMODEM Arisoft ?
TMODEM Mike Bryeans ?
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. [101]
MODEM7 Mark M. Zeigler, James K. Mills 1980 Slight extension of XMODEM to add filename support and batch transfers. [102]
XMODEM Ward Christensen 1977 Template:Good Very simple protocol that saw widespread use and provided the pattern for many following protocols. [103]
WXMODEM Peter Boswell 1986 Template:Good Version of XMODEM with sliding windows for higher performance. [104][105]
YMODEM Chuck Forsberg 1985 Template:Good Series of optional expansions on XMODEM for higher performance. [104]
ZMax Mike Bryeans Template:Sort Modifications to ZMODEM to allow packets up to 32 kB in length.
ZMODEM Chuck Forsberg 1986 Template:Good 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. [104]

Features

Protocol Data block size
(bytes)Script error: No such module "Check for unknown parameters".
Data
compression
Error detection Transfer
resuming
Bidirectional Sliding window Refs
BiModem Yes
BLAST 84–1024+ RLE CRC Yes Yes Yes [106]
C-MODEM 32–4096 CRC Yes
B protocol 128–2048 CRC32 / CRC16 / 8-bit checksum Yes Yes
JMODEM 64–8192 RLE
HS/Link CRC32 Yes Yes
Kermit ≤9024 (negotiated) RLE (run length encoding, negotiated) Checksum or CRC16 (negotiated) Yes (binary files only, negotiated) No Over full-duplex only (negotiated) [107]
LeechModem
Lynx RLE CRC32 Yes
NMODEM 2048
OBject EXchange
Punter
SEAlink Yes Yes
SMODEM Yes
Tmodem No
UUCP "g" ≤4096 No No [108][109]
MODEM7 128 No Checksum Stop-and-wait ARQ
XMODEM 128 No Checksum Stop-and-wait ARQ
WXMODEM ≤512 Yes
YMODEM 1024 No CRC16
ZMax ≤~32,768 CRC32
ZMODEM 256 / 1024 No CRC32 Yes Yes

See also

Template:Columns-list

Notes

Template:Reflist

References

Further reading

  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Template:Cite thesis
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Template:Cite patent
  6. Template:Cite IETF
  7. Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. Template:Cite IETF
  10. Template:Cite IETF
  11. Template:Cite IETF
  12. Template:Cite magazine
  13. Template:Cite IETF
  14. Script error: No such module "citation/CS1".
  15. a b c Script error: No such module "citation/CS1".
  16. a b Script error: No such module "citation/CS1".
  17. Script error: No such module "citation/CS1".
  18. Template:Cite patent
  19. a b c Template:Cite IETF
  20. a b c Template:Cite IETF
  21. a b Script error: No such module "citation/CS1".
  22. Script error: No such module "citation/CS1".
  23. Script error: No such module "citation/CS1".
  24. Template:Cite IETF
  25. a b Script error: No such module "citation/CS1".
  26. a b Script error: No such module "citation/CS1".
  27. Lottor (1984), pp. 1, 13
  28. Template:Cite mailing listTemplate:Dead link
  29. Script error: No such module "citation/CS1".
  30. Script error: No such module "citation/CS1".
  31. Template:Cite IETF
  32. Script error: No such module "citation/CS1".
  33. Script error: No such module "citation/CS1".
  34. a b Template:GitHub
  35. a b Script error: No such module "citation/CS1".
  36. a b Script error: No such module "citation/CS1".
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".
  39. Script error: No such module "citation/CS1".
  40. Script error: No such module "citation/CS1".
  41. a b Script error: No such module "citation/CS1".
  42. a b Script error: No such module "citation/CS1".
  43. Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".
  45. Script error: No such module "citation/CS1".
  46. Script error: No such module "citation/CS1".
  47. Template:Cite IETF
  48. Script error: No such module "citation/CS1".
  49. Script error: No such module "Citation/CS1".
  50. Script error: No such module "citation/CS1".
  51. Script error: No such module "citation/CS1".
  52. Script error: No such module "citation/CS1".
  53. Template:Cite IETF
  54. Script error: No such module "citation/CS1".
  55. Template:Cite IETF
  56. Template:Cite IETF
  57. Template:Cite IETF
  58. Template:Cite IETF
  59. Template:Cite IETF
  60. Script error: No such module "citation/CS1".
  61. Script error: No such module "citation/CS1".
  62. Script error: No such module "citation/CS1".
  63. Script error: No such module "citation/CS1".
  64. Template:Cite IETF
  65. Script error: No such module "citation/CS1".
  66. a b Script error: No such module "citation/CS1".
  67. Template:Cite IETF
  68. Script error: No such module "citation/CS1".
  69. a b Script error: No such module "citation/CS1".
  70. a b Template:Cite IETF
  71. Script error: No such module "citation/CS1".
  72. Template:GitHub
  73. Script error: No such module "citation/CS1".
  74. Template:Cite IETF
  75. Script error: No such module "citation/CS1".
  76. Lottor (1984), p. 10
  77. Script error: No such module "citation/CS1".
  78. Script error: No such module "citation/CS1".
  79. Script error: No such module "citation/CS1".
  80. Script error: No such module "citation/CS1".
  81. Template:Cite IETF
  82. Script error: No such module "citation/CS1".
  83. a b c Script error: No such module "citation/CS1".
  84. Script error: No such module "citation/CS1".
  85. Template:Cite thesis
  86. Script error: No such module "citation/CS1".
  87. Script error: No such module "citation/CS1".
  88. Script error: No such module "citation/CS1".
  89. Script error: No such module "Citation/CS1".Template:Cbignore
  90. Script error: No such module "citation/CS1".
  91. Template:GitHub
  92. a b c d e f g h i j k l m n o p q r s t u v w x y z Script error: No such module "citation/CS1".
  93. Script error: No such module "citation/CS1".
  94. Script error: No such module "citation/CS1".
  95. Script error: No such module "citation/CS1".
  96. da Cruz (1987) p. 3
  97. Script error: No such module "citation/CS1".
  98. Template:GitHub
  99. Script error: No such module "citation/CS1".
  100. Script error: No such module "citation/CS1".
  101. Script error: No such module "citation/CS1".
  102. Template:Cite magazine
  103. Glass (1988) p. 87
  104. a b c Glass (1988) p. 89
  105. Script error: No such module "citation/CS1".
  106. Script error: No such module "citation/CS1".
  107. da Cruz (1987) pp. 234, 253, 307
  108. Script error: No such module "citation/CS1".
  109. Script error: No such module "citation/CS1".