2023.3.9作业

任务要求:

1、将ABCDE类IP地址的取值范围计算出来,转换成点分十进制显示。

2、简述字节序的概念,并用联合体(共用体)的方式验证计算机时大端还是小端

任务1、

假设有那么一个地址

a.b.c.d

如果a<128,那么为A类地址,网络号为a,主机号为b.c.d,范围为(0~255.255.255),

如果128<=a<192,那么为B类地址,网络号为a.b,主机号为c.d范围为(0~255.255)

如果192<=a<224,那么为C类地址,网络号为a.b.c,主机号为d范围为(0~255)

/***/其中可用的主机号!=主机号范围

/***/其中有效网络号+全是0的主机号代表所属网络地址

/***/其中有效网络号+全是1的主机号代表当前网络地址内的所有主机,如果对这个IP发送信息意味着对这个网络号的所有主机进行信息发送

有时候一家公司的每个部门只有十几台电脑,因此如果要把255个IP地址全部划分给一个部门,然后再去申请一个新的网络号给公司其他部门,难免有点浪费。加入所有部门共用一个局域网,这种时候如果某个部门想要给自己部门的所有成员发送消息,那么发送一条,其他所有部门都会收到。

例如:甲部门群传输一条“A指令”所有部门都收到“A指令“,乙部门传输一条”B指令“,所有部门又都收到”B指令“,一来二去。基本每天打开电脑就会收到一堆与自己部门不相关的信息。但是又不可能去给部门去奢侈的申请多条新的网络号的网络解决。

那该怎么提升效率?

这种时候就需要靠划分三级IP地址来解决这个问题,也就是划分子网掩码。

怎么划分?

硬性规定主机号的首地址,例如主机号为0000 0000和1000 0000,开头第一个只能为1或者0,强行分成2个不同的子网。

怎么硬性规定?

电脑连接的时候设置自己的子网掩码。子网设置是人为规定的,可以改成其他的子网掩码号去链接其他子网的网络,但是相同的IP号谁先连接到就是谁的,后面连过去只能连接失败。

子网设置成.254的格式会怎么样?(掐头0去尾255)

可以理解为你划分了128个子网,这没有任何意义。而且这128个子网断没有任何的主机号可以放,全是特殊号。

任务2代码如下、

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
int main(int argc, const char *argv[])
{
    //判断虚拟机用的是大端存储还是小段存储?
    int a=0x12345678;
    char* p = (char*)&a;
    printf("整形指针判断\n");
    if( 0x78 == *p)         //如果是小端存储
    {
        printf("小端存储\n");
    }
    if(0x12 == *p)         //如果是大端存储
    {
        printf("大段存储\n");
    }
    union data
    {
        int b;
        char c;
    }size;
    size.b=0x12345678;
    printf("联合体判断\n");
    //判断共用体的存储循序有大到小是12345678
    //还是78563412
    if(0x12 == *(char*)(&size.b)) 
    {
        printf("大端存储\n");
    }
    else if(0x78 == *(char*)(&size.b))
    {
        printf("小端存储\n");
    }
    else
    {
        printf("代码有问题\n");
    }
    return 0;
}

运行效果图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值