SCTP nécessite plus de design au sein de l'application pour obtenir le meilleur usage. Il y a plus d'options que le protocole TCP, les Sockets-tels que l'API est venu plus tard, et il est jeune. Cependant, je pense que la plupart des gens qui prennent le temps de comprendre (et qui fait connaître les défauts de TCP) l'apprécier-c'est un protocole qui s'appuie sur notre ~30 ans de connaissances de TCP et UDP.
Un des aspects qui nécessite une certaine réflexion, c'est que des cours d'eau. Les cours d'eau fournissent (d'habitude, je pense que vous pouvez le désactiver) une garantie à l'intérieur (un peu comme une connexion TCP), mais il peut y avoir plusieurs flux par SCTP connexion. Si les données de votre application peuvent être envoyées sur de multiples flux alors, vous évitez la tête de blocage de l'endroit où le récepteur meurt de faim en raison d'un paquet égaré. Effectivement différentes conversations sur la même connexion sans impacter les uns des autres.
Un autre ajout très utile, c'est que du multi-homing de soutien-une liaison peut être à travers de multiples interfaces sur les deux extrémités et il se débrouille avec les échecs. Vous pouvez émuler ce en TCP, mais au niveau de la couche application.
Lien heartbeating, qui est la première chose que toute application utilisant le protocole TCP pour les non-transitoire connexions met en œuvre, est-il gratuit.
Mon résumé de la SCTP, c'est qu'il ne fait rien, tu ne pouvais pas faire d'une autre manière (en TCP ou UDP) avec un important soutien de l'application. La chose, c'est la possibilité de ne pas avoir à mettre en œuvre ce code (mal) de vous-même.
Pour info, SCTP est mandaté comme pris en charge pour le Diamètre (cf RAYON de next gen). voir la RFC 3588
Diamètre des clients DOIT prendre en charge le protocole TCP ou SCTP, tandis que les agents et les
les serveurs DOIVENT soutenir à la fois. Les futures versions de cette spécification PEUT
mandat que les clients prennent en charge SCTP.