Въведение
С развитието на компютърните мрежи и популяризирането на персоналните компютри, хората могат лесно да плуват в Интернет, да провеждат мрежови комуникации или да получават информационните ресурси, от които се нуждаят. Освен това хората все повече разчитат на мрежови компютри. Повечето компании са създали модерни мрежи за свързване на служителите с техните компютри и работни станции. Понякога важна информация в нашата работа може да бъде получена само чрез интернет. Тази информация може да е в частната мрежа на компанията или в Интернет.
Интернет е обществена мрежа, която свързва университети, компании, организации с нестопанска цел, физически лица и правителствени агенции по целия свят. С развитието на широколентовия достъп сега нововъзникващите интернет приложения като дистанционно обучение, видеоконференции и онлайн игри стават все по-популярни и понякога стават необходими. Тези приложения включват комуникация от точка до точка или от много точки до много точки, която е много различна от традиционната едноадресна или излъчвана комуникация.
През 1988 г. Deering предложи концепцията за IP multicast. Оттогава IP multicast технологията получи широко внимание. Мултикаст е между едноадресна комуникация и излъчвана комуникация. Той може да изпраща пакети с данни, изпратени от подателя, до група приемници, разпръснати в различни подмрежи.
Основната концепция на мултикаст е "група". Групата за мултикаст е група от получатели, които желаят да получат конкретен поток от данни. Тази група няма физически или географски граници: хостовете в групата могат да бъдат разположени навсякъде в интернет или частна мрежа. Всеки възел в групата за множествено предаване се нарича член на групата за множествено предаване.
В много приложения на мултикаст може да се постигне уникаст, но с увеличаването на приемниците броят на пакетите данни, които трябва да бъдат изпратени, нараства линейно. За един приемник трябва да бъде изпратен един и същ пакет данни. По този начин трафикът ще се увеличи експоненциално, което също ще заема много честотна лента на мрежата и понякога ще причинява задръстване на мрежата. Но IP пакетът данни за мултикаст комуникация се изпраща само веднъж. Рутерът автоматично ще препрати към всеки приемник, разположен в различен мрежов сегмент, което може да бъде най-малкият брой копия на съобщения, предадени в мрежата. Така че мултикастът е много необходим.
Ключова характеристика на мултикаст комуникационния модел е да осигури индиректно идентифицирана мултикаст група, в която нито подателят, нито получателят трябва да знаят конкретната ситуация на другата страна. Изпращачът трябва само да изпраща пакети до адрес за групово предаване, а получателят трябва само да каже на мрежата, че иска да получава пакети, изпратени до този адрес.
За да изпратите потребителски данни от един терминал към друг, първо трябва да се определи маршрутът за предаване. Различните комуникационни методи имат различни начини за определяне на маршрута. В днешно време има основно следните методи за комуникация в мрежата:
Unicast (unicast: pointtopoint), метод за комуникация от точка до точка;
-
Мултикаст (multicast: pointtOmultipoint), метод за комуникация от точка до много точки;
Concast (concast: multipointtopoint), метод за комуникация от точка до точка;
MultipointtOmultipoint, метод за комуникация от много точки към много точки, насърчаване на мултикастинг;
Излъчване (излъчване: pointtoallpoint), режим на комуникация на точка към всички възли.
Обикновено услугите, които изискват мултикаст услуги, имат високи изисквания за честотна лента и реално време, включват повече потребители и заемат повече ресурси. Следователно е необходимо да се оптимизира мултикаст маршрутизирането. Алгоритъмът за маршрутизиране на мултикаст е да намери оптималното дърво за мултикаст. Идеален и ефективен алгоритъм за маршрутизиране ще проектира дърво, което обхваща само членовете на групата за множествено предаване и отразява следните характеристики: дървото се актуализира динамично с промените на членовете на групата; минималният възел трябва да бъде запазен Количеството информация за състоянието; избягва концентрацията на трафик върху връзки и възли; оптимизира маршрутизирането според функцията на разходите.
Мрежово мултикаст
IP мултикаст (известна също като мултикаст или мултикаст) технология е технология, която позволява на един или повече хостове (мултикаст източници) да изпращат единични данни TCP/IP мрежова технология, която пакетира до множество хостове (веднъж, по едно и също време). Мултикаст, като комуникация от точка до много точки, е един от ефективните начини за спестяване на честотна лента на мрежата. При прилагането на мрежово аудио/видео излъчване, когато сигналът от един възел трябва да бъде предаден на множество възли, независимо дали става дума за повтаряща се комуникация от точка до точка или за излъчване, това сериозно ще загуби честотната лента на мрежата. Само мултикаст е най-добрият избор. Мултикаст позволява на един или повече мултикаст източници да изпращат само пакети с данни към конкретна мултикаст група и само хостове, които се присъединяват към мултикаст групата, могат да получават пакетите с данни. Понастоящем технологията IP multicast се използва широко в мрежово аудио/видео излъчване, AOD/VOD, мрежови видеоконференции, мултимедийно дистанционно обучение, „push“ технология (като борсови котировки и др.) и игри за виртуална реалност.
Някои приложения имат такова изискване: някои разпределени процеси трябва да работят заедно в група, а процесите в групата обикновено изпращат съобщения до всички останали членове. Тоест, има такъв метод, който може да изпраща съобщения до някои ясно определени групи. Въпреки че броят на членовете на тези групи е голям, той е малък в сравнение с размера на цялата мрежа. Изпращането на съобщение до такава група се нарича мултикаст или накратко мултикаст.
1. IP мултикаст адрес и мултикаст група
IP мултикаст комуникацията трябва да зависи от IP мултикаст адреса. В IPv4 това е IP адрес от клас D, вариращ от 224.0.0.0 до 239.255.255.255 и е разделен на три типа: локален групов адрес за връзка, запазен мултикаст адрес и групов адрес за орган за управление. Сред тях обхватът на адресите за групово предаване на локалната връзка е 224.0.0.0~224.0.0.255, който е запазен за протоколи за маршрутизиране и други цели. Рутерът не препраща IP пакети, принадлежащи към този диапазон; резервираният мултикаст адрес е 224.0.1.0~ 238.255.255.255, който може да се използва в глобален мащаб (като Интернет) или мрежови протоколи; груповият адрес на органа за управление е 239.0.0.0~239.255.255.255, който може да се използва в организацията. Той е подобен на частен IP адрес и не може да се използва в Интернет. Може да бъде по-рестриктивен. Обхват на излъчване.
Всички хостове, които използват един и същ IP мултикаст адрес за получаване на мултикаст пакети, образуват група хостове, известна още като група за мултикаст. Членството в мултикаст група се променя по всяко време. Хост може да се присъедини или да напусне мултикаст групата по всяко време. Броят на членовете на мултикаст групата и географското местоположение също не са ограничени. Един хост може също да принадлежи към няколко мултикаст групи. . В допълнение, хостове, които не принадлежат към определена мултикаст група, също могат да изпращат пакети данни към мултикаст групата.
2. Хардуерна поддръжка за IP multicast технология
За да се реализира IP мултикаст комуникация, рутерите, хъбовете, комутаторите и хостовете между мултикаст източника и приемника трябва да поддържат IP мултикаст. Понастоящем IP multicast технологията се поддържа широко от производителите на хардуер и софтуер.
(1) Домакин
Платформите, които поддържат IP мултикаст комуникация, включват WindowsCE2.1, Windows95, Windows98, WindowsNT4 и Windows2000 и т.н. Хостовете, работещи с тези операционни системи, могат да извършват IP мултикаст комуникация. В допълнение, почти всички новопроизведени мрежови карти също така осигуряват поддръжка за IP multicast.
(2) Хъбове и комутатори
В момента повечето хъбове и комутатори просто третират мултикаст данните като излъчвания за изпращане и получаване, но някои комутатори от среден и висок клас предоставят множество IP адреси. Поддръжка на излъчване. Например функцията за 802.1p или IGMP мултикаст филтриране може да бъде активирана на превключвателя 3COMSuperStack3Swith3300 за препращане на мултикаст пакети само за портовете, които са открили IGMP пакети.
(3) Рутер
Мултикаст комуникацията изисква всички маршрутизатори между възела източник на множествено предаване и възела местоназначение да осигуряват поддръжка на протокол за управление на интернет групи (IGMP), протокол за маршрутизиране на множествено предаване (като PIM, DVMRP и др.).
Когато даден хост иска да се присъедини към мултикаст група, той ще изпрати IGMP съобщение „Отчет за членството на хоста“, за да уведоми мултикаст рутера. Когато мултикаст рутерът получи данните, изпратени до тази мултикаст група, той ще ги препрати към всички мултикаст хостове. Мултикаст рутерът също така периодично ще изпраща IGMP съобщението „host member query“, за да направи заявка към мултикаст хоста от подмрежата. Ако установи, че мултикаст групата няма членове, тя ще спре да препраща данните на мултикаст групата. Освен това, когато хост, който поддържа IGMPv2 (като компютър с Windows 98/2000), излезе от мултикаст група, той също така ще изпрати IGMP съобщение „напускане на групата“ до рутера, за да уведоми рутера да спре препращането на данните от мултикаст групата. Но само когато всички хостове в подмрежата излязат от мултикаст група, рутерът ще спре да препраща данните на мултикаст групата към подмрежата.
Използвайки протокола за маршрутизиране на множествено предаване, рутерът може да създаде таблица за маршрутизиране на множествено предаване от изходния възел на множествено предаване към всички възли на местоназначение, така че да реализира препращането на пакети с данни за множествено предаване между подмрежи. Например PIM (протоколно независимо мултикаст) е протокол за маршрутизиране на множествено предаване, който има два типа: разреден режим и плътен режим. Като вземем маршрутизатора Cisco2621 като пример, основните настройки за активиране на функцията за пренасочване на IP мултикаст са както следва:
c2621(config)#ipmulticast-routing позволява IP мултикаст, за да направи рутера мултикаст рутер
c2621(config)#intf0/0Конфигуриране на Fast Ethernet порт 0
c2621(config-if)#ippimdense-mode (или sparse-mode) стартиране на PIM и активиране на IGMP протокол едновременно
c2621(config-if)#intf0/1 Конфигуриране на Fast Ethernet порт 1
c2621(config-if)#ippimdense-mode (или sparse-mode)
Метод на програмиране
В практическите приложения програмистите обикновено трябва сами да компилират мрежови приложения на ниско ниво, за да реализират комуникацията на ниско ниво в Интернет, като например специфичната реализация на функцията на IP мултикаст комуникация. Програмирането на мрежови приложения от ниско ниво обикновено изисква помощта на програмни интерфейси за комуникация на мрежови данни, а интерфейсите за мрежово програмиране, предоставени в различните операционни системи, са различни. Например мрежовият програмен интерфейс в средата на Microsoft Windows е Windows Socket (WindowsSocket). , накратко Winsock).
Winsock предоставя интерфейси за програмиране под различни комуникационни протоколи, включително TCP/IP и IPX. Различните версии на Windows поддържат различни версии на Winsock. По-ранните версии като Windows 95 поддържат само програмиране под Winsock 1.1 (16-битов) (можете да инсталирате свързани софтуерни пакети за поддръжка на Winsock 2.0), докато Windows 98 и Windows NT 4.0, Windows2000 директно поддържа Winsock2.0 (32-битов). Winsock 2.0 е разширение на Winsock 1.1. Освен че е съвместим с Winsock 1.1 API, той също така дефинира набор от независими от протоколи API, които могат да поддържат IP мултикаст.
Общите стъпки за използване на Winsock2.0 за реализиране на IP мултикаст са както следва:
1. Инициализирайте ресурсите на Winsock
Преди да използвате Winsock, трябва да извикате функцията WSAStartup(), за да инициализирате WindowsSocketsDLL. Той позволява на приложението или DLL да посочи версията, изисквана от WindowsSocketsAPI.
2. Създайте сокет
Извикайте функцията WSASocket(), за да създадете сокет, използвайки UDP протокола, който е първоначалният сокет за присъединяване към групата за мултикаст, а по-късно данните се изпращат и получават в този сокет при връзката. За IP мултикаст комуникация, параметърът dwFlags може да бъде зададен на сумата от битове на WSA_FLAG_MULTIPOINT_C_LEAF, WSA_FLAG_MULTIPOINT_D_LEAF и WSA_FLAG_OVERLAPPED, което показва, че IP мултикаст комуникацията е "без корен" на ниво контрол и ниво на данни и съществуват само листови възли и те могат да бъдат добавени на който и да е от тях. Multicast група и данните, изпратени от листовия възел, ще бъдат предадени към всеки листов възел (включително самия него); създаденият сокет има припокриващи се свойства.
3. Задайте опции за гнездо
Извикайте функцията setsockopt(), за да зададете опцията SO_REUSEADDR за сокета, за да позволи на сокета да бъде обвързан с адрес, който вече се използва.
4. Завържете гнездото
Извикайте функцията bind(), за да обвържете сокета, така че да свържете създадения сокет с локалния адрес и локалния порт. За мултикаст комуникация обикновено се използва един и същ порт за изпращане и получаване на данни.
5. Задайте режима на мултикаст сокета
Командният код SIO_MULTICAST_LOOP на функцията WSAIoctl() се използва, за да разреши или забрани дали комуникационният трафик, изпратен по време на мултикаст комуникация, може също да бъде получен на същия сокет (Т.е. мултикаст връщане). Струва си да се отбележи, че в Windows95/98/NT4 по подразбиране е разрешено връщане на мултикаст, но не можете да зададете забрана, в противен случай ще възникне грешка; само в Windows2000 и по-нови, можете да зададете разрешаване/забрана на връщане на мултикаст.
Кодът на командата SIO_MULTICAST_SCOPE на функцията WSAIoctl() се използва за задаване на обхвата на мултикаст разпространение, тоест времето за живот, TTL. Всеки път, когато мултикаст рутер препраща мултикаст пакет данни, стойността на TTL в пакета данни ще бъде намалена с 1. Ако TTL на пакета данни бъде намалена до 0, рутерът ще отхвърли пакета данни. Каква е стойността на TTL, през колко мултикаст рутера могат да преминат най-много мултикаст данните. Например, ако стойността на TTL е 0, мултикастът може да се разпространи само между множество сокети на локалния хост, но не може да се разпространи до "мрежовия кабел"; ако стойността на TTL е 1 (стойността по подразбиране), мултикаст данните срещат първия A рутер ще бъдат "безмилостно" изхвърлени от него и няма да им бъде позволено да се предават извън локалната мрежа, т.е. само членовете на мултикаст групата в същата мрежа може да получава мултикаст данни.
В c# общият екземпляр на прокси (препращането към прокси може да извика само един метод) е по подразбиране към обекта на класа Delegate, така че ключовата дума delegate обикновено се използва за дефиниране на проксито, а операторът new се използва за създаване на проксито инстанция , И след това използвайте методите и свойствата на класа Delegate, за да управлявате прокси екземпляра. Класът MulticastDelegate се използва за поддръжка на множество агенти и списъкът с повиквания може да има агенти с множество методи.
Множеството агенти се отнасят до група агенти, образуващи набор. Обект от класа MuticastDelegate управлява набора от агенти и използва този набор от агенти за изпълнение на множество методи. Тази функция се нарича мултикаст.