那么,怎样才能从IP地址,判断两台计较机是否属于同一个子网络呢?这就要用到另外一个参数"子网掩码"(subnet mask)。
所谓"子网掩码",就是暗示子网络特征的一个参数。它在形式上同等于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为 0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是 11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
知道"子网掩码",我们就可以判断,任意两个IP地址是否处在同一个子网络。体例是将两个IP地址与子网掩码别离进行AND运算(两个数位都为1,运算成果为1,不然为0),然后比较成果是否相同,如果是的话,就表白它们在同一个子网络中,不然就不是。
比如,已知IP地址172.16.254.1和172.16.254.233的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?二者与子网掩码别离进行AND运算,成果都是172.16.254.0,因此它们在同一个子网络。
总结一下,IP协议的作用主要有两个,一个是为每一台计较机分派IP地址,另外一个是确定哪些地址在同一个子网络。
4.3 IP数据包
按照IP协议发送的数据,就叫做IP数据包。不难想象,其中一定包含IP地址信息。
可是前面说过,以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?
答复是不需要,我们可以把IP数据包直接放进以太网数据包的"数据"部分,因此完全不消修改以太网的规格。这就是互联网分层布局的益处:上层的变动完全不涉及下层的布局。
具体来讲,IP数据包也分为"标头"和"数据"两个部分。
"标头"部分主要包含版本、长度、IP地址等信息,"数据"部分则是IP数据包的具体内容。它放进以太网数据包后,以太网数据包就酿成了下面这样。
IP数据包的"标头"部分的长度为20到60字节,整个数据包的总长度最年夜为65,535字节。因此,理论上,一个IP数据包的"数据"部分,最长 为65,515字节。前面说过,以太网数据包的"数据"部分,最长只有1500字节。因此,如果IP数据包逾越了1500字节,它就需要朋分成几个以太网 数据包,分隔发送了。
4.4 ARP协议
关于"网络层",还有最后一点需要说明。
因为IP数据包是放在以太网数据包里发送的,所以我们必须同时知道两个地址,一个是对方的MAC地址,另外一个是对方的IP地址。通常情况下,对方的IP地址是已知的(后文会诠释),可是我们不知道它的MAC地址。
所以,我们需要一种机制,能够从IP地址取得MAC地址。
这里又可以分成两种情况。第一种情况,如果两台主机不在同一个子网络,那么事实上没有体例取得对方的MAC地址,只能把数据包传送到两个子网络毗连处的"网关"(gateway),让网关去措置。
第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,取得对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包 中),其中包含它所要查询主机的IP地址,在对方的MAC地址这一栏,填的是FF:FF:FF:FF:FF:FF,暗示这是一个"广播"地址。它所在子网 络的每一台主机,城市收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果二者相同,都做出答复,向对方述说自己的MAC地址,不然就抛弃 这个包。
总之,有了ARP协议之后,我们便可以取得同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。
五、传输层
5.1 传输层的由来
有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上成立通信。
接下来的问题是,同一台主机上有许多法度都需要用到网络,比如,你一边阅读网页,一边与朋友在线聊天。当一个数据包从互联网上发来的时候,你怎么知道,它是暗示网页的内容,仍是暗示在线聊天的内容?
也就是说,我们还需要一个参数,暗示这个数据包到底供哪个法度(过程)使用。这个参数就叫做"端口"(port),它其实是每一个使用网卡的法度的编号。每个数据包都发到主机的特定端口,所以不合的法度就可以取到自己所需要的数据。