子网对外部路由器来说隐藏了内部网络组织,只需一台路由器来提供Internet的接入,不用为每一个主机指定路由表目。例如

子网对于外部路由器是透明的,因此要到达IP地址开始部分为140.252的主机,外部路由器只需要知道通往IP地址140.252.104.1(gateway)的路径。

  子网对于内部路由器是不透明的,因此数据报到达gateway后,假设它的目的地址是140.252.57.1,gateway需要知道子网号是57,然后把它送到kpno,kpno也需要知道子网号是57,然后把它送到R55,最后由R55把它送到R57。

 


多少比特用于子网号及多少比特用于主机号是由子网掩码来确定的,子网掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。如下图:

子网掩码的例子:

 子网13中有两个分离的网络:以太网和slip子网,为了区分他们要分配不同的子网号,解决方法是把子网号从8bit扩充到11bit(剩下的3bit用于将子网再细分),把主机号从8bit减为5bit 。这就叫作变长子网(variable-length subnets):

 11位子网号中的前8bit始终是13。剩下的3bit中,用001(即.32)表示以太网,010(即.64)表示点对点SLIP链路。因此主机号加上子网号中主机号才是IP地址中的主机号。

表中的最后一行是广播地址140.252.13.63:它是根据以太网子网号(140.252.13.32)和主机号(低5位)置1(16+8+4+2+1=31)得来的。

 


在上述子网的sun主机执行ifconfig命令:

le0,sl0,lo0是网络接口的设备名,分别代表以太网,串行线路,环回接口。

  flags是网络接口状态,由7个十六进制数组成。
  下面是各个bit值代表的意义
    0x00000001 /* interface is up */
  0x00000002 /* broadcast address valid */
  0x00000004 /* turn on debugging */
  0x00000008 /* is a loopback net */
  0x00000010 /* interface is point-to-point link */
  0x00000020 /* avoid use of trailers */
  0x00000040 /* resources allocated */
  0x00000080 /* no address resolution protocol */
  0x00000100 /* receive all packets */
  0x00000200 /* receive all multicast packets */
  0x00000400 /* protocol code on board */
  0x00000800 /* supports multicast */
  0x00001000 /* multicast using broadcast address */
  0x00002000 /* non-unique address */
  0x00004000 /* DHCP controls this interface */
  0x00008000 /* do not advertise */
  0x00010000 /* Do not transmit packets */
  0x00020000 /* No address - just on-link su