IP地址
ip地址是ip协议提供的一种统一的地址格式,它为互联网上的网络设备分配一个用来通信的地址。目前有ipv4和ipv6两种。
ipv4
ipv4 是一个32位数二进制数,占4个字节大小,由于用一个大整数不方便记忆和使用,于是采用了点分10进制
表示方法,及将其拆分为4个字节,每个字节为一个0-255的10进制数字,并用.
分隔。
ip地址又分为公网地址和私网地址,公网地址需要向因特网信息中心请求,可以直接在互联网上使用。私网地址只能在组织内部的局域网中使用。不能超过该范围。
子网掩码(mask)
子网掩码的作用主要用来划分一个ip地址的网络号和主机号,划分的方式是将子网掩码进行位与运算
,得到的结果就是网络号。一般的子网掩码为255.255.255.0
,或者255.255.0.0
形式,也有其他的子网掩码。假如ip地址为120.78.239.100
的ip地址的子网掩码为255.0.0.0
,则相与计算之后的结果为120.0.0.0
,这个结果便是网络号。主机号则为后面三位0的位置。
网关(GATEWAY)
网关又称为网间连接器,协议转化器,在网络层上是实现网络互联。网关实质上是一个网络通向其他网络的IP地址。两个处于不同网络段的主机是无法进行通信的,通信需要经过网关和硬件层面上的路由器实现。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关通过具有路由功能的设备(路由器,具有路由协议的设备,代理服务器)转发给网络B的网关,网络B的网关再转发给网络B中的对应主机。
ipv6
IPv4地址使用四字节描述,所能组合的个数也是有限的,所以ipv4地址在现代互联网的试用下几乎消耗殆尽,开始无法满足人们对ip地址的需求,于是出现了ipv6地址协议,ipv6使用了128位二进制数表示,基本解决了IP地址短缺的情况,但是目前还存在诸多的协议问题。
ipv6使用冒号表示法:将4个16进制数分为一组,一共8组,并采用冒号分割的表示的方式。形如fd23:34ab:babe:cd89:4c2b:0:0:23de
的表示形式,地址中连续的0也可以省略,但仅可省略一处,省略处使用两个::
分割即可,即fd23:34ab:babe:cd89:4c2b::23de
。0.0.0.0.0.0.0.1
也等价于::1
ip地址的分类
ip地址根据不同的段划分为ABCDE5类,
A类
第一字节为网络位,子网掩码为255.0.0.0,且IP地址第一个字节第一位必须为0,即
二进制表示 | 十进制表示 | |
起始 | 00000001 00000000 00000000 00000000 | 0.0.0.0 |
结束 | 01111111 11111111 11111111 11111111 | 127.255.255.255 |
第一字节为网络位,除去127本地回环地址,网络ID共有126个,每个网络号有 256^3 - 2 = 1677714个主机号(减去一位主机号和广播号)
B类
前两个字节为网络号,即子网掩码255.255.0.0
,且前两位必须为10
打头,即
二进制表示 | 十进制表示 | |
起始 | 10000000 00000000 00000000 00000000 | 128.0.0.0 |
结束 | 10111111 11111111 11111111 11111111 | 191.255.255.255 |
前两位为网络号,所以网络ID有214=16384个网络,每一网络中的主机个数为:2562 -2 = 65534
C类
前三个字节为网络位,子网掩码为255.255.255.0
,前三位为110
二进制表示 | 十进制表示 | |
起始 | 11000000 00000000 00000000 00000000 | 192.0.0.0 |
结束 | 11011111 11111111 11111111 11111111 | 223.255.255.255 |
前三位为网络号,所以网络号共有2^21 = 2097152个,每个网络号中有256-2=254个主机号
D类
多播地址,最高位前4位为1110,那么地址范围为
二进制表示 | 十进制表示 | |
起始 | 11100000 00000000 00000000 00000000 | 224.0.0.0 |
结束 | 11101111 11111111 11111111 11111111 | 239.255.255.255 |
E类
实验用地址
主要关注A、B、C三类地址,在这些地址中,还包括了一些私有地址范围
类别 | 最大网络数 | IP地址范围 | 单网段最大主机数 | 私有地址范围 |
A类 | 126 | 0.0.0.0-127.255.255.255 | 167777214 | 10.0.0.0-10.255.255.255 |
B类 | 16384 | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
C类 | 2097152 | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
除了以上部分私有地址,还包括部分特殊的地址。
- 255.255.255.255为限制广播地址,该地址只能在本网络内部。
- 127.x.x.x的地址为我们电脑的本地回环,这个地址只能在本地主机上使用。
- 169.254.x.x 是在window中使用DHCP动态获取IP失败后,将会被随机分配一个这样的临时地址。
路由Routing简介
两个网络之间的通信就需要路由,也就是需要路由器,通过路由器去转发这些需要跨网络的数据包,在路由器上维护着路由表,他知道根据什么的路径可以将数据包发往目的地址。
在本机上可以常看这个路由表的信息,cmd命令行中使用route print
,Linux中使用route -n
查看。
每一行消息就是一条路由表信息,都与该主机上网卡中的配置关联,网卡配置文件的路径为 /etc/sysconfig/network-scripts ,以上两条路由信息,从最后字段iface可以看出由配置文件中的ifcfg-ens33路由产生。Destination表示目标网段,Geteway表示去往目的地应该使用经过的网关,网关只有在Flag字段中带有G标记才有意义,否则就是0.0.0.0,因为第二条记录是一个本地网络,所以可以直接直接到达。
文件中包括以下几行内容,IP地址,掩码和网关配置,与路由表中的信息匹配。
路由表如何工作的
假如我们需要在本机上需要连接百度服务器和或本地网络中的一个192.168.236.200的主机,通过ping命令可以看到百度的IP地址为:39.156.69.79。
如果想要到达百度服务器,如何知道如何进行路由。查看路由表,将目的的ip地址与Genmask做按位与操作,首先会匹配掩码更长的,也就是上面的255.255.255.0, 如果长度相同,根据Metric值匹配的顺序,按位与后将结果与Destination字段值比较,如果相同,则使用该条路由。访问百度服务器时候,优先匹配第二条信息,位于过后显然结果不同,所以比较第一条,结果刚好相同,而该条记录的网关为192.168.236.2,则该消息将会到该网关的路由表中继续查询匹配,由此经过若干节点到达百度的服务器。
而当我们使用ping访问本地网络中的一个主机时,第二条路由信息将会被匹配,表示在同一网段的,直接转发即可。
路由器
路由器的所有端口都可以绑定一个ip地址,每一个ip地址位于不同的网络中,由此路由器可以将两个网络进行连接。连入的一个网络的设备可以动态和静态分配ip地址。动态分配一般有DHCP动态路由协议完成,会自动分配一个ip地址给该设备,或者通过路由协议动态计算,并不断更新路由表完成。也可以由用户手动指定一个ip地址。