网络地址的认识

    来来回回,反反复复,多次接触到网络地址(包括MAC地址,IP地址)。但是,却是云里雾里,不是很了解、明白,感觉就是在飘着,不踏实。

    也就昨天,突然就“灵光一现”,感觉好像找到了“本质”,于是,就有了脚踏实地的感觉——踏实。(仅仅是个人浅见)

    计算机中的网络编址,其实就是用一个N个字节来标示(MAC是6个字节,IP是4个字节,IPV6是128/8=16个字节)。为了可读性,所以呢在print的时候(即展示),一个一个字节来表示,这样就清楚明了了。比如IPV4的地址,就是从0-4字节一个一个进行10进制的表示(我们习惯10进制?)。(比如:192.168.1.1,本质BYTE addr[4] = {192,168,1,1})。而MAC地址,就是从0-6字节,一个一个用hex(16进制)表示。

(比如我本机MAC地址:78-DD-08-AB-B2-CE,本质BYTE mac[6] = {0x78,0xDD,0x08,0xAB0xB20xCE})其中,typedef unsigned char BYTE.

    同理,IPV6的地址也是一样的,16个字节来表示地址,但是就是展示的时候有点不一样(相对于IPV4):1、16进制表示(10进制表示);2、用‘:’分隔(用‘.’分隔);3、两个字节作为分隔的基本单位(一个字节作为分隔的基本单位)。比如,我本机的IPV6地址:fe80::28ea:b4c4:6012:2e9。其中,两个冒号表示连续的‘0000’分组(具体可以参考对应的IPV6文档)。

    那么,我当初为何会搞不明白?就是因为ipv4地址可以用int来表示。所以,一直用int的来理解地址,最终也是云里雾里,不知何解。还有htonx、ntohx之类的,搞的自己乱七八糟的。现在,终于明了了。哈哈。。。


 最后:附上inet_ntoa的源码链接,对理解地址也有一定的帮助。

http://www.oschina.net/code/explore/glibc-2.9/inet/inet_ntoa.c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值