zoukankan      html  css  js  c++  java
  • 组播(又称多播)是个好东西

    在学网络基础的时候听说过这个东西,今天真正用了下,发现自己一直理解的都不对.

    我用点对点的思维去理解组播,闹了笑话.其实组播中的各成员的ip和port都是一样的,这样才能够保证一个人发送,别的成员都能够接收到.

    组播是一种UDP(User Datagram Protocol,用户数据报协议)协议,利用了无连接的socket方法(不会用到connect).支持同网段也支持跨网段(后者需要用路由器的支持).

    关于组播的代码例子: https://www.cnblogs.com/Stephen-Qin/p/12423270.html 

    一些组播相关的说明:

     1. 这个option和下面的option是实现多播必不可少的,它用于加入一个多播组,例:

        struct ip_mreq ipmr;
        ipmr.imr_interface.s_addr = htonl(INADDR_ANY);
        ipmr.imr_multiaddr.s_addr = inet_addr("234.5.6.7"); 
        setsockopt(s, IPPROTO_IP, IP_ADDR_MEMBERSHIP, (char*)&ipmr, sizeof(ipmr));

     2. 关于组播IP地址,当一个主机加入组播的组成为组成员,是不是IP地址变为D类?

    第一个问题 他的ip地址并没有变 因为你的思想停留在单播上 所以我没办法给你解释清楚
    第二个问题 224.0.0.0到239.255.255.255 这些都叫组播地址
    单播路由表 主要显示有 目的地址 下一跳 出口 组播不是遵照单播路由表转发的而是查看组播路由表
    由于组播地址 不是一个接收者 而是一组接收者 我不想给你讲的太仔细 估计你现在接受不了 我举个例子 不太严谨 你先体会一下
    有几个主机已经加入了 224.1.1.1 这个组
    192.168.1.1---192.168.1.2---192.168.1.3---比如这三个ip地址加入了组224.1.1.1
    然后组播源10.1.1.1--- 向224.1.1.1 这个组地址发送信息的时候 那几个加入组的主机都会收到组播源发送的信息 ...如果你用icmp来检测的话 组播源10.1.1.1 ping 224.1.1.1是可以通的 就证明组播通了也就是下面的组员接收到了组播信息

     3.IP多播地址采用D类IP地址, 地址范围是 224.0.0.0  239.255.255.255.

    保留IP多播地址的一些例子:

    224.0.0.1 - 该子网上的所有主机。

    224.0.0.2 - 该子网上的所有路由器。

    224.0.0.5 - 开放最短路径优先(Open Shortest Path First,OSPF)算法第2版,设计用于到达某个网络上的所有OSPF路由器。

    224.0.0.6 - 开放最短路径优先算法第2版,设计用于到达某个网络上的所有OSPF指定的路由器。

    224.0.0.9 - 路由信息协议(Routing Information Protocol,RIP)第2版。

    224.0.1.1 - 网络时间协议(Network Time Protocol)。

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    列行oracle行转列、列转行
    内存销毁Android中Context
    继承指针《深度探索C++对象模型》侯捷译——笔记(一),读后感,附带【插图】
    函数环境lua5.1.4中实现自定义require的loader函数
    修改文件vim 插件:perlsupport的修改和使用
    查询文件[置顶] Android 仿 WP7 布局
    权限用户Exchange 2010 出现用户无权限发邮件,产生的原因是部分用户权限被覆盖或者丢失!
    参数过滤mongodb过滤查询键值
    效果信息[gdc13]《刺客信条3》渲染技术
    破解服务器Android防破解
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12423096.html
Copyright © 2011-2022 走看看