Sequenced Packet Exchange

AjustarCompartirImprimirCitar

SPX (from English Sequenced Packet Exchange - Sequenced Packet Exchange ) is an old Novell network protocol belonging to the NetWare operating system used to control the delivery of data over a local area network (and to a lesser extent over a WAN) using the IPX protocol. Together with the IPX protocol (also from Novell) it forms the IPX/SPX protocol stack which is similar to TCP/IP.


History

Arose in the 80s in response to the demand for applications with connection-oriented services, and was designed based on a protocol created years ago by Xerox called SPP (Sequenced Packet Protocol - Sequenced Packet Protocol).

In 1991, an improved version called SPX II was created with the aim of solving various problems that arose with the previous version and adding new features such as the use of larger packet sizes or the implementation of the sliding window.

Although not widely used today, it has support for various platforms (NetWare, DOS, OS/2, Linux, Windows).

Technical data

Scheme of a SPX protocol package.
Bit 0 Bit 8 Bit 16
Verification amount IPX head

(30 bytes)

Go!
Transport control Type of package
Target network
Target host
Destination Socket
Red origin
Host origin
Socket origin
Type of transmission control data flow SPX head

(12 bytes)

ID connection origin
ID connection destination
Sequence number
Number of recognition
Number of assignments
0-546 data bytes Information

It is a transport layer protocol oriented to connection-oriented communications that is responsible for verifying that a message sent through a network arrives intact at its destination. To do this, it uses the IPX protocol as a messenger (which by itself lacks reliability during the transport of packets) allowing it to establish and maintain connections in addition to sending data.

How it works

The protocol is responsible for guaranteeing the integrity of the packets sent and the confirmation packets received. It also controls the flow of data, regulating the speed at which packets are sent and received and reducing the risk of corruption.

To control the sending of the packets, SPX waits for an acknowledgment message, and if it is not received, it retransmits the packet a certain number of times. If after that number of times, a response with the confirmation message is still not received, the protocol assumes that there has been a connection failure, and closes the connection. But this control is not carried out on all the packets that are sent or received, rather a kind of confirmation list is kept in a window. When an error is discovered in a packet that is sent or received within that window, all packets sent or received during that time are marked as bad and retransmitted.

Structure

The packet header is made up of 12 bytes connected over a 30-byte IPX header. Those 12 bytes contain all the structures that SPX uses to establish and maintain connections and to ensure the sequential sending of data.

Disadvantages

The following drawbacks, coupled with the poor performance of the protocol, led to the creation of the SPX II protocol:

  • Although SPX was designed to ensure data transfer reliability across a network, it has poor performance compared to IPX.
  • It is inherently more complex than IPX because it has to ensure shipments and maintenance of a connection.
  • Do not implement the slide window (submit another data package before receiving a confirmation package from the previous package sent)
  • It does not provide an orderly connection release mechanism, so you can lose data if there is a connection failure.
  • It can cause a network congestion for the above reasons.

Contenido relacionado

EMule

eMule is an exchange program of files with a P2P system using the eDonkey 2000 protocol and the Kad network, published as free software for Microsoft Windows...

RPG (programming language)

The RPG programming language was originally developed by IBM to generate business reports. Its acronym stands for Report Program Generator. The first version...

Curry (programming language)

Curry is an experimental functional logic programming language, based on the Haskell language, which combines elements of functional programming and logic...
Más resultados...
Tamaño del texto: