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.
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.
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]
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.
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.
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 | Public domain | Very simple protocol that saw widespread use and provided the pattern for many following protocols. | [103] |
WXMODEM | Peter Boswell | 1986 | Public domain | Version of XMODEM with sliding windows for higher performance. | [104] [105] |
YMODEM | Chuck Forsberg | 1985 | Public domain | Series of optional expansions on XMODEM for higher performance. | [104] |
ZMax | Mike Bryeans | c. 1991 | Modifications to ZMODEM to allow packets up to 32 kB in length. | ||
ZMODEM | Chuck Forsberg | 1986 | 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. | [104] |
Protocol | Data block size (bytes) | 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 |
I designed and implemented the original SFTP protocol for SSH 2.0 back around 1997. Sami Lehtinen did further development on it.It was originally a proprietary protocol at SSH Communications Security (www.ssh.com), though source code was publicly available. It took a while [ sic ] before we wrote the draft and brought it to the IETF for standardization (seems to have been January 2001).[ permanent dead link ]
A simple, PUP-oriented protocol, designed for file transmission from user programs to servers (especially printing servers). The server must acknowledge each packet before the next is sent. This protocol admits to compact implementation in user programs, offset by some redunction in bandwidth.
HTTP is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser.
The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the set of communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), and the Internet Protocol (IP). Early versions of this networking model were known as the Department of Defense (DoD) model because the research and development were funded by the United States Department of Defense through DARPA.
The Secure Shell Protocol is a cryptographic network protocol for operating network services securely over an unsecured network. Its most notable applications are remote login and command-line execution.
The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in which it complemented the Internet Protocol (IP). Therefore, the entire suite is commonly referred to as TCP/IP. TCP provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network. Major internet applications such as the World Wide Web, email, remote administration, and file transfer rely on TCP, which is part of the transport layer of the TCP/IP suite. SSL/TLS often runs on top of TCP.
Telnet is a client/server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet. It is a protocol for bidirectional 8-bit communications. Its main goal was to connect terminal devices and terminal-oriented processes.
In computer networking, the User Datagram Protocol (UDP) is one of the core communication protocols of the Internet protocol suite used to send messages to other hosts on an Internet Protocol (IP) network. Within an IP network, UDP does not require prior communication to set up communication channels or data paths.
A multicast address is a logical identifier for a group of hosts in a computer network that are available to process datagrams or frames intended to be multicast for a designated network service. Multicast addressing can be used in the link layer, such as Ethernet multicast, and at the internet layer for Internet Protocol Version 4 (IPv4) or Version 6 (IPv6) multicast.
The File Transfer Protocol (FTP) is a standard communication protocol used for the transfer of computer files from a server to a client on a computer network. FTP is built on a client–server model architecture using separate control and data connections between the client and the server. FTP users may authenticate themselves with a plain-text sign-in protocol, normally in the form of a username and password, but can connect anonymously if the server is configured to allow it. For secure transmission that protects the username and password, and encrypts the content, FTP is often secured with SSL/TLS (FTPS) or replaced with SSH File Transfer Protocol (SFTP).
An ephemeral port is a communications endpoint (port) of a transport layer protocol of the Internet protocol suite that is used for only a short period of time for the duration of a communication session. Such short-lived ports are allocated automatically within a predefined range of port numbers by the IP stack software of a computer operating system. The Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), and the Stream Control Transmission Protocol (SCTP) typically use an ephemeral port for the client-end of a client–server communication. At the server end of the communication session, ephemeral ports may also be used for continuation of communications with a client that initially connected to one of the services listening with a well-known port. For example, the Trivial File Transfer Protocol (TFTP) and Remote Procedure Call (RPC) applications can behave in this manner.
SOCKS is an Internet protocol that exchanges network packets between a client and server through a proxy server. SOCKS5 optionally provides authentication so only authorized users may access a server. Practically, a SOCKS server proxies TCP connections to an arbitrary IP address, and provides a means for UDP packets to be forwarded. A SOCKS server accepts incoming client connection on TCP port 1080, as defined in RFC 1928.
In computing, the SSH File Transfer Protocol, also known as Secure File Transfer Protocol (SFTP), is a network protocol that provides file access, file transfer, and file management over any reliable data stream. It was designed by the Internet Engineering Task Force (IETF) as an extension of the Secure Shell protocol (SSH) version 2.0 to provide secure file transfer capabilities, and is seen as a replacement of File Transfer Protocol (FTP) due to superior security. The IETF Internet Draft states that, even though this protocol is described in the context of the SSH-2 protocol, it could be used in a number of different applications, such as secure file transfer over Transport Layer Security (TLS) and transfer of management information in VPN applications.
A Service record is a specification of data in the Domain Name System defining the location, i.e., the hostname and port number, of servers for specified services. It is defined in RFC 2782, and its type code is 33. Some Internet protocols such as the Session Initiation Protocol (SIP) and the Extensible Messaging and Presence Protocol (XMPP) often require SRV support by network elements.
FTPS is an extension to the commonly used File Transfer Protocol (FTP) that adds support for the Transport Layer Security (TLS) and, formerly, the Secure Sockets Layer cryptographic protocols.
In computing, syslog is a standard for message logging. It allows separation of the software that generates messages, the system that stores them, and the software that reports and analyzes them. Each message is labeled with a facility code, indicating the type of system generating the message, and is assigned a severity level.
In computer networking, a port or port number is a number assigned to uniquely identify a connection endpoint and to direct data to a specific service. At the software level, within an operating system, a port is a logical construct that identifies a specific process or a type of network service. A port at the software level is identified for each transport protocol and address combination by the port number assigned to it. The most common transport protocols that use port numbers are the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP); those port numbers are 16-bit unsigned numbers.
The Stream Control Transmission Protocol (SCTP) is a computer networking communications protocol in the transport layer of the Internet protocol suite. Originally intended for Signaling System 7 (SS7) message transport in telecommunication, the protocol provides the message-oriented feature of the User Datagram Protocol (UDP), while ensuring reliable, in-sequence transport of messages with congestion control like the Transmission Control Protocol (TCP). Unlike UDP and TCP, the protocol supports multihoming and redundant paths to increase resilience and reliability.
RDMA over Converged Ethernet (RoCE) is a network protocol which allows remote direct memory access (RDMA) over an Ethernet network. There are multiple RoCE versions. RoCE v1 is an Ethernet link layer protocol and hence allows communication between any two hosts in the same Ethernet broadcast domain. RoCE v2 is an internet layer protocol which means that RoCE v2 packets can be routed. Although the RoCE protocol benefits from the characteristics of a converged Ethernet network, the protocol can also be used on a traditional or non-converged Ethernet network.
QUIC is a general-purpose transport layer network protocol initially designed by Jim Roskind at Google. It was first implemented and deployed in 2012 and was publicly announced in 2013 as experimentation broadened. It was also described at an IETF meeting. The Chrome web browser, Microsoft Edge, Firefox, and Safari all support it. In Chrome, QUIC is used by more than half of all connections to Google's servers.
The Fast Adaptive and Secure Protocol (FASP) is a proprietary data transfer protocol. FASP is a network-optimized network protocol created by Michelle C. Munson and Serban Simu, productized by Aspera, and now owned by IBM subsequent to its acquisition of Aspera. The associated client/server software packages are also commonly called Aspera. The technology is patented under US Patent #8085781, Bulk Data Transfer, #20090063698, Method and system for aggregate bandwidth control. and others.