TCP vs SCTP Protocols
Both TCP (Transmission Control Protocol) and SCTP (Stream Control Transmission Protocol) lie in the transport layer and provide transport functions mainly in internet applications. TCP provides reliable data transfer with strict order of delivery of the packets but some applications need reliable transfer but not 100% sequence of delivery of packets. In these cases TCP may cause unnecessary delay in the second option where reliability is important but not 100% sequential delivery.
In transportation of packets there are two major constrains one is reliability and other one is latency. Reliability is guaranteed delivery of the packet and latency is timely delivering the packet. Both cannot be achieved to peak at the same time but could be optimised.
SCTP is developed basically to transport PSTN signalling over IP networks. (SIGTRAN). But these days other applications also find that SCTP is a good match for their requirements.
Defined in RFC 793
TCP is connection oriented end to end reliable protocol to support guaranteed data transmission. From the connection establishment itself TCP ensures the reliability. Some of the main features of TCP are 3 way handshake (SYN, SYN-ACK, ACK), Error Detection, Slow Start, Flow Control, Congestion Control.
TCP is a reliable transport mechanism so it will be used where the packet delivery is a must even in congestions. Typical example for TCP applications and port numbers are FTP data (20), FTP Control (21) , SSH (222) ,Telnet (23) , Mail (25), DNS (53), HTTP(80),POP3(110),SNMP(161) and HTTPS(443). These are well known TCP applications.
Defined in RFC4960
SCTP (Stream Control Transmission Protocol) is an IP transport protocol such as TCP and UDP. SCTP is a unicast protocol and supported end to end data delivery within exactly two endpoints. But endpoints may have more than one IP addresses.
SCTP is a full duplex transmission protocol with features like retransmitting, flow control and sequence maintenance.
On top of TCP, SCTP has more features and some are listed below
- SCTP Multi-Streaming Feature
SCTP allows data to be divided into multiple streams and each stream has its own sequence of delivery. Consider the case of Telephony signalling, it’s necessary to maintain the sequence of packets that affects the same session or resource. (Ex: Same call or same trunk). So stream based sequence tracking is sufficiently enough and will result better performance than one full streaming.
- SCTP multi homing
This feature supports for single SCTP endpoint to have multiple IP addresses. The main reason for this is to maintain the availability of the endpoint via several redundant routing paths.
- Path selection
A counter is maintained to keep track of the unsuccessful transmission acknowledgements to a particular destination. There is a threshold defined and if that exceeds the destination address is declared as inactive and SCTP starts to send to alternative address.
(1) TCP and SCTP both support reliable transport services.
(2) TCP supports single stream of data delivery where as SCTP supports multi streams of data delivery.
(3) TCP supports single TCP endpoint to have one IP address where as SCTP supports single SCTP endpoint can have multiple IP addresses for mainly redundancy purposes.
(4) Rather TCP, SCTP is more secure.
(5) SCTP initiation and shut down processes are different from TCP.