上一篇《第六篇:网络中的信息如何精确从源主机到目标主机?》提到IP地址的作用。
- IP地址分为两代:v4版本和v6版本,现在的IP地址主要还是v4版本,叫做IPv4;IPv6目前还没有全面普及,接下来,我们主要讨论IPv4。
- IP地址范围从0.0.0.0 到255.255.255.255;分四个字节,每个字节范围是0-255;所以全世界最多只有42.9亿个IPv4的地址。
- 每个国家能使用的IP地址都是由IANA组织分配管理的。
- IP地址就像身份证一样由相应的部分组成
同理,IP地址是由网络号和主机号组成。
例如:202.112.81.34指的就是202.112.81.0这个网络的第34号机。
网络号:用于识别主机所在的网络;
主机号:用于识别该网络中的主机。当分配给主机号的二进制位越多,则能标识的主机数就越多,相应地能标识的网络数就越少,反之亦然。
在详细讲解IP地址之前,先普及一点网络基础知识:请看我的文章
1.为什么要将IP地址设计成由网络号和主机号组成呢?
上面详细讲解了二进制的运算,现在在讲解IP地址的时候,会用到二进制的运算以及进制的转换。
上面提到,IP是由网络号和主机号组成;网络号可以方便寻址,即查找计算机属于哪个网络:北京、上海、还是广州网络;由于知道了IP属于哪个网络,我们就会将信息发送给哪个网络,这样就能避免将信息广播给所有的主机。而主机号可以限制一个局域网最多能容纳多少个主机。
2.那我们如何知道一个IP地址到底是属于哪个网络呢?
这个就需要借助一个叫做“子网掩码”的东西,子网掩码(子网掩码与IP一样也是4字节、32个bit位)的二进制格式是:前n位必须是连续的1,后面32-n位必须是连续的0;比如你的子网掩码是255.255.255.192,这个是有效的,因为255.255.255.192换算成二进制是这样的:11111111.11111111.11111111.11000000。你可以看到这里的1,和0都是连续的,这样的子网掩码才是有效的。
再比如一个子网掩码是这样的:11111111.11111111.11111111.10100000,这个子网掩码肯定是无效的,因为1和0都不是全部连续的。
一个字节是8位,最小00000000的十进制是0,最大11111111的十进制是255;所以我们经常看到子网掩码是255.0.0.0、255.255.0.0、255.255.255.0这样的。
3.那么我们如何判断IP属于哪个子网呢?
前面我们说子网掩码前面的n位必须是连续的1,后面32-n位都为0,子网掩码与IP进行“与运算”,最后保留的就是就是IP前n位的0和1,比如IP 240.183.71.5与255.255.192.0子网掩码进行与运算,得出的结果是240.183.64.0;
如果子网掩码是255.255.0.0,上图的IP是240.183.71.5;两个进行与运算,得出240.183.0.0;则240.183.71.5属于240.183.0.0子网。是不是很奇怪?子网掩码的不同决定了IP将属于不同子网,其实这是正确的,我们可以这样理解,240.183.64.0这个子网属于240.183.0.0这个大的子网。
前面我们说过,如果根据mac地址寻找目标,就只能进行广播,这样会导致广播风暴。所以我们抽象了另一个概念“IP地址”来标识我们的电脑,交换机根据mac地址工作;那么我们有必要生产一个新设备---路由器,根据IP地址进行工作,对IP进行路由管理。
有了IP,一切就简单了,我们可以避免广播风暴,路由器、网桥等都具有隔绝局域网的功能,通过IP路由数据,不会进行广播。
路由器里面有一张表---路由表,记录每个网口连接的网络或者目标主机;如此,我们的IP自然设计成网络号和主机号;每个请求都会带上目的IP地址,路由器根据子网掩码、目的IP地址计算出该IP属于哪个网络,然后路由器根据目的IP所属网络找到对应网络的网口,然后将消息发送出去,这就避免了粗暴的广播方式。
举例:上海B发送一个消息给“北京的局域网2的A”,在发送消息的时候,会携带目的IP、源IP、目的mac地址(实际生活中这里的mac地址是路由器或网关的mac地址)、源mac地址;
那么这里有个问题:源mac地址和源IP都很好获得,目的IP和目的Mac地址怎么获得,目的IP地址可以通过别人告诉我们(后面我们会讲如何告诉我们),那么目的mac地址怎么获得呢?
其实这里的mac地址不是我们“北京的局域网2的A”的Mac地址,而是我们网关路由器的mac地址,那这个网关服务器的地址怎么获得呢?请看章节《我们的上网流程》。
我们已经获得了网关服务器的mac地址,现在发送信息:
消息传到第一个路由器的时候,解析信息包,根据目的IP(240.183.64.1)、子网掩码(255.255.0.0),查询下面的路由表后知道,需要把信息包发送给网口1;
然后发送到北京局域网的路由器,我们这里叫路由器2,这个路由器有个特殊的功能,它记录局域网中Mac地址与IP的对应关系,如此,路由器2就可以解析信息包,拿到目的IP,然后从这个特殊的Mac地址与IP的对应关系表里面查到目的IP对应的Mac地址,然后将信息包里面的目的mac地址换成这个mac地址,如此当信息到达主机A的时候,根据mac地址对比,发现信息是发给自己的,接收处理。
4.题外话:互联网号码分配机构对IP地址的管理办法
1)IP地址的分类
A类保留给政府机构;
B类分配给中等规模的公司;
C类分配给任何需要的人;
D类用于组播;
E类用于计算机网络实验和开发;
各类可容纳的地址数目不同。
2)内网IP和公网IP(外网IP)
IPv4一共只有40多亿个IP,全世界这么多人,很多人有很多手机,很多电脑,IP明显不够用,互联网号码分配机构为了解决IP不够用这个问题,把部分IP作为内网IP,部分作为保留IP,部分作为公网IP,部分作为实验IP,部分作为组播IP等;
比如IP地址10.0.0.1是内网IP,其可以在局域网A和局域网B使用,而243.107.230.1作为公网IP,只能被一台主机使用;将部分IP作为内网来使用,这样能节省IP的使用;
如上图,局域网A的主机10.0.0.1发送一个信息出去,会带上一个端口(在计算机里面,一个端口对应一个实际的应用),到达路由器A,比如这个端口是30,路由器A接收到信息后,会找一个路由器中未被占用的端口,比如10端口,与局域网的10.0.0.1:30对应起来,并生成一条记录;然后路由器会更改发送信息的源IP地址。
信息应答就是反解析。
3)A、B、C、D、E五类IP地址的特征
本质上IP地址是4字节的0和1构成的,1字节等于8个0或1;
所以我们规定如下(这是规定,没有什么技巧可言,记住就可以了)
A类地址的第一位总是0,
B类地址的前两位总是10,
C类地址的前三位总是110,
D类地址的前四位总是1110,
E类地址的前四位总是1111,第一个字节的范围:11110 - 11111110(240-254)。
- A类IP地址
如图所示:
A类IP地址第1字节为网络地址,其它3个字节为主机地址;所以子网掩码是255.0.0.0;
因为规定A类的第一个bit位为0,则bit的取值范围为:
00000000.00000000.00000000.00000000~01111111.11111111.11111111.11111111
十进制就是:0.0.0.0~127.255.255.255。
A类地址里的那些做特殊处理的地址:
以上,A类地址能在公网使用的A类IP地址总个数为:2亿多个。
- B类IP地址
如图所示:
B类IP地址前2个字节为网络地址,其它2个字节为主机地址;所以子网掩码是255.255.0.0;
因为规定B类的前2个bit位为固定10,则bit的取值范围为:
10000000.00000000.00000000.00000000~10111111.11111111.11111111.11111111
十进制就是:128.0.0.0 ~ 191.255.255.255。
B类地址里的那些做特殊处理的地址:
能在公网中使用的B类IP地址个数为: 1亿多个。
- C类IP地址
C类地址前3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110;所以子网掩码是255.255.255.0。
因为规定C类的前3个bit位为固定110,则bit的取值范围为:
11000000.00000000.00000000.00000000~11011111.11111111.11111111.11111111
十进制就是:192.0.0.0 ~ 223.255.255.255。
C类地址里的那些做特殊处理的地址:
- D类IP地址
D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
因为规定C类的前3个bit位为固定110,则bit的取值范围为:
11100000.00000000.00000000.00000000~11101111.11111111.11111111.11111111
十进制就是:224.0.0.0 ~ 239.255.255.255。
D类IP地址是组播地址;当一台主机加入一个组播组后,它既有一个本机的IP地址,同时也有一个组播组的D类IP地址,对于目的地址是这两个地址的IP数据报,这台主机都会接收。例如,224.0.0.1是所有主机组,包括本网段中所有参加组播的主机;224.0.0.2表示本地网络中所有参加组播的路由器。而其余的组播组可以由应用程序随时使用,不受限制。
- E类IP地址
没有网络号和主机号,除非你在研究或者开发计算机网络,否则你不会遇到这样的网络。
4)每个国家的IP地址都是有范围的,拥有多少,由互联网号码分配机构管理
5.端口号
上面我们抽象出了IP地址,使用其可以进行很好的找到主机属于哪个网络,然后通过mac地址可以找到最终的主机。这个时候微信和QQ同时装进了电脑了,信息被主机接收,怎么判断是发送给微信的还是QQ的呢?
聪明机智的工程师想到给电脑上的每个应用编个号,然后再在电脑里面建立一个对应关系,不就可以了吗?这个编号就是“网络端口”。
网络端口是一个数字,其范围为0到65535。端口是编号,当然就是一个端口对应一个应用!
当我们的信息通过QQ发送出去的时候,为了让对端的电脑知道这个信息是由哪个应用来处理,需要把目的端口号放在信息包里;为了让对端的电脑知道是哪个应用发给我的信息,需要把源端口号也放在信息里面。
另一边就是一个反解析的过程:
总结:
- 信息的传输需要传输介质,传输介质分为有线传输介质和无线传输介质。
- 要将计算机连起来,可以互相通信,那么组网方式有:星形、环线型、树形、总线型、网型、混合型等6种拓扑类型。
- 信息是如何传输的,用到了mac地址、IP地址、端口等
- 信息其实是0和1组成,而0和1只是电平的高低,波形的高低等。
- 二进制、八进制、十进制、十六进制的相互转换。
- 二进制的运算:与元算、异或运算、或运算、加法和减法运算。
- IP和子网掩码的关系。
- 网络设备:中继器、交换机、路由器等。