Johdanto
Tietokoneverkkojen kehittymisen ja henkilökohtaisten tietokoneiden yleistymisen myötä ihmiset voivat helposti uida Internetissä, käydä verkkoviestintää tai hankkia tarvitsemansa tietoresurssit. Lisäksi ihmiset luottavat yhä enemmän verkkolaskentaan. Useimmat yritykset ovat perustaneet kehittyneitä verkkoja yhdistääkseen työntekijät tietokoneisiinsa ja työasemiinsa. Joskus työssämme tärkeää tietoa saa vain Internetin kautta. Nämä tiedot voivat olla yrityksen yksityisessä verkossa tai Internetissä.
Internet on julkinen verkko, joka yhdistää yliopistot, yritykset, voittoa tavoittelemattomat organisaatiot, yksityishenkilöt ja valtion virastot kaikkialla maailmassa. Laajakaistan kehittymisen myötä nousevat Internet-sovellukset, kuten etäopiskelu, videoneuvottelut ja online-pelit, ovat tulleet yhä suositummiksi ja joskus tarpeellisiksi. Näihin sovelluksiin liittyy point-to-point- tai multipoint-to-multipoint -viestintä, joka eroaa suuresti perinteisestä yksilähetyksestä tai lähetyksestä.
Vuonna 1988 Deering ehdotti IP-monilähetyskonseptia. Siitä lähtien IP-ryhmälähetystekniikka on saanut laajaa huomiota. Multicast on unicast-viestinnän ja yleislähetysviestinnän välissä. Se voi lähettää lähettäjän lähettämiä datapaketteja eri aliverkkoihin hajallaan oleville vastaanottajille.
Multicastin peruskäsite on "ryhmä". Monilähetysryhmä on ryhmä vastaanottajia, jotka haluavat vastaanottaa tietyn tietovirran. Tällä ryhmällä ei ole fyysisiä tai maantieteellisiä rajoja: ryhmän isännät voivat sijaita missä tahansa Internetissä tai yksityisessä verkossa. Jokaista monilähetysryhmän solmua kutsutaan monilähetysryhmän jäseneksi.
Monissa multicast-sovelluksissa voidaan saavuttaa unicast, mutta vastaanottimien lisääntyessä lähetettävien datapakettien määrä kasvaa lineaarisesti. Yhdelle vastaanottimelle on lähetettävä sama datapaketti. Tällä tavalla liikenne kasvaa eksponentiaalisesti, mikä vie myös paljon verkon kaistanleveyttä ja aiheuttaa joskus verkon ruuhkautumista. Mutta monilähetysviestinnän IP-datapaketti lähetetään vain kerran. Reititin lähettää automaattisesti eteenpäin jokaiselle eri verkkosegmentissä sijaitsevalle vastaanottajalle, joka voi olla pienin verkossa lähetettyjen viestikopioiden määrä. Multicast on siis erittäin tarpeellinen.
Monilähetysviestintämallin keskeinen piirre on tarjota epäsuorasti tunnistettu ryhmälähetysryhmä, jossa lähettäjän tai vastaanottajan ei tarvitse tietää toisen osapuolen erityistilannetta. Lähettäjä tarvitsee vain lähettää paketteja monilähetysosoitteeseen ja vastaanottajan tarvitsee vain kertoa verkolle, että se haluaa vastaanottaa tähän osoitteeseen lähetettyjä paketteja.
Käyttäjätietojen lähettämiseksi päätelaitteesta toiseen on ensin määritettävä lähetysreitti. Eri viestintämenetelmillä on erilaisia tapoja määrittää reitti. Nykyään verkossa on pääasiassa seuraavat viestintätavat:
Unicast (unicast: pointtopoint), point-to-point-viestintämenetelmä;
-
Multicast (multicast: pointtOmultipoint), point-to-multipoint -viestintämenetelmä;
Concast (concast: multipointtopoint), point-to-point-viestintämenetelmä;
MultipointtOmultipoint, multipoint-to-multipoint -viestintämenetelmä, monilähetyksen edistäminen;
Lähetys (lähetys: pointtoallpoint), osoita kaikkiin solmuihin viestintätila.
Yleisesti ottaen monilähetyspalveluita vaativilla palveluilla on suuret kaistanleveys- ja reaaliaikavaatimukset, ne sisältävät enemmän käyttäjiä ja vievät enemmän resursseja. Siksi monilähetysreititys on optimoitava. Ryhmälähetysreititysalgoritmi on löytää optimaalinen ryhmälähetyspuu. Ihanteellinen ja tehokas reititysalgoritmi suunnittelee puun, joka kattaa vain monilähetysryhmän jäsenet ja heijastaa seuraavia ominaisuuksia: puu päivitetään dynaamisesti ryhmän jäsenten muutoksilla; minimisolmu on tallennettava Tilatietojen määrä; välttää liikenteen keskittymisen linkkeihin ja solmuihin; optimoi reitityksen kustannusfunktion mukaan.
Verkon monilähetys
IP-monilähetystekniikka (tunnetaan myös nimellä multicast tai multicast) on tekniikka, jonka avulla yksi tai useampi isäntä (multicast-lähde) voi lähettää yhden datan TCP/IP-verkkoteknologian, joka paketoidaan useille isännäille (kerran, samaan aikaan). Multicast, pisteestä monipisteeseen -viestintä, on yksi tehokkaista tavoista säästää verkon kaistanleveyttä. Verkkoääni-/videolähetyssovelluksessa, kun yhden solmun signaali on lähetettävä useisiin solmuihin, olipa kyseessä toistuva point-to-point-viestintä tai lähetys, se tuhlaa verkon kaistanleveyttä vakavasti. Vain monilähetys on paras valinta. Multicast mahdollistaa sen, että yksi tai useampi monilähetyslähde lähettää datapaketteja vain tietylle ryhmälähetysryhmälle, ja vain ryhmälähetysryhmään liittyvät isännät voivat vastaanottaa datapaketteja. Tällä hetkellä IP-monilähetystekniikkaa käytetään laajalti verkkoääni-/videolähetyksissä, AOD/VOD:ssä, verkkovideoneuvotteluissa, multimediaetäopetuksessa, "push"-tekniikassa (kuten pörssikurssit jne.) ja virtuaalitodellisuuspeleissä.
Joillakin sovelluksilla on tällainen vaatimus: joidenkin hajautettujen prosessien on toimittava yhdessä ryhmässä, ja ryhmän prosessit lähettävät yleensä viestejä kaikille muille jäsenille. Eli on olemassa sellainen menetelmä, joka voi lähettää viestejä joillekin selkeästi määritellyille ryhmille. Vaikka näiden ryhmien jäsenmäärä on suuri, se on pieni koko verkoston kokoon verrattuna. Viestin lähettämistä tällaiselle ryhmälle kutsutaan multicastiksi tai lyhennettynä multicastiksi.
1. IP-ryhmälähetysosoite ja ryhmälähetysryhmä
IP-ryhmälähetysviestinnän on riippuvainen IP-ryhmälähetysosoitteesta. IPv4:ssä se on luokan D IP-osoite, joka vaihtelee välillä 224.0.0.0 - 239.255.255.255, ja se on jaettu kolmeen tyyppiin: paikallisen linkin monilähetysosoite, varattu ryhmälähetysosoite ja hallintoviranomaisen monilähetysosoite. Niistä paikallislinkin monilähetysosoitealue on 224.0.0.0~224.0.0.255, joka on varattu reititysprotokollia ja muita tarkoituksia varten. Reititin ei välitä tälle alueelle kuuluvia IP-paketteja; varattu ryhmälähetysosoite on 224.0.1.0~ 238.255.255.255, jota voidaan käyttää globaalissa mittakaavassa (kuten Internetissä) tai verkkoprotokollien avulla; hallintoviranomaisen monilähetysosoite on 239.0.0.0~239.255.255.255, jota voidaan käyttää organisaatiossa. Se on samanlainen kuin yksityinen IP-osoite, eikä sitä voi käyttää Internetissä. Se voi olla rajoittavampi. Lähetysalue.
Kaikki isäntäkoneet, jotka käyttävät samaa IP-ryhmälähetysosoitetta monilähetyspakettien vastaanottamiseen, muodostavat isäntäryhmän, joka tunnetaan myös monilähetysryhmänä. Multicast-ryhmän jäsenyys muuttuu milloin tahansa. Isäntä voi liittyä monilähetysryhmään tai poistua siitä milloin tahansa. Monilähetysryhmän jäsenten määrää ja maantieteellistä sijaintia ei myöskään ole rajoitettu. Isäntä voi myös kuulua useisiin monilähetysryhmiin. . Lisäksi isännät, jotka eivät kuulu tiettyyn ryhmälähetysryhmään, voivat lähettää datapaketteja ryhmälähetysryhmään.
2. Laitteistotuki IP-ryhmälähetysteknologialle
IP-ryhmälähetysviestinnän toteuttamiseksi reitittimien, keskittimien, kytkimien ja isäntien on tuettava monilähetyslähteen ja vastaanottimen välillä IP-ryhmälähetystä. Tällä hetkellä laitteisto- ja ohjelmistovalmistajat ovat tukeneet laajasti IP-monilähetystekniikkaa.
(1) Isäntä
IP-ryhmälähetysviestintää tukevat alustat ovat WindowsCE2.1, Windows95, Windows98, WindowsNT4 ja Windows2000 jne. Näitä käyttöjärjestelmiä käyttävät isännät voivat suorittaa IP-monilähetysviestintää. Lisäksi lähes kaikki uudet verkkokortit tukevat myös IP-ryhmälähetystä.
(2) Keskittimet ja kytkimet
Tällä hetkellä useimmat keskittimet ja kytkimet käsittelevät ryhmälähetysdataa yksinkertaisesti lähetyksinä lähetettäväksi ja vastaanottavaksi, mutta jotkin keskitason ja huippuluokan kytkimet tarjoavat useita IP-osoitteita. Lähetystuki. Esimerkiksi 802.1p- tai IGMP-monilähetyssuodatustoiminto voidaan ottaa käyttöön 3COMSuperStack3Swith3300-kytkimessä monilähetyspakettien välittämiseksi vain porteille, jotka ovat havainneet IGMP-paketteja.
(3) Reititin
Monilähetysviestintä edellyttää, että kaikkien ryhmälähetyslähdesolmun ja kohdesolmun välisten reitittimien on tuettava Internet Group Management Protocol (IGMP) -protokollaa, ryhmälähetysreititysprotokollaa (kuten PIM, DVMRP jne.).
Kun isäntä haluaa liittyä monilähetysryhmään, se lähettää IGMP-viestin "Host Membership Report" ilmoittaakseen siitä monilähetysreitittimelle. Kun monilähetysreititin vastaanottaa kyseiselle ryhmälähetysryhmälle lähetetyn datan, se välittää sen edelleen kaikille monilähetysisäntäkoneille. Ryhmälähetysreititin lähettää myös ajoittain "isäntäjäsenkyselyn" IGMP-sanoman tehdäkseen kyselyn ryhmälähetysisännältä aliverkosta. Jos se havaitsee, että ryhmälähetysryhmässä ei ole jäseniä, se lopettaa monilähetysryhmän tietojen edelleenlähettämisen. Lisäksi, kun IGMPv2:ta tukeva isäntä (kuten Windows 98/2000 -tietokone) poistuu ryhmälähetysryhmästä, se lähettää myös "poistu ryhmästä" IGMP-viestin reitittimelle ilmoittaakseen reitittimelle, että se lopettaa monilähetysryhmän tietojen välittämisen. Mutta vain kun kaikki aliverkon isännät poistuvat ryhmälähetysryhmästä, reititin lopettaa ryhmälähetysryhmän tietojen välittämisen aliverkkoon.
Multicast-reititysprotokollaa käyttämällä reititin voi muodostaa ryhmälähetysreititystaulukon ryhmälähetyksen lähdesolmusta kaikkiin kohdesolmuihin toteuttaakseen ryhmälähetysdatapakettien välittämisen aliverkkojen välillä. Esimerkiksi PIM (Protocol Independent Multicast) on monilähetysreititysprotokolla, jota on kahta tyyppiä: harvamuotoinen ja tiheätila. Esimerkkinä Cisco2621-reitittimen perusasetukset IP-ryhmälähetystoiminnon käyttöön ottamiseksi ovat seuraavat:
c2621(config)#ipmulticast-routing mahdollistaa IP-ryhmälähetyksen tehdä reitittimestä monilähetysreitittimen
c2621(config)#intf0/0Määritä Fast Ethernet -portti 0
c2621(config-if)#ippimdense-mode (tai sparse-mode) käynnistää PIM ja aktivoi IGMP-protokollan samanaikaisesti
c2621(config-if)#intf0/1 Määritä Fast Ethernet -portti 1
c2621(config-if)#ippimdense-mode (tai harva-tila)
Ohjelmointimenetelmä
Käytännön sovelluksissa ohjelmoijien on yleensä koottava itse matalan tason verkkosovelluksia toteuttaakseen matalan tason viestintää Internetissä, kuten IP-monilähetysviestinnän toiminnon spesifisen toteuttamisen. Matalan tason verkkosovellusten ohjelmointi vaatii yleensä verkkotietoliikenteen ohjelmointirajapintojen apua, ja eri käyttöjärjestelmissä tarjottavat verkko-ohjelmointirajapinnat ovat erilaisia. Esimerkiksi Microsoft Windows -ympäristön verkko-ohjelmointirajapinta on Windows Socket (WindowsSocket). , lyhennettynä Winsock).
Winsock tarjoaa ohjelmointirajapintoja eri tietoliikenneprotokollien, mukaan lukien TCP/IP ja IPX, alaisuudessa. Eri Windows-versiot tukevat erilaisia Winsock-versioita. Aiemmat versiot, kuten Windows 95, tukevat ohjelmointia vain Winsock 1.1:ssä (16-bittinen) (voit asentaa asiaan liittyviä ohjelmistopaketteja tukemaan Winsock 2.0:aa), kun taas Windows 98 ja Windows NT 4.0 , Windows2000 tukee suoraan Winsock 2.0:aa (32-bittinen). Winsock 2.0 on Winsock 1.1:n laajennus. Sen lisäksi, että se on yhteensopiva Winsock 1.1 API:n kanssa, se määrittää myös joukon protokollasta riippumattomia API-liittymiä, jotka voivat tukea IP-ryhmälähetystä.
Yleiset vaiheet Winsock2.0:n käyttämiseksi IP-ryhmälähetyksen toteuttamiseen ovat seuraavat:
1. Alusta Winsock-resurssit
Ennen Winsockin käyttöä sinun on kutsuttava WSAStartup()-funktio WindowsSocketsDLL:n alustamiseksi. Sen avulla sovellus tai DLL voi määrittää WindowsSocketsAPI:n vaatiman version.
2. Luo pistorasia
Kutsu WSASocket()-funktio luodaksesi pistokkeen UDP-protokollalla, joka on ensimmäinen liitäntä monilähetysryhmään liittymiseen, ja myöhemmin data lähetetään ja vastaanotetaan tässä pistokkeessa Yhteyden aikana. IP-ryhmälähetysviestinnässä parametri dwFlags voidaan asettaa bittisummaksi WSA_FLAG_MULTIPOINT_C_LEAF, WSA_FLAG_MULTIPOINT_D_LEAF ja WSA_FLAG_OVERLAPPED, mikä osoittaa, että IP-monilähetysviestintä on "juuretonta" ohjaustasolla ja datatasolla, ja vain lehtisolmuja voidaan lisätä. jollekin heistä. Multicast-ryhmä, ja lehtisolmulta lähetetty data lähetetään jokaiseen lehtisolmuun (mukaan lukien itse); luodulla pistokkeella on päällekkäisiä ominaisuuksia.
3. Aseta liitäntäasetukset
Kutsu setsockopt()-funktio asettaaksesi SO_REUSEADDR-vaihtoehdon socketille, jotta socket voidaan sitoa osoitteeseen, joka on jo käytössä.
4. Sido pistorasia
Kutsu bind()-funktio sitoaksesi socketin, jotta luotu socket yhdistetään paikalliseen osoitteeseen ja paikalliseen porttiin. Multicast-viestinnässä käytetään yleensä samaa porttia tiedon lähettämiseen ja vastaanottamiseen.
5. Aseta monilähetysliittimen tila
WSAIoctl()-funktion komentokoodia SIO_MULTICAST_LOOP käytetään sallimaan tai estämään, voidaanko ryhmälähetysviestinnän aikana lähetetty viestintäliikenne myös vastaanottaa samassa pistokkeessa (eli monilähetyksen paluu). On syytä huomata, että Windows95/98/NT4:ssä oletusarvo on sallia monilähetyksen paluu, mutta et voi asettaa kieltoa, muuten tapahtuu virhe. vain Windows 2000:ssa ja sitä uudemmissa käyttöjärjestelmissä voit asettaa monilähetyksen palautuksen sallimisen/estämisen.
WSAIoctl()-funktion komentokoodia SIO_MULTICAST_SCOPE käytetään monilähetyksen etenemisalueen, eli elämisajan, TTL:n asettamiseen. Aina kun monilähetysreititin välittää monilähetysdatapaketin, datapaketin TTL-arvoa pienennetään yhdellä. Jos datapaketin TTL pienennetään nollaan, reititin hylkää datapaketin. Mikä on TTL:n arvo, kuinka monen ryhmälähetysreitittimen läpi ryhmälähetysdata voi enintään kulkea. Jos TTL-arvo on esimerkiksi 0, monilähetys voidaan levittää vain paikallisen isännän useiden vastakkeiden välillä, mutta sitä ei voida levittää "verkkokaapelille"; jos TTL-arvo on 1 (oletusarvo), ryhmälähetysdata, joka kohtaa ensimmäisen A-reitittimen, hylkää sen "hellimättä" eikä sitä sallita lähettää paikallisverkon ulkopuolelle, eli vain ryhmälähetysryhmän jäsenet sama verkko voi vastaanottaa monilähetysdataa.
c#:ssa yleinen välityspalvelinesiintymä (välityspalvelin voi kutsua vain yhtä menetelmää) on oletuksena Delegate-luokan objektina, joten delegate-avainsanaa käytetään yleensä välityspalvelimen määrittämiseen ja uutta operaattoria käytetään välityspalvelimen luomiseen. esimerkki , Ja käytä sitten Delegate-luokan menetelmiä ja ominaisuuksia välityspalvelimen ilmentymän hallintaan. MulticastDelegate-luokkaa käytetään tukemaan useita agentteja, ja puheluluettelossa voi olla agentteja, joilla on useita menetelmiä.
Useat agentit viittaavat joukkoon agentteja, jotka muodostavat joukon. MuticastDelegate-luokan objekti hallitsee agenttijoukkoa ja käyttää tätä agenttijoukkoa useiden menetelmien suorittamiseen. Tätä toimintoa kutsutaan monilähetykseksi.