网络地址的认识
来源:互联网 发布:淘宝网儿童棉裤 编辑:程序博客网 时间:2024/04/29 21:11
来来回回,反反复复,多次接触到网络地址(包括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,0xAB,0xB2,0xCE})其中,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
- 网络地址的认识
- 一些常用的网络地址
- 网络地址的计算
- 网络地址转换的类型
- 网络地址URL的介绍
- 常用插件的网络地址
- 网络地址的基本概念
- 网络地址
- 网络地址
- 网络地址
- 网络地址
- 有关网络地址的解析图例
- 网络地址的分配及获取
- 网络地址转换(NAT)的实现
- 网络地址,tcp/udp的区别
- andriod模拟器的网络地址空间
- 网络地址的分配及获取
- 保留自己常用的网络地址
- Python 3语法小记(五)字符串
- 首次编译Kernel模块的经历
- java识别字符串中的汉字
- android的工具链:error trying to exec 'cc1': execvp: No such file or directory
- 通用串行总线USB
- 网络地址的认识
- PHP错误日志
- JAVA多线程之CountDownLatch
- java 几种不同的文件操作
- OpenCV仿射变换+投射变换+单应性矩阵
- android goole map 接口
- 【Android课堂】 实现应用的多入口图标
- 用递归颠倒一个栈
- C++类型转换