*nix' lerde Multicast Kullanımı



Benzer belgeler
Hazırlayan: Barış Şimşek. Bitirme Çalışması Sunumu. Ocak 2001, Trabzon KTÜ

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

BİLGİSAYAR AĞLARI VE İLETİŞİM

Yönlendiriciler ve Yönlendirme Temelleri

Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

FreeBSD Üzerinde VLAN Kullanımı

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC

FreeBSD Üzerinde VLAN Kullanımı

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

FreeBSD Ağ Uygulamaları

OpenBSD Pf ve Squid ile Transparent Proxy Kurulumu.!!Bu yazıda OpenBSD 3.7 işletim sistemi kullanılmıştır.

Bilgisayar Programcılığı

Tuğrul Boztoprak. 1 Haziran 2009 III. ULAKNET Çalıştay ve Eğitimi

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUVARI DENEY 7

Lab7-Dinamik Yönlendirme ve RIP

Gökhan AKIN ĐTÜ/BĐDB Ağ Grubu Başkanı ULAK/CSIRT. Sınmaz KETENCĐ ĐTÜ/BĐDB Ağ Uzmanı

Fedora Core Ağ Ayarları

Şekil 9.1 IP paket yapısı

Meşrutiyet Caddesi 12/ Kızılay/ANKARA T: +90 (312) info@cliguru.com

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2. İçerik. IP ICMP MAC Tracert

CISCO AĞLARDA YÖNLENDĐRME

Squid i Follow X-Forwarded-For headers Yaması İle Patchlemek

AĞ TEMELLERI. İSİM SOYİSİM: EMRE BOSTAN BÖLÜM: BİLGİSAYAR PROGRAMCILIĞI ÜNİVERSİTE: NİŞANTAŞI KONU: Konu 5. TCP/IP

Bir port aynı anda bir process tarafından dinlenebilir. Fakat bir process birden fazla portu dinleyebilir.

LİNUX İŞLETİM SİSTEMİNİN KÖPRÜ MODUNDA ÇALIŞTIRILMASI VE GÜVENLİK DUVARI İŞLEMLERİ

OSI REFERANS MODELI-II

IPv6 INTERNET PROTOCOL. Hüsnü Demir hdemir at metu.edu.tr

Kurumsal Güvenlik ve Web Filtreleme

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Bilgisayar Ağları - 1 (BİL 403)

TEMEL NETWORK CİHAZLARI

Kurumsal Güvenlik ve Web Filtreleme

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2

22/03/2016. OSI and Equipment. Networking Hardware YİNELEYİCİ (REPEATER) YİNELEYİCİ (REPEATER) Yineleyici. Hub

Alt Ağ Maskesi (Subnet Mask)

TCP/IP. TCP (Transmission Control Protocol) Paketlerin iletimi. IP (Internet Protocol) Paketlerin yönlendirmesi TCP / IP

IP ve MAC Adresleri. IP Adresleme. IP Adresleme. IP Terminolojisi. IPv4. IP Adresleme Standartları

HAFTA-3 ARP (Address Resolution Protocol) (Adres Çözümleme Protokolü)

1 STUNNEL NEDİR? 2 STUNNEL KURULUMU

Açık Kod VPN Çözümleri: OpenVPN. Huzeyfe ÖNAL

Bölüm3 Taşıma Katmanı. Transport Layer 3-1

Gökhan AKIN ĐTÜ/BĐDB Ağ Grubu Başkanı - ULAK/CSIRT. Sınmaz KETENCĐ ĐTÜ/BĐDB Ağ Uzmanı

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUVARI DENEY 5. Yönlendiricilerde İşlem İzleme ve Hata Ayıklama

Bilgisayar Programcılığı

OpenBSD PF CARP ve pfsync ile Redundancy Firewall

Linux Üzerinde İleri Düzey Güvenlik Duvarı Uygulamaları

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı EKi Salı, Çarşamba Öğr. Gör. Murat KEÇECĠOĞLU

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

OSPF PROTOKOLÜNÜ KULLANAN ROUTER LARIN MALİYET BİLGİSİNİN BULANIK MANTIKLA BELİRLENMESİ

Marmara Üniversitesi nde IPv6 Deneyimi

Bilgisayar Ağları Computer Networks

IPv6 Geçiş Yöntemleri Analizi

03/03/2015. OSI ve cihazlar. Ağ Donanımları Cihazlar YİNELEYİCİ (REPEATER) YİNELEYİCİ (REPEATER) Yineleyici REPEATER

IPv6'da Multicast Haberleşmenin Kritiği

Active Directory için Fiziksel Ağ Altyapısını Tasarlamak

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Computer Networks 7. Öğr. Gör. Yeşim AKTAŞ Bilgisayar Mühendisliği A.B.D.

Active Directory Shema

BİLG Dr. Mustafa T. Babagil 1

IPV6'DA MULTICAST KRİTİĞİ

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Salı, Çarşamba Öğr. Gör. Murat KEÇECĠOĞLU

FAKS SUNUCU EĞİTİM DÖKÜMANI

yapılandırıp, performansını analiz etmektir.

FreeBSD/OpenBSD Temel A Ayarları

ARP (Address Resolution Protocol) Poisoning -Ağın Korunma Yöntemleri

Öğr. Gör. Ümit ATİLA

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

CHAPTER 9. DHCP Server

HAFTA-2 ARP(Address Resolution Protocol- Adres Çözümleme Protokolü)

Windows Server 2012 DHCP Kurulum ve Yapılandırma

Yönlendirme. Yönlendirme Protokolleri

Ağ Sızma Testleri ve 2. Katman Saldırıları Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

-D delete : Zinciri silmek için kullanılan komut; Silme işlemi için ya zincir numarası belirtilir ya da kuralın kendisi.

BM 402 Bilgisayar Ağları (Computer Networks)

LINUX TA İNTERNET PAYLAŞIMI

Ipv6 Egitimi. Mustafa Reşit Şahin. Software Engineer.

Öğr. Gör. Serkan AKSU

Belge Ozan UÇAR tarafından yazılmıştır ve yazarın ismine sadık kalmak kaydı ile belge izin alınmaksızın her şekilde paylaşılabilir ve dağıtılabilir.

sayısının decimal karşılığı dur.

MaestroPanel Kurulum

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 2. Ağ Modelleri

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı EKi Salı, Çarşamba Öğr. Gör. Murat KEÇECĠOĞLU

Computer and Network Security Cemalettin Kaya Güz Dönemi

Datagram, bir başlık eklenerek, kaynak uçtan alıcı uca gönderilen veri birimidir. Her datagram sıra ile gönderilir.

Dr. Fatih AY Tel: fatihay@fatihay.net

BIND ile DNS Sunucu Kurulumu

Hot Standby Router Protocol (HSRP)

IPv6 da Multicast Haberleşmenin Kritiği

DHCP kurulumu için Client/Server mimarisine sahip bir ağ ortamı olmalıdır ki bu da ortamda bir Domain Controller olmasını zorunlu kılar.

Data Link Katmanı olarak adlandırılır. Fiziksel adresleme bu katmanda yapılır.

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Salı, Çarşamba Öğr. Gör. Murat KEÇECĠOĞLU

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

Đstanbul Teknik Üniversitesi Bilgi Đşlem Daire Başkanlığı. 9 Kasim 2007 INET-TR Ankara

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

IP Adres Subnet Mask Default Gateway ??

1 NETWORK KABLO VE CIHAZLAR

Transkript:

*nix' lerde Multicast Kullanımı

/******************************************************** * Bâkır EMRE * emre [at] enderunix [dot] org * EnderUNIX Yazılım Geliştirme Takımı * http://www.enderunix.org * * Sürüm : 1.1 * Tarih : 1.02.2007 * Makalenin en yeni versiyonu : http://www.enderunix.org/docs/multicast.pdf * adresinden elde edilebilir. ********************************************************/ İçindekiler Tanımlar......3 Multicast Adres Yapısı.....4 TTL değeri......5 Freebsd de Mutlticast yönlendiricyi etkinleştirmek......6 Linux ve FreeBSD için Bazı İpuçları......8 Multicast ve PF kullanımı......9 Multicast Programlama......10 Yapılacaklar...14 Kaynaklar......14

Tanımlar IPv4 de ağ içerisinde paketler bir uçtan baska bir uca veya uclara 3 farklı şekilde gönderilir. Bunlar broadcast,unicast ve multicast dir. Broadcat paketleri ağ içerisindeki butun uclara gönderilir. unicast paketleri sadece belirlenen uc-uclara gonderilir. Multicast ise bir uctan, üyelik sistem ile çalışan bir gruptaki alıcılara gönderilmesi sağlayan gönderim şeklidir Multicast' i diğer yöntemleri şekilsel olarak karşılaştırmak gerekirse: Alıcı Alıcı Alıcı Alıcı Unicast Broadcast Alıcı Alıcı Multicast

Görüldüğü gibi unicast te erişilecek herbir host için bir baglantı olusturulur ve herbiri için ayrı ayrı paket gönderilir. Hher bir baglantı için yük getirmektedir. Broadcast te ise çıkan paket ağdaki bütün uc noktalara gönderilir dedik. Burada yayın yapan için ek yük getirmese bile ağ içerisinde bu trafik ile alakalı olmayan hostlar için sıkıntıdır. Unicast, broadcast ve multicast iletim şekilleri karşılaştırıldığında, multicast aşağıdaki avantajları sağlamaktadır: Çok daha az bant genişliği kullanır, Çok daha az işletim gücü kullanır, Kullanıcı adedi artsa bile tıkanıklığa neden olmaz, multicast ile bilgisayarın trafiği özel bir IP ye doğrudur. Diğer bilgisayarlar ise bu trafiği alabilmek için bu IP ye kaydolurlar. Bu şekilde sunucu veri akışını bir IP için yapar. Bir çok istemci ise bu IP ye kaydolduğu takdirde veriyi alabilir. Böylece aynı veriyi ağda birden fazla göndermenin önüne geçilmiş olunur. Ayrıca ağın tamamı bu trafikle meşgul olmasının önüne geçilmiş olur Bu faydalarına karşın Multicast her zaman elverişli olmayabilir. işletim sisteminiz desteklemeyebilir. veyahut uygun ağ araçlarına (router,switch vb.) sahip olmayabilirsiniz. Eğer Multicast yayının internet üzerinden almak yada göndermek isterseniz ISP nizin MBONE (Multicast Backbone) bağlı olması gerekmektedir. Internet üzerinden sınırlı sayıda kullanıcı multicast yayını alabilmektedir. kı bunların çoğu üniversite veya araştırma merkezleridir... Internet tarafı böyle olmasına karşın yerel alan ağları uygun anahtarlama ve yönlendirme cihazları elde edildiği müddetçe Multicasti kolaylıkla destekler... Multicast Adres Yapısı Multicast addres yapısı ise IP adreslemeden kullanılan A,B,C,D,E sınıflarından D sınıfına girer bildiğimiz gibi IP adresleme sınıfları şu şekildedir. Sınıf Ensoldaki Bitleri Başlangıç Adr. Bitiş Adresi A 0xxx 0.0.0.0 127.255.255.255 B 10xx 128.0.0.0 191.255.255.255 C 110x 192.0.0.0 223.255.255.255 D 1110 224.0.0.0 239.255.255.255 E 1111 240.0.0.0 255.255.255.255 Genel olarak multicast adresleri 224.0.0.0 ile 239.255.255.255 araılığndaki bir adres kullanılabilir. CIDR 224.0.0.0/4 olarak ifade edilir. 224.0.0.0 ile 224.0.0.255 arasındaki adres aralığı sadece yerel alan ağlarında multicast adresi olarak kullanılabilir ve bu şekilde atanmıştır. Multicast Backbone (MBONE) 224.2.0.0 adresini multimedia (video audio) konferansları için kullanır

Ayrıca multicast adres dağılımında tanımlı olan bir kaç adres aşağıdaki gibidir. 224.0.0.0 Temel adres (saklı) 224.0.0.1 Aynı ağ segmentindeki sistemleri kapsayan multicast grubunun bütün üyeleri 224.0.0.2 Aynı ağ segmentindeki yönlendiricileri kapsayan multicast grubundaki bütün yönlendiriciler 224.0.0.5 Open Shortest Path First (OSPF) kullanan yönlendiricilerin adresleri. OSPF yöndendirme bilgilerini network segmentindeki OSPF kullanan bütün yönlendiricilere göndermek için kullanılır 224.0.0.6 The OSPF Designated Routers adresi. OSPF yöndendirme bilgilerini network segmentindeki OSPF kullanan designated yönlendiricilere göndermek için kullanılır 224.0.0.9 RIP ( Routing information protocol ) v2 grup adresi., RIP yöndendirme bilgilerini network segmentindeki RIP v2 kullanan bütün yönlendiricilere göndermek için kullanılır 224.0.0.10 EIGRP grup adresi. EIGRP kullanan yönlendiricilerin adresleri.eigrp yöndendirme bilgilerini network segmentindeki EIGRP kullanan bütün yönlendiricilere göndermek için kullanılır 224.0.0.18 Virtual Router Redundancy Protocol 224.0.0.102 Hot Standby Router Protocol Version 2 224.0.1.41 H.323 Gatekeeper discovery address TTL değeri IP paketleri için TTL değerinin kullanılmasının ilk amacı, ağ içerisinde paketin yaşam süresini sınırlandıran ve sirkülasyona girmesini engelemek için kullanılan değeri oluşturmaktır. İkinci amacı ise yönetim sınırları ağ tarafında belirlenen alanları tanımlamak için paketlerin içerisinde yer alır Örneğin..Site..Şirket... gibi. Bu alan multicast paketinin kapsadığı alanı scope unu oluşturur. aşağıda TTL değerlerine karşı Kapsadığı alanları belirtilen tablo bulunmaktadır.

TTL Kapsadığı alan ---------------------------------------------------------------------- 0 Ayni host ile sınırlı. Hiçbir arayüzden dışarı çıkamaz. 1 Aynı altağ ile sınırlı. Yönlendiriciler arasından geçemez. 16 Aynı site, organizasyon veya bölüm ile sınırlı. 64 Aynı alan ile sınırlı. 128 Aynı kıta ile sınırlı. 192 Dunya geneli, sınırlı bantgenişliği için kullanılır. 255 Küresel herhangi bir kısıta ugramamış. Freebsd de Mutlticast yönlendiricyi etkinleştirmek Freebsd hostlar için varsayılan olarak multicasti desteklemektedir. Eğer bilgisayarınızı multicast router olarak kullanmak isteseniz işletim sisteminde multicasti etkinleştirmek için kernel e şu seçenekleri eklemeniz gerekmektedir. Izlememiz gereken adımlar şu şekildedir. Öncelikle işletim sistemi çekirdeğine MROUTING ve PIM seçeneklerini ekleyelim daha sonra cd /usr/src/sys/i386/ vi KernelYapilandirmaDosyaniz options options MROUTING PIM kaydedip çıktıktan sonra sırasıyla config KernelYapilandirmaDosyaniz cd../compile/kernelyapilandirmadosyaniz make depend make make install sistem yeniden başlatılır. Multicast routing etkin olabilmesi için /etc/rc.conf dosyası içerisine şu satırlar eklenmeli mrouting_enable= YES Servisi yeniden çalıştırmak için ise /etc/rc.d/mrouted start komutu kullanılmalıdır.

mrouted IP multicast routing daemon olarak bilinir aşadı kullanılan parametrelerin açıklamaları verilmiştir. -c config_file] yapılandırma dosyasını belirtir (varsayılan olarak /etc/mrouted.conf). -d [debug_level] debug seviyesini (varsayılan değeri 0). -p mrouted ı non-pruning modda çalıştırır. Multicast routing yapılandırma dosyası /etc klasoru altında koyabilirsiniz. mrouted.conf örnek dosyasını /etc altına kopyalayın. Ve programı mrouted -c /etc/mrouted.conf komutuyla çaıştırabilirsiniz. Program bilgisayara bağli tüm arayüzlere igmp mesajı gönderecektir. mrouted programını -d parametresi ve devaminda debug seviyesini kullanarak, komşu yönlendiricileri ve gönderilen igmp mesajlarını izleyebilirsiniz. Örnek mrouted.conf ise aşağıdaki gibidir. phyint xl0 allow_nonpruners threshold 1 metric 1 phyint xl1 allow_nonpruners threshold 1 metric 1 phyint fxp0 allow_nonpruners threshold 1 metric 1 phyint : Tek başına kullanılmaz arayüz ile kullanılır.arayüzle alakalı komutlar ile devam eder. Arayüz adresi veya ismi ile beraber kullanılır. threshold : IP yaşam süresinin (ttl) en az değerini belirtir ki bu da verilen arayüzden multicast datagramının gönderilmesi için gereklidir. metric : metric ise verilen arayüzden alınan datagramlar için bir maliyet olarak tanımlanır. Yönlendirme seçimlerinde etkilidir. diğer seçenekler için : man mrouted

Linux ve FreeBSD için Bazı İpuçları Linux altında hostun hangi multicast grubuna dahil olduğunu görmek isterseniz proc dosya sistemini kullanabiliriz. cat /proc/net/igmp ile ile hangi gruba dahil olduğunu görebiliriz tcpdump kullanarak multicast paketlerini dinlemek istersek tpcdump igmp dememiz yeterli olacaktır. ayrıca bunu tcpdump ip[9:1]=1 şeklinde de yapabiliriz. burada ki kullanımda ip[9:1] IP başlığındaki Protokol alanını verir 2 igmp nin protokol numarasııdır dolayısıyla 9:1 şeklindeki kullanım ilede igmp paketlerini dinleyebilirsiniz. netstat -g komutunu kullanarak multicast grup üyeliklerini de görebiliriz (Linux için aşağıdeki çıktıyı alırsınız) netstat -g IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 ALL-SYSTEMS.MCAST.NET eth0 2 224.0.0.251 eth0 1 ALL-SYSTEMS.MCAST.NET lo 1 ip6-allnodes eth0 1 ff02::1:ffa9:638a%3218689112 eth0 1 ip6-allnodes Freebsd için aşağıdaki şekilde bir çıktı vermektedir. Virtual Interface Table Vif Thresh Rate Local-Address Remote-Address Pkts-In Pkts-Out 0 1 0 192.168.9.125 0 0 Multicast Routing Table is empty IPv6 Multicast Interface Table is empty IPv6 Multicast Routing Table is empty

IPv4/IPv6 Multicast Group Memberships Group Gateway Netif 224.5.5.5 01:00:5e:05:05:05 xl0 Linux'te multicast grubunun max eleman sayısı görmek için cat /proc/sys/net/ipv4/igmp_max_memberships multicast grubunun max eleman sayısı değiştirmek için sysctl de /etc/sysctl.conf dosyasına net.ipv4.igmp_max_memberships = yeni_deger yazarak değiştirmelisiniz ve sistemi yeniden başlattığınızda bu yeni değer sayısınca grup elemanı multicast grubunun sayısı en fazla olacaktır Freebsd de multicast uygulamaları /usr/ports/mbone altında bulunmaktadır Multicast ve PF kullanımı Güvenlik duvarı olarak Openbsd Packet filter kullanıyorsanız varsayılan olarak IGMP ve Multicast paketlerini bloklayacağını unutmayın. Çünkü PF varsayılan olarak IP options ayarlanmış paketleri durdurmaktadır. Bunu engellemek için allow-opts parametresini kuralların akabinde kullanmak gerekir., Örnek kullanımı pass quick on $dmz_if inet from any to 224.0.0.0/4 allow-opts keep state pass out on $dmz_if proto igmp from any to any allow-opts gibi...

Multicast Programlama Multicast programlama için soket arayüzünü kullanılır. Multicast ile alakalı yapıları ve tanımlamaları linux için /usr/include/linux/in.h dosyasında freebsd için ise /usr/include/netinet/in.h içerisinde bulabilirsiniz. multicast ile alakalı işlemlerimizi aşağıdaki iki fonksiyon ile gerçekleştirirsiniz. int getsockopt(int s, int level, int optname, void* optval, int* optlen); int setsockopt(int s, int level, int optname, const void* optval, int optlen); bu iki fonksiyona gerekli parametreleri göndererek işlemlerimizi yapabiliriz. ilk parametre s sistem çağrısının uygulanacağı soket. Multicasting için bu soket AF_INET ailesinden olması gerkmektedir. Ayrıca soket tipi SOCK_DGRAM veya SOCK_RAW olmalıdır. ikinci parametre level katmanı belirtir. SOL_SOCKET soket katmanı için, IPPROTO_IP ise IP katmanı için kullanılır. optname ise ayarlanacak yada alınacak seçenekleri belirtir. aşağıda bu seçenekler gözükmektedir. IP_MULTICAST_IF /* u_char; set/get IP multicast arayüzü */ IP_MULTICAST_TTL /* u_char; set/get IP multicast time-tolive süresi*/ IP_MULTICAST_LOOP /* u_char; set/get IP multicast loopback */ IP_ADD_MEMBERSHIP /* ip_mreq; grup üyeliği eklemek */ IP_DROP_MEMBERSHIP /* ip_mreq; grup üyeliğini çıkarmak */ struct ip_mreq struct in_addr imr_multiaddr; /* IP multicast grup adresi */ struct in_addr imr_interface; /* arayüz adresi*/ }; ip_mreq yapısı kullanılarak IP_ADD_MEMBERSHIP ve IP_DROP_MEMBERSHIP gerçekleştirilir. son olarak optlen ise optval işaret ettiği struct' un uzunluğunu gösterir.

örnek bir multicast için oluşturulmuş sunucu istemci yapıları gösterilmektedir. Kısaca yaptıkları işe gelince sunucu multicast grup adresi olarak "225.1.1.1" yayın yapmaktadır. Gruba dahil olan istemcilere mesaj gönderen bir uygulamadır istemci kodu aşağıdaki gibidir. #define PORT_NUM 1234 #define GROUP_ADDR "225.1.1.1" void main (void) unsigned int multi_server_sock; struct ip_mreq mreq; struct sockaddr_in client_addr; unsigned int addr_len; unsigned char buffer[256]; int retcode; // Multicast soket tanımlayıcısı // Multicast grup yapısı // istemci adresi // adres uzunlugu /* socketi oluşturup ilgili alanlar ile dolduralım Burada multicast serverin adresi 225.1.1.1 olarak tanımlandı */ multi_server_sock = socket (AF_INET, SOCK_DGRAM, 0); mreq.imr_multiaddr.s_addr = inet_addr (GROUP_ADDR); mreq.imr_interface.s_addr = INADDR_ANY; //istemci adresin bilgileri multicast server ile baglanıyor. client_addr.sin_family = AF_INET; client_addr.sin_addr.s_addr = INADDR_ANY; client_addr.sin_port = htons (PORT_NUM); retcode = bind (multi_server_sock, (struct sockaddr *) &client_addr, sizeof (struct sockaddr)); if (retcode < 0) printf ("bind() hata kodu = %d \n", retcode); return; } /* soketi multicast gruba dahil * int setsockopt(int s, int level, int optname, const void* optval, int\ v * optlen) * yapısına uygun bir şekilde dolduruluyor ve donüş koduna atanıyor. */ retcode = setsockopt (multi_server_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &mreq, sizeof (mreq)); if (retcode < 0) printf ("setsockopt() hata kodu = %d \n", retcode); return;

} addr_len = sizeof (client_addr); while (1) // multicast server datagram ları al if ((retcode = recvfrom (multi_server_sock, buffer, sizeof (buffer), 0, (struct sockaddr *) &client_addr, &addr_len)) < 0) printf (" recvfrom() hatası\n"); exit (1); } } //Gelen datayı ekrana yazdır printf ("%s\n", buffer); //soket tanımlayıcısını kapat close (multi_server_sock); } Sunucu kodu da aşağıdaki gibidir. void main(void) unsigned int server_s; // Sunucu soket tanımlayıcısı unsigned int multi_server_sock; // Multicast soket tanımlayıcısı struct sockaddr_in addr_dest; // Multicast grup adresi struct ip_mreq mreq; // Multicast grup tanımlayıcısı unsigned char TTL; // multicast packetlerin TTL değeri struct in_addr recv_ip_addr; // IP address unsigned int addr_len; unsigned char buffer[256]; int count; int retcode; // multicast soketi oluştur. multi_server_sock=socket(af_inet, SOCK_DGRAM,0); // multicast grup adres bilgisi addr_dest.sin_family = AF_INET; addr_dest.sin_addr.s_addr = inet_addr(group_addr);

addr_dest.sin_port = htons(port_num); // TTL değerini ayarla TTL = 1; retcode = setsockopt(multi_server_sock, IPPROTO_IP, IP_MULTICAST_TTL, (char *)&TTL, sizeof(ttl)); if (retcode < 0) printf("setsockopt() hata kodu = %d \n", retcode); return; } addr_len = sizeof(addr_dest); count = 0; printf("*** multicast datagramı'%s' (port = %d) gönderiliyor\n", GROUP_ADDR, PORT_NUM); while(1) count++; // Mesajı buffer a yaz sprintf(buffer,"multicast Grup mesaj sayısı %d", count); } // buffer datagram multicast gruba gönder sendto(multi_server_sock, buffer, sizeof(buffer), 0, (struct sockaddr*)&addr_dest, addr_len); sleep(1); } close(multi_server_sock);

Yapılacaklar IGMP ve Multicast trafiklerinin analizleri Freebsd mbone portlarinin incelenmesi Multicast trafigi olusturma Dilbilgisi ve yazım hatalarini düzeltilmesi (: Kaynaklar http://www.freebsd.org/ports/mbone.html http://www.ulakbim.gov.tr/ulaknet/servisler/multicast/unix.uhtml http://www.linuxfocus.org/english/january2001/article144.shtml man mrouted