1、什么是UDP?
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、鎮(zhèn)巴網(wǎng)站維護(hù)、網(wǎng)站推廣。這里簡單介紹下,UDP,即用戶數(shù)據(jù)報協(xié)議,一種面向無連接的傳輸層協(xié)議,提供不可靠的消息傳送服務(wù)。UDP協(xié)議使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道,這一點(diǎn)非常重要。與TCP相比,占用資源更少,傳輸速度更快。
2、了解UDP單播、廣播和組播
單播:向一個單播地址發(fā)送UDP數(shù)據(jù)報時,數(shù)據(jù)報只能被指定的IP主機(jī)接收,同一子網(wǎng)下的其它主機(jī)都不會接收該數(shù)據(jù)報。單播過程(假設(shè)子網(wǎng)地址:192.168.10,該子網(wǎng)下有兩臺主機(jī):192.168.10.2,192.168.10.3,向192.168.10.2發(fā)送數(shù)據(jù)報)
1.向主機(jī)192.168.10.2的8060端口發(fā)送數(shù)據(jù)報,該IP數(shù)據(jù)報目標(biāo)IP在以太網(wǎng)中被ARP解析成MAC地址,然后將此MAC地址設(shè)置為目標(biāo)地址發(fā)出去。
2.該子網(wǎng)下的主機(jī)以太網(wǎng)接口看到該數(shù)據(jù)幀時,對比自己的MAC地址,如果不一樣,則忽略該數(shù)據(jù)幀。
3.直到192.168.10.2主機(jī)看到該數(shù)據(jù)幀時,發(fā)現(xiàn)MAC一致,則讀入該數(shù)據(jù)幀,然后在IP層對比目標(biāo)IP和本機(jī)IP,在UDP層對比端口號是否一致,最后接收該數(shù)據(jù)幀。
廣播:向一個廣播地址發(fā)送UDP數(shù)據(jù)報,該廣播網(wǎng)絡(luò)下的所有主機(jī)都會受到影響,主機(jī)根據(jù)端口號來判斷是否丟棄該數(shù)據(jù)。廣播過程(假設(shè)子網(wǎng)地址:192.168.10,則該網(wǎng)絡(luò)的廣播地址為:192.168.10.255,該子網(wǎng)下有兩臺主機(jī):192.168.10.2,192.168.10.3,向192.168.10.255發(fā)送數(shù)據(jù)報):
1.向192.168.10.255主機(jī)端口為8060發(fā)送數(shù)據(jù)報,,該IP數(shù)據(jù)報目標(biāo)IP在以太網(wǎng)中被ARP解析成MAC地址,然后將此MAC地址設(shè)置為目標(biāo)地址發(fā)出去。
2.192.168.10.2和192.168.10.3的主機(jī)接口都會和此廣播地址匹配成功,直到該數(shù)據(jù)報進(jìn)入傳輸層時根據(jù)端口是否匹配判斷是否丟棄該數(shù)據(jù),端口為8060的會保留該數(shù)據(jù),否則將數(shù)據(jù)丟棄。
組播:向一個組播地址發(fā)送UDP數(shù)據(jù)報,該組網(wǎng)絡(luò)下的所有主機(jī)都會受到影響,主機(jī)根據(jù)端口號來判斷是否丟棄該數(shù)據(jù)。組播過程原理與廣播類似。
3、dgram模塊API介紹
該模塊用來創(chuàng)建UDP數(shù)據(jù)報socket,繼承了EventEmitter,該模塊的API如下所示:
3、UDP單播實(shí)現(xiàn)
單播的原理上面已經(jīng)說了,這里便不再敘述。
服務(wù)端:
const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('close',()=>{ console.log('socket已關(guān)閉'); }); server.on('error',(err)=>{ console.log(err); }); server.on('listening',()=>{ console.log('socket正在監(jiān)聽中...'); }); server.on('message',(msg,rinfo)=>{ console.log(`receive message from ${rinfo.address}:${rinfo.port}`); server.send('exit',rinfo.port,rinfo.address) }); server.bind('8060');
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。