网络通信 基础知识

【1】组播

     单播方式只能发给一个接收方。

     广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。

     组播(又称为多播)是一种折中的方式。只有加入某个多播组的主机才能收到数据。

     多播方式既可以发给多个主机,又能避免象广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)

【2】网络地址

     A类地址

     第1字节为网络地址,其他3个字节为主机地址。第1字节的最高位固定为0

     1.0.0.1 – 126.255.255.255

     0000 0000 -- 0111 1111   0 到 127  

     0 网段,作为保留地址

     127 网段 ,作为保留地址

     0.0.0.0  代表任意的本机IP地址

     B类地址

     第1字节和第2字节是网络地址,其他2个字节是主机地址。第1字节的前两位固定为10

     128.0.0.1 – 191.255.255.255

     10 00 0000 0000 0000 -- 1011 1111 1111 1111  范围 128.0  -- 191.255

     C类地址

     前3个字节是网络地址,最后1个字节是主机地址。第1字节的前3位固定为110

     192.0.0.1 – 223.255.255.255

     1100 0000 0000 0000 0000 0000  -- 110 1 1111 1111 1111 1111 1111 范围 192.0.0 -- 223.255.255

     D类地址(组播地址)

     不分网络地址和主机地址,第1字节的前4位固定为1110

     224.0.0.1 – 239.255.255.255

     224.0.0.1 -- 224.255.255.255  也是保留的地址(部分保留)

     E类地址

     保留地址

【3】组播编程流程

    发送者流程:

    1-- 创建用户数据报套接字

        socket();

    2-- 填充组播信息结构体

        接收方地址指定为组播地址

        指定端口信息

    3-- 发送数据包

        sendto()

   接收者流程:

    1-- 创建用户数据报套接字

        socket();

    2-- 加入多播组

     /* IPv4 multicast request.  */

      struct ip_mreq                                                             

       {

       /* 组播的IP地址  */

         struct in_addr imr_multiaddr;

       /* 本地的IP地址  */

         struct in_addr imr_interface;

       };

       struct ip_mreq  mreq;

       mreq.imr_multiaddr.s_addr = ...;

       mreq.imr_interface.s_addr = ...;

        setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP, &mreq ,sizeof(mreq));

    3-- 绑定

       绑定组播IP地址和端口

       绑定的端口必须和发送方指定的端口相同

    4-- 等待接收数据

【4】UNIX域套接字

     socket同样可以用于本地通信

     创建套接字时使用本地协议PF_UNIX(或PF_LOCAL)。

     分为流式套接字和用户数据报套接字

     和其他进程间通信方式相比使用方便、效率更高

     常用于前后台进程通信

      struct sockaddr_un

      {                                                                                                              

       __SOCKADDR_COMMON (sun_);

       char sun_path[108];     /* Path name.  */

      };

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值