Linux下廣播與多播編程_第1頁
Linux下廣播與多播編程_第2頁
Linux下廣播與多播編程_第3頁
Linux下廣播與多播編程_第4頁
Linux下廣播與多播編程_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Linux網絡編程第十單元廣播與多播編程1/20單播一臺主機向另一臺主機發(fā)送數(shù)據(jù)廣播一臺主機向本子網內所有主機發(fā)送數(shù)據(jù)多播一臺主機向網絡中的部分主機發(fā)送數(shù)據(jù)2/203第十單元廣播與多播編程10.1

廣播的概念10.2

多播的概念

3/20主機A向B發(fā)送數(shù)據(jù)過程某機器A要向主機B發(fā)送報文,會查詢本地的ARP緩存表,找到B的IP地址對應的MAC地址后,就會進行數(shù)據(jù)傳輸。如果未找到,則廣播A一個ARP請求報文(攜帶主機A的IP地址Ia和物理地址Pa),請求IP地址為Ib的主機B回答物理地址Pb。網上所有主機包括B都收到ARP請求,但只有主機B識別自己的IP地址,于是向A主機發(fā)回一個ARP響應報文。其中就包含有B的MAC地址,A接收到B的應答后,就會更新本地的ARP緩存。接著使用這個MAC地址發(fā)送數(shù)據(jù)。以太網就是以廣播方式工作的,所以A發(fā)送的數(shù)據(jù)被子網所有主機接收,每個主機判斷幀的MAC地址是否與自己的一致,不一致則丟棄,一致則向上層傳遞數(shù)據(jù)判斷處理。4/20廣播一個IP地址由網絡號和主機號組成。所有主機號部分為全1的IP地址是廣播地址。某臺主機向子網內所有主機發(fā)數(shù)據(jù),即向IP為主機號全1的地址發(fā)數(shù)據(jù)。當發(fā)送方主機發(fā)現(xiàn)目的地址為子網廣播地址時,會自動將數(shù)據(jù)幀中MAC地址設為全1。帶有這樣MAC地址的幀在經過子網任何主機都將被數(shù)據(jù)鏈路層接收并向上層協(xié)議傳遞,如IP層。上層協(xié)議經過判斷,如果有相應進程處理廣播數(shù)據(jù)報,則發(fā)送到進程相應的端口,否則丟棄數(shù)據(jù)。5/20發(fā)送應用進程UDPIPv4數(shù)據(jù)鏈路UDPIPv4數(shù)據(jù)鏈路數(shù)據(jù)鏈路IPv4UDP接收應用進程以太網頭部IPv4頭部UDP頭部UDP數(shù)據(jù)子網128.7.6目的以太網=ff:ff:ff:ff:ff:ff幀類型=0800目的IP=128.7.6.255協(xié)議=UDP目的端口=520Sendto

目的IP=128.7.6.255目的端口=520丟棄協(xié)議=UDP幀類型0800128.7.6.99=單播128.7.6.255=廣播128.7.6.5=單播128.7.6.255=廣播協(xié)議=UDP端口=5206/20廣播的實現(xiàn)服務器端:創(chuàng)建UDP套接字設置套接字要發(fā)送廣播數(shù)據(jù)調用sendto函數(shù)向廣播地址發(fā)送數(shù)據(jù),如192.168.50.255??蛻舳耍簞?chuàng)建UDP套接字綁定本地地址到套接字上。接收數(shù)據(jù)。7/20設置套接字發(fā)送廣播數(shù)據(jù)一般情況下,如果調用sendto,只能向非廣播地址發(fā)送數(shù)據(jù)報。如果要發(fā)送廣播數(shù)據(jù)報,必須告訴內核,可以通過設置SO_BROADCAST套接口選項來做到這一點。inton=1;setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));8/20廣播實例服務端為tserv.c,運行時需指定廣播地址和端口號,運行后每3秒發(fā)送一次廣播,將本機時間通知本子網內所有主機??蛻舳藶閠cli.c,作用是偵聽某一固定端口的數(shù)據(jù)報,接收一個數(shù)據(jù)報就返回。9/20第十單元廣播與多播編程10.1

廣播的概念10.2

多播的概念

10/20多播多播是對單播和廣播的一種折中方案。廣播限于局域網,多播可以用于局域網也可跨廣域網。11/20多播地址多播是通過D類地址進行的,D類地址的前4位為1110,后面28位為多播的組標識。地址范圍224.0.0.0到239.255.255.255特殊的IPv4多播地址:224.0.0.0保留224.0.0.1本子網上所有主機224.0.0.2本子網上所有網關224.0.1.1NTP(網絡時間協(xié)議)組12/20多播的原理當一個多播分組到達一個以太網時,形成幀后它的MAC地址為01:00:5e:xx:xx:xx,其后23位由多播組標識的后23位映射而成。例如目的地址為224.0.1.1的多播分組,在以太網上幀的MAC地址就為01:00:5e:00:01:01。11100000000000000000000100000001000000010000000001011110000000000000000100000001IP地址MAC地址13/20多播地址中的組由于多播IP地址中組標識有28位,而映射到MAC地址的只有23位,還差5位,所以有32個組將映射成相同的MAC地址,例如224.0.1.1,225.0.1.1,239.128.1.1都映射到MAC地址01:00:5e:00:01:01。因此要由IP層來檢驗到達的多播分組是否是自已所加入的多播組。如果不是,則拋棄該分組。14/20應用程序UDPIP層132.0.0.100數(shù)據(jù)鏈路層52:37:4a:6d:7f:5e應用程序UDPIP層132.0.0.129應用程序UDPIP層132.0.0.168數(shù)據(jù)鏈路層52:23:4e:6f:2c:35數(shù)據(jù)鏈路層00:2e:2c:5f:ae:3f發(fā)送數(shù)據(jù)報IP:224.0.1.1端口1234通過ARP解析224.0.1.1對應01:00:5e:00:01:01接收數(shù)據(jù)報端口1234應用程序指定132.0.0.129加入多播組224.0.1.1IP層指示接收MAC地址為01:00:5e:00:01:01的幀加入225.0.1.1丟棄多播數(shù)據(jù)報在子網中的發(fā)送接收15/20多播的實現(xiàn)服務器端:創(chuàng)建UDP套接字調用sendto函數(shù)向多播地址發(fā)送數(shù)據(jù),如224.0.4.5??蛻舳耍簞?chuàng)建UDP套接字加入一個多播組。綁定本地地址到套接字上。接收數(shù)據(jù)。16/20如何加入多播組加入多播組的方法是:設置套接口選項IP_ADD_MEMBERSHIP。它要用要如下結構:struct

ip_mreq{

struct

in_addr

imr_multiaddr;/*IPv4的D類多播地址*/struct

in_addr

imr_interface;/*本地接口IPv4地址*/};例:setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mcaddr,sizeof(struct

ip_mreq

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論