网络中的地址管理
IP地址
- IP地址是在IP协议中用于标识网络中不同主机的地址,在本地局域网上是唯一的;
IP协议的两个版本:IPV4和IPV6
-
IPV4:IP地址是一个4字节,32位的整数(uint32_t);(广泛采用)
-
IPV6:uint64_t,没有推广起来,因为不向前兼容IPV4;
-
通常使用“点分十进制”的字符串标识IP地址
IP地址的分类
IP地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A类、B类、C类、D类、E类)的不同而不同。
- A类:0.0.0.0~127.255.255.255
- B类:128.0.0.0~191.255.255.255
- C类:192.0.0.0~223.255.255.255
- D类:224.0.0.0~239.255.255.255
- E类:240.0.0.0~247.255.255.255
子网掩码
单单从IP地址,我们无法判断网络部分是多少位,主机是多少位,无法判断两台计算机是否属于同一个子网络。这里要用另一个参数子网掩码(subnet mask)。
- 子网掩码是表示子网络特征的一个参数,形式上等同于IP地址。
- 32位二进制数字,网络部分全部为1,主机部分全部为0。
- 如:IP地址182.19.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
- 将IP地址与子网掩码进行“按位与”运算得到网络号。
- 子网掩码取反可以得到当前这个网络中的最大主机号,主机号范围:0到~mask。
特殊的IP地址
- 将IP地址中的主机地址全部设为0,就是网络号,代表这个局域网。
- 将IP地址中的主机地址全部设为1,就成了广播地址,用于给同一个链路中的相互连接的所有主机发送给数据包。
- 0.0.0.0识别任意网卡。
- 255.255.255.255全网广播地址。
MAC地址
- MAC地址是用来识别数据链路层中相连的节点。也叫物理地址、硬件地址或链路地址。
- 地址长度为48位,6个字节。
- 这个地址在网卡出厂时就确定了,与网络无关,无论将带有这个地址的硬件(如网卡、集线器、路由器等)接入到网络的何处,它都有相同的MAC地址,MAC地址一般不可改变,不能由用户自己设定。
IP地址与MAC地址的区别
- 对于网络上的某一设备,如一台计算机或一台路由器,其IP地址可变(但必须唯一),而MAC地址不可变。我们可以根据需要给一台主机指定任意的IP地址,如我们可以给局域网上的某台计算机分配IP地址为192.168.0.112 ,也可以将它改成192.168.0.200。而任一网络设备(如网卡,路由器)一旦生产出来以后,其MAC地址永远唯一且不能由用户改变。
- 长度不同。IP地址为32位(4字节),MAC地址为48位(6字节)。
- 分配依据不同。IP地址的分配是基于网络拓朴,MAC地址的分配是基于制造商。
- 寻址协议层不同。IP地址应用于OSI第三层,即网络层,而MAC地址应用在OSI第二层,即数据链路层。 数据链路层协议可以使数据从一个节点传递到相同链路的另一个节点上(通过MAC地址),而网络层协议使数据可以从一个网络传递到另一个网络上(ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络)。
PORT端口
端口:uint16_t类型的一个整数——用于在一个主机上标识一个进程。
- 一个端口只能被一个进程占用
- 一个进程可以使用多个端口
IP地址+端口号能够标识网络上的某一台主机的某一个进程