发送网络数据包成三种方式,每间单播、组播、广播

广播通俗地讲,就是让你的机器发送的数据包能够被同一个网络内的全部主机都接收到。

在解说怎样发送广播包之前。先来看看跟广播有关的知识:

我们都知道IP地址的作用是用来在网络中定位某个网络接口的(没错,准确的讲。IP并非定位某一台主机)。

我们通常见到的IP地址的形式都是例如以下这样子的:

XXX.XXX.XXX.XXX

这样的IP地址的形式叫做点分十进制表示法,事实上IP是一个32位长的二进制数,以每8位为单位,共分成4个部分。也就是分成了4个字节。

IP地址的组成方式是:  [网络号]+[主机号]

网络号是用来标识某个网络的,而主机号是用来标识网络中的某一台主机的(事实上是主机上的某个接口)。

通常计算机发送一个数据包时会在数据包的头部加上发送者的IP地址。和接收者的IP地址。

可是一般计算机发送数据包的时候,同一个网络内的全部主机都会收到这个数据包,可是仅仅有那个自己的IP地址和数据包中的接收者的IP地址同样的那个计算机才会真正接收这个数据包。

假设要让网络(同一网络)中的全部计算机都能收到这个数据包。就应该将这个数据包的接收者地址设置为这个网络中的最高的主机号。通常255.255.255.255就能够达到这个要求。所以我们假设要发送一次UDP广播报文,就能够试试例如以下实例代码:

package main

import "net"

func main() {
// 这里设置发送者的IP地址,自己查看一下自己的IP自行设定
laddr := net.UDPAddr{
IP: net.IPv4(192, 168, 137, 224),
Port: 3000,
}
// 这里设置接收者的IP地址为广播地址
raddr := net.UDPAddr{
IP: net.IPv4(255, 255, 255, 255),
Port: 3000,
}
conn, err := net.DialUDP("udp", &laddr, &raddr)
if err != nil {
println(err.Error())
return
}
conn.Write([]byte(`hello peers`))
conn.Close()
}

打开WireShark,设定过滤规则为udp.port == 3000, 然后运行一下程序。就能够抓到我们发送的广播包了:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ29waGVycw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

假设转载请注明出处:http://blog.csdn.net/gophers

版权声明:本文博客原创文章。博客,未经同意,不得转载。

Go如何发送广播包的更多相关文章

  1. windows upd广播包无法发送到局域网解决方法

    不能发送广播包的电脑和可以发送广播报的主机对比,发现不能发送广播报的主机上都有安装虚拟机,也有虚拟网卡,将所有的虚拟网卡关闭,然后再进行测试,都正常了,无论是Win7,Win10还是Xp. 禁用VMw ...

  2. UDP 收/发 广播包

    网络通信基础 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要知道程序可监听的端口.因为同一主机上的程序使用网络是通过端口号来区分的. UDP Socket的使用过程: 1. 初 ...

  3. UDP收/发广播包原理及步骤

    原文链接地址:http://www.2cto.com/net/201311/254834.html UDP收/发广播包原理及步骤 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要 ...

  4. java发送udp广播包

    2013-06-07 22:44 1272人阅读 评论(2) 收藏 举报 import java.io.IOException; import java.net.DatagramPacket; imp ...

  5. winsock 收发广播包

    ☛广播包的概念 广播包通常为了如下两个原因使用:1 一个应用程序希望在本地网络中找到一个资源,而应用程序对于该资源的地址又没有任何先验的知识. 2 一些重要的功能,例如路由要求把它们的信息发送给所有找 ...

  6. linux中C语言发送广播报文

    2. 指令的解决方法: oute add -net 255.255.255.255 netmask 255.255.255.255 dev eth0 metric 1 或者 route add -ho ...

  7. 蓝牙4.0BLE抓包(二) – 广播包解析

    版权声明:本文为博主原创文章,转载请注明作者和出处.    作者:强光手电[艾克姆科技-无线事业部] 在使用EN-Dongle捕获和解析广播包之前,我们先了解一下BLE报文的结构,之后,再对捕获的广播 ...

  8. winsock 收发广播包 【转】

    winsock 收发广播包 ☛广播包的概念 广播包通常为了如下两个原因使用:1 一个应用程序希望在本地网络中找到一个资源,而应用程序对于该资源的地址又没有任何先验的知识. 2 一些重要的功能,例如路由 ...

  9. 蓝牙4.0 BLE 广播包解析

    在使用EN-Dongle捕获和解析广播包之前,我们先了解一下BLE报文的结构,之后,再对捕获的广播包进行分析.在学习BLE的时候,下面两个文档是极其重要的,这是SIG发布的蓝牙的核心协议和核心协议增补 ...

随机推荐

  1. 道破Redis的VM

    原创文章是freas_1990.转载请注明出处:http://blog.csdn.net/freas_1990/article/details/42052813 Redis唯一的那个key的value ...

  2. 批处理程序:自动上传FTP,再登陆linux服务器执行更新

    ----转载请注明出处:博客园-邦邦酱好 最近在学批处理程序,一直没找到能够结合工作来使用它的地方,前几天测试服务端的时候突然想到可以这样做: 写一个批处理程序,自动通过FTP上传软件包到指定的地方, ...

  3. DIV 居中对齐

    <div style="text-align:center;margin-right:auto;margin-left:auto">

  4. Oracle 收集统计信息11g和12C在差异

    Oracle 基于事务临时表11g和12C下,能看到临时表后收集的统计数据,前者记录被清除,后者没有,这是一个很重要的不同. 关于使用企业环境12C,11g,使用暂时表会造成时快时慢.之前我有帖子ht ...

  5. linux 经常使用配置

    教研室用的非常旧的fedora14,装一些软件和下载东西的时候比較蛋疼,恰巧ubuntu14.04 公布,于是安装试试,顺便记录下经常使用的配置,备忘. 1. 制作镜像,比較老的主板,写入方式选择US ...

  6. Android SVN开发实战的文件夹结构呈现

    svn有一个非常标准的文件夹结构,这是. 例如,该项目是proj.svn地址svn://proj/,然后该标准svn布局是 svn://proj/ | +-trunk +-branches +-tag ...

  7. vs修错小知识,相当于我自己的笔记,需要的人可以看下

    在出现这种外部错误时,首先得检查你自己的的类的方法是否都以及实现了,我就是出现没有实现某些方法所以报出这个错误!!! 结果是onExit()方法我定义了没有去实现它. (待续)

  8. Win32 Windows规划 三

    一.NMAKE 和 Makefile 1.1  NMAKE - 命令解释器. 依据Makefile文件里定义的脚本.完毕项目的编译等操作 1.2 Makefile - 定义编译.连接等脚本语言 1.3 ...

  9. Android System Property 解析

    一 System Property       今天在折腾HDMI 显示,为Setting提供接口,遇到非常多跟Android系统属性相关的问题.因此,顺便分析和总结一些. android的代码中大量 ...

  10. android学习经常使用的数据文件夹

    android工程实践 1.仿360一键清理实现(一) "一键清理"是一个桌面图标,点击图标后,显示一个视图.进行清理动画.之后显示清理了几个进程,释放了多少M内存.点击" ...