PeSIT (Protocol d’Echanges pour un Systeme Interbancaire de Telecompensation) is a file transfer protocol developed in 1986 by the French Interbank Teleclearing System Economic Interest Grouping (GSIT). Designed by working groups of file transfer experts from large computing centers, it offers basic file transfer functionalities and advanced features for managing mass file transfers and organizing industrial-scale file transfer services. PeSIT connections occur between two named and identifiable partners. The initiator of a connection, acting as the PeSIT requester, negotiates with the PeSIT responder for sending or receiving a file, sending a message, or acknowledging a transfer. The negotiation for file transfer does not involve mentioning the file name or its location in the partners' file systems (FS) but rather a virtual file identified by an identifier, "filename," which corresponds to local sets of definitions for accessing and reading a file on the sender's side and creating and writing it on the receiver's side. Each transfer has a unique identification known by both exchange partners. The protocol allows assigning a priority to each transfer, which should be respected by both parties.
Genesis and History File exchanges between computers predated the public opening of the Internet in 1990, with producers offering their proprietary networks, like IBM's SNA or DEC's DECNET, for connecting computers from the same manufacturer. The breakthrough came with public X25 networks in 1976, allowing interconnectivity regardless of equipment origin. The French X25 network operator, Transpac, started in 1978, offering banks a means to accelerate file exchanges between clients and banks (through the rudimentary ETEBAC3 protocol, defined by CFONB in 1984). GSIT, established in 1983, was tasked with organizing exchanges between banks. The first version of the PeSIT protocol linked adherents to the SIT-Interbank Compensation System network in 1992, initially defined for use over X25, X32, PAD, ISO 8802.3, and NETEX, and later extended to TCP/IP and APPN. The latest version E of PeSIT was published in September 1989 (look for at pesit.org) covering various profiles for use within and outside the SIT network for bank-client exchanges, as well as B2B and B2C exchanges. Significant regulatory changes in financial markets were introduced following the Lisbon European Council in 2000 and the euro introduction. The European Payments Council (EPC) was formed in June 2002 to establish the Single Euro Payments Area (SEPA), replacing the SIT network with the STET-CORE system in 2008 and dissolving GSIT in 2011. However, due to its efficient implementations, PeSIT remains widely used today for B2B and B2C exchanges not only in France but across Europe and beyond the EU.
Profiles The latest version E of PeSIT, published in September 1989 (see pesit.org), defines four PeSIT profiles:
PeSIT SIT PeSIT OFF SIT PeSIT OFF SIT Secure ETEBAC5.
PeSIT SIT - designed exclusively for the SIT network and is no longer in use.
PeSIT OFF SIT (PeSIT HORS SIT) - used for exchanges between banks and their clients, has become the most widespread profile for exchanges outside financial transactions and is supported by all products that announce PeSIT protocol support.
PeSIT OFF SIT Secure (PeSIT HORS SIT Secure) - included data security functionalities like DES and RSA encryption or file sealing, but was quickly surpassed.
ETEBAC5, - a derivative of PeSIT OFF SIT Secure with only RSA encryption, was chosen by CFONB as the secure PeSIT OFF SIT protocol for sensitive file exchanges between banks and large companies. Its complexity and limited implementations prior to the arrival of SEPA standards meant it haven't gained popularity.
Principles of Operation The PeSIT protocol functions as an abstract machine where FPDU (File Transfer Protocol Data Unit) messages are exchanged between two homologous PeSIT units: the connection initiator (requester) and the server (responder). These messages contain a protocol header and a variable area with PIs (Parameter Identifiers) featuring protocol parameters or file data. A PeSIT session unfolds in various phases, allowing partners to coordinate the execution of triggered services through a request FPDU (=>) and acknowledged by a response FPDU (<=). Services for disconnecting, interrupting a transfer, and resynchronization can be initiated by either the requester or the responder. The FPDU.ABORT is never acknowledged. The process for each file transfer starts with its negotiation through FPDU.CREATE for sending and FPDU.SELECT for receiving. File names and their locations are determined by local PeSIT services. Local virtual file definitions on each side dictate access to the file and operations on records during reading or writing. File names and their locations are at the discretion of local PeSIT services. Local virtual file definitions on each side determine the way to access the file and the operations that must be performed on records during reading or writing. All necessary operations to prepare for sending and receiving files are coordinated through selection and opening services. Writing and reading services allow positioning within files in case of transfer resumption. File data is sent record by record, with or without flow control and setting of resume points. Sending the FPDU.DTFEND by the sender triggers the end of data transmission service, which precedes the execution of the end of transfer service triggered by the requester through the sending of FPDU.TRANSEND. The parameters of FPDU.TRANSEND allow for the control of the number of records and bytes sent and received. The transfer's end is followed by the file closure service triggered by FPDU.CRF, then the deselection service (FPDU.DESELECT). It is the requester who ends the connection phase by sending FPDU.RELEASE. Each response FPDU carries the diagnostic code of the service execution result.
Connection Phase Connection Establishment Service => FPDU.CONNECT, <= FPDU.ACONNECT or FPDU.RCONNECT Connection Release Service: => FPDU.RELEASE, <= FPDU.ACK(RELEASE) Connection Cut-off Service: => FPDU.ABORT
Selection Phase File Creation Service: => FPDU.CREATE, <= FPDU.ACK(CREATE) File Selection Service: => FPDU.SELECT, <= FPDU.ACK(SELECT) File Deselection Service: => FPDU.DESELECT, <= FPDU.ACK(DESELECT) Message Transfer Service: => FPDU.MSG (FPDU.MSGDM, FPDU.MSGMM, FPDU.MSGFM), <= FPDU.ACK(MSG).
… excerpt ends here. Continue reading the full article.
