SCTP ( englanniksi Stream Control Transmission Protocol - "lähetysprotokolla vuon ohjauksella") on siirtokerroksen protokolla tietokoneverkoissa, joka ilmestyi vuonna 2000 IETF :ssä . RFC 4960 kuvaa tätä protokollaa, ja RFC 3286 tarjoaa siihen teknisen johdannon.
Kuten mikä tahansa muu kuljetuskerroksen protokolla, SCTP toimii samalla tavalla kuin TCP tai UDP [1] . Uudempana protokollana SCTP:ssä on useita innovaatioita, kuten monisäie, suojaus DDoS-hyökkäyksiltä, synkroninen yhteys kahden isännän välillä kahden tai useamman itsenäisen fyysisen kanavan kautta (multi-homing).
Uuden yhteyden luominen TCP- ja SCTP-protokollassa tapahtuu pakettien kuittausmekanismilla (kättely). TCP-protokollassa tätä menettelyä kutsutaan kolmisuuntaiseksi kättelyksi. Asiakas lähettää SYN-paketin (lyhenne Synchronize). Palvelin vastaa SYN-ACK-paketilla (Synchronize-Acknowledge). Asiakas kuittaa SYN-ACK-paketin vastaanoton ACK-paketilla. Tämä päättää yhteydenmuodostuksen.
TCP:ssä on mahdollinen haavoittuvuus, jossa hyökkääjä voi lähettää useita SYN-paketteja palvelimelle määrittämällä väärennettyjä lähde-IP-osoitteita. Vastaanotettuaan SYN-paketin palvelin varaa osan resursseistaan uuden yhteyden muodostamiseksi. Monien SYN-pakettien käsittely vaatii ennemmin tai myöhemmin kaikki palvelimen resurssit ja tekee uusien pyyntöjen käsittelyn mahdottomaksi. Tämän tyyppistä hyökkäystä kutsutaan " SYN-tulvaksi " (SYN-tulva).
SCTP-protokolla on suojattu tällaisilta hyökkäyksiltä nelisuuntaisen kättelymekanismin ja tunnuksen (evästeen) avulla. SCTP:ssä asiakas aloittaa yhteydenmuodostuksen lähettämällä INIT-paketin. Vastauksena palvelin lähettää INIT-ACK-paketin, joka sisältää tunnuksen (ainutlaatuinen avain, joka tunnistaa uuden yhteyden). Asiakas vastaa sitten lähettämällä COOKIE-ECHO-paketin, joka sisältää palvelimelta vastaanotetun tunnuksen. Vasta sen jälkeen palvelin allokoi resurssinsa uudelle yhteydelle ja vahvistaa tämän lähettämällä asiakkaalle COOKIE-ACK-paketin.
Tiedonsiirtoviiveen ongelman ratkaisemiseksi suoritettaessa nelisuuntaista kättelymenettelyä SCTP-protokollassa on sallittua sisällyttää dataa COOKIE-ECHO- ja COOKIE-ACK-paketteihin.
Katsotaanpa eroja SCTP-socketin sulkemisproseduurin ja TCP:n puolisulkumenettelyn välillä.
TCP-protokollassa yhteyden osittaisen sulkemisen tilanne on mahdollinen, kun yksi solmu on lopettanut tiedonsiirron (lähettämällä FIN-paketin), mutta jatkaa tiedon vastaanottamista tällä yhteydellä. Toinen solmu voi jatkaa tiedon lähettämistä, kunnes se katkaisee yhteyden omalta puoleltaan. Sovellukset käyttävät osittaista sulkemistilaa harvoin, joten SCTP-protokollan kehittäjät pitivät tarpeellisena korvata se viestisarjalla olemassa olevan yhteyden katkaisemiseksi. Kun solmu sulkee pistorasian (lähettää SHUTDOWN-viestin), molempien vertaiskäyttäjien on lopetettava datan lähettäminen sallien vain pakettien vaihdon, jotka kuittaavat aiemmin lähetetyn datan vastaanottamisen.
TCP hallitsee tavusekvenssiä : lähettävän sovelluksen lähettämien tietojen tulee saapua vastaanottavaan sovellukseen täsmälleen samassa järjestyksessä (kun taas IP-protokolla pystyy kääntämään pakettien järjestyksen; lisäksi puuttuvat paketit lähetetään uudelleen ja saapuvat yleensä vastaanottajalle epäjärjestyksessä; tiedot puskuroidaan näiden ilmiöiden torjumiseksi). SCTP voi siirtää dataa kahden pisteen ( solmun ) välillä samanaikaisesti useiden viestivirtojen kautta . Toisin kuin TCP , SCTP käsittelee kokonaisia viestejä (säilytä viestin raja ) , ei tavallisia tietotavuja . Tällä tavalla SCTP on samanlainen kuin UDP. Jos siis lähettäjä lähettää palvelimelle ensimmäisessä vaiheessa 100 tavua sisältävän viestin , jota seuraa vielä 50 tavua, niin ensimmäisen vaiheen vastaanottaja saa täsmälleen ensimmäisen viestin ensimmäiset 100 tavua ja vasta sitten 50 tavua toinen lukutoiminto socketista .
Termi "multithreading" (eng. multi-streaming ) viittaa SCTP:n kykyyn lähettää rinnakkain useiden itsenäisten viestivirtojen kautta . Siirrämme esimerkiksi useita kuvia HTTP- sovelluksen ( esimerkiksi selaimen ) kautta. Voit käyttää tähän joukkoa useita TCP -yhteyksiä, mutta SCTP-yhteys (eng. SCTP-assosiaatio ), joka hallitsee useita viestivirtoja tähän tarkoitukseen, on myös hyväksyttävä. Virrat ovat yksisuuntaisia, eli ne siirtävät tietoa vain yhteen suuntaan ( yllä oleva kuva on epätarkka ).
TCP saavuttaa oikean tavujärjestyksen virrassa antamalla abstraktisti järjestysnumeron jokaiselle lähetetylle yksikölle ja järjestämällä vastaanotetut tavut käyttämällä määritettyjä järjestysnumeroita niiden saapuessa. Toisaalta SCTP antaa eri järjestysnumerot tietyssä virrassa lähetetyille viesteille . Tämä mahdollistaa viestien itsenäisen järjestyksen eri säikeissä. Joka tapauksessa monisäikeisyys on vaihtoehto SCTP:ssä. Käyttäjäsovelluksen toiveiden mukaan viestejä voidaan käsitellä ei lähetysjärjestyksessä, vaan saapumisjärjestyksessä.
SCTP:n käytön etuja ovat:
Osa eduista johtuu siitä, että SCTP:n alkuperäiset kehittäjät suunnittelivat protokollan siirtämään puhelua ( SS7 ) IP :n yli .
SCTP on suunniteltu sisältämään joitakin turvallisuutta parantavia ominaisuuksia, kuten "4x handshake" (verrattuna TCP:n "3x handshake") SYN-tulvahyökkäysten estämiseen ja suuret evästeet yhdistysten todentamiseen.
Luotettavuus on ollut yksi SCTP-protokollan turvallisuussuunnittelun avaintekijöistä. Multi-homing mahdollistaa yhteyden pysymisen auki, vaikka jotkin käytössä olevista reiteistä ja liitännöistä eivät ole käytettävissä. Tämä on erityisen tärkeää SIGTRANille , joka käyttää SCTP :tä SS7 -protokollaviestien ja -palveluiden kuljettamiseen IP-verkon yli, mikä vaatii vahvaa joustavuutta linkkien katkosten aikana televiestintäpalvelujen ylläpitämiseksi, jopa vakavien verkkohäiriöiden edessä.
Salaus ei ole osa SCTP:n alkuperäistä suunnittelua.
Joissakin tapauksissa SCTP on hyvä ehdokas TCP/IP - Syynä tähän on se, että jotkin käyttöjärjestelmät ovat hajautettuja tukemaan SCTP-protokollaa, mutta koska se on vähän tunnettu (verrattuna TCP:hen tai UDP:hen), järjestelmänvalvojat unohtavat joskus määrittää tunkeutumisen havaitsemisen palomuurissa , mikä mahdollistaa skannaa liikennettä.
Parametri | UDP | TCP | SCTP |
---|---|---|---|
Yhteyden muodostaminen | Ei | Joo | Joo |
Luotettava lähetys | Ei | Joo | Joo |
Viestien rajojen säilyttäminen | Joo | Ei | Joo |
järjestyksessä toimitus | Ei | Joo | Joo |
Tilaamaton toimitus | Joo | Ei | Joo |
Tietojen tarkistussummat | Joo | Joo | Joo |
Tarkistussumman koko (bittiä) | 16 | 16 | 32 |
Polku MTU | Ei | Joo | Joo |
Kertymän hallinta | Ei | Joo | Joo |
Monisäikeinen | Ei | Ei | Joo |
Tuki useille käyttöliittymille | Ei | Ei | Joo |
Joukko lankoja | Ei | Joo | Joo |
Sanomakehyksiä muodostettaessa viestirajat säilytetään siinä muodossa, jossa se välitetään pistokkeeseen; tämä tarkoittaa, että jos asiakas lähettää palvelimelle 100 tavua ja sen jälkeen 50 tavua, palvelin ottaa 100 tavua ja 50 tavua kahtena lukuna. UDP-protokolla toimii täsmälleen samalla tavalla; tämä on viestisuuntautuneiden protokollien ominaisuus.
Sitä vastoin TCP-protokolla käsittelee strukturoimatonta tavuvirtaa. Jos sanoman kehystysproseduuria ei käytetä, verkkosolmu voi vastaanottaa dataa, joka on suurempi tai pienempi kuin lähetetty data. Tämä toimintatapa edellyttää, että TCP:n päällä toimivissa viestisuuntautuneissa protokollissa sovelluskerrokselle tarjotaan oma datapuskuri ja suoritetaan sanoman kehystys (mahdollisesti monimutkainen tehtävä).
SCTP-protokolla tarjoaa kehystyksen tiedonsiirrolle. Kun solmu kirjoittaa pistorasiaan, sen vertaiskumppanin taataan vastaanottavan samankokoisen tietolohkon.
|
SCTP-pakettien rakenne on yksinkertaisempi kuin TCP-pakettien. Jokainen paketti koostuu kahdesta pääosasta:
Ensimmäinen lohko on merkitty vihreällä ja viimeinen N lohkosta (N lohko) on korostettu punaisella.
Jokaisella lohkolla on tyyppitunniste, joka vie yhden tavun. Näin ollen voidaan määrittää enintään 255 erilaista lohkotyyppiä. RFC 4960 määrittelee luettelon lohkotyypeistä, joissa on tällä hetkellä määritettynä yhteensä 15 tyyppiä. Loput lohkosta koostuu 2-tavuisesta kentästä (tähän kenttään mahtuu enintään 65535 tavua) ja itse asiassa tiedoista. Jos lohkon koko ei ole 4 tavun kerrannainen, se täytetään nollalla 4 tavun kerrannaiseksi.
DATA-lohkojen uudelleenlähetys voi johtua (a) uudelleenlähetysajastimen määrittämästä aikakatkaisusta tai (b) SACK:n vastaanotosta, joka osoittaa, että kohde ei ole vastaanottanut DATA-lohkoa. Ruuhkautumisen mahdollisuuden vähentämiseksi DATA-lohkojen uudelleenlähetystä on rajoitettu. Uudelleenyrityksen aikakatkaisun (RTO) arvo asetetaan arvioidun edestakaisen matka-ajan perusteella, ja se pienenee eksponentiaalisesti sanoman katoamisnopeuden kasvaessa. Aktiivisissa yhteyksissä lähes jatkuvaan DATA-liikenteeseen syy uudelleenyritykseen on todennäköisesti SACK-viestit aikakatkaisun sijaan. Tarpeettomien uudelleenyritysten todennäköisyyden vähentämiseksi käytetään 4 SACK -sääntöä, jonka mukaan uudelleenlähetys tapahtuu vain neljännellä SACK:illa, mikä osoittaa, että tietolohko ohitettiin. Tämä estää uudelleenlähetykset, jotka johtuvat epäjärjestystä toimituksesta.
Laskuria ylläpidetään uudelleenyritysten määrästä tiettyyn kohdeosoitteeseen ilman onnistuneen toimituksen vahvistusta. Kun tämän laskurin arvo saavuttaa määritellyn kynnyksen (konfiguraatioparametri), osoite julistetaan ei-aktiiviseksi ja SCTP-protokolla alkaa käyttää toista osoitetta DATA-lohkojen lähettämiseen. Lisäksi kaikkiin käyttämättömiin (valinnaisiin) osoitteisiin lähetetään säännöllisin väliajoin erityisiä Heartbeat-lohkoja, ja laskuria ylläpidetään lähetettyjen Heartbeat-lohkojen lukumäärästä palauttamatta vastaavaa Heartbeat Ack -kuittausta. Kun laskurin arvo saavuttaa tietyn kynnyksen (konfiguraatioparametri), vastaava osoite julistetaan ei-aktiiviseksi. Sykelohkot lähetetään ei-aktiivisiin osoitteisiin, kunnes vastaanotetaan kuittausviesti, joka osoittaa, että osoite on palautettu toimintaan. Heartbeat-lohkojen taajuus määräytyy RTO-arvon ja lisäviiveen perusteella, mikä mahdollistaa Heartbeat-lohkojen lähettämisen häiritsemättä käyttäjäliikennettä.
Kaikille vastaanottajaosoitteille ylläpidetään yhteistä toistojen tai Heartbeat-lohkojen laskuria, tiedot siirretään etäpisteeseen saamatta siltä vastaavaa vahvistusta (Ack). Kun laskurin arvo saavuttaa määritetyn kynnyksen (määritysparametrin), päätepiste julistetaan saavuttamattomaksi ja SCTP-yhteys suljetaan.
TCP-protokolla tarjoaa peruskeinot tiedon siirtämiseen Internetin kautta luotettavaa polkua pitkin. TCP asettaa kuitenkin joitain rajoituksia tiedonsiirrolle:
Kaikki nämä rajoitukset heikentävät IP - puhelinverkkojen suorituskykyä .
Protokolla kehitettiin osana IETF:ssä [2] erityisesti luodun SIGTRAN-ryhmän työtä IP-verkoissa käytettävien SS-7- pinon protokollien ja sovellusten toteuttamiseksi luotettavan ja nopean tiedonsiirron tarpeen vuoksi. Tämä on nimenomaisesti mainittu RFC 4960 :n luvussa 1.1 Motivaatio :
...
PSTN-signaloinnin siirto IP-verkon yli on sovellus, jolle kaikki nämä TCP:n rajoitukset ovat tärkeitä. Vaikka tämä sovellus on suoraan motivoitunut SCTP:n kehittämiseen, muut sovellukset saattavat löytää SCTP:n omiin vaatimuksiinsa... ... PSTN
- signalointi IP-verkon yli on sovellus, jolle kaikki TCP-rajoitukset koskevat suoraan. Vaikka tämä motivoi suoraan SCTP:n kehittämistä, muut sovellukset voivat myös löytää SCTP:n sopivaksi heidän vaatimuksiinsa... RFC 4960
Protokollat | TCAP | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
V5.2 | MTP3 | MTP3 | ON YLHÄÄLLÄ | SCCP | DSS1 | TCAP | ||||||||||||||
SIGTRAN | V5UA | M2UA | M2PA | M3UA | IUA | SUA | ||||||||||||||
tietokoneverkko _ | SCTP | |||||||||||||||||||
IP |
On olemassa viitetoteutus FreeBSD:lle, Mac OS X:lle, Microsoft Windowsille ja Linuxille [3] .
SCTP-protokolla on toteutettu seuraavissa käyttöjärjestelmissä:
Käyttöönotto kolmannen osapuolen ohjaimien kautta:
Erilliset käyttäjäkirjastot:
Sovellukset:
TCP /IP-perusprotokollat OSI -mallin kerroksittain | |
---|---|
Fyysinen | |
kanavoitu | |
verkkoon | |
Kuljetus | |
istunto | |
Edustus | |
Sovellettu | |
Muuta sovellettu | |
Luettelo TCP- ja UDP-porteista |