2013-08-22 12:42:26


  • 3.4 子网寻址

子网编码:不是把IP地址看成由单纯的网络号和主机号组成,我们把主机号再分成子网号和主机号。这样做是因为,A、B类地址为主机号分配了太多的空间,可分别容纳的主机数为224-2和216-2(由于全0和全1的主机号都是无效的,所以我们把总数减2)。但是这么多主机肯定用不完,所以我们把这个蛋糕再切小一点。这种新的分配方法由管理员来定。

  上图是一个B类网络地址,原本16位主机号被分成了8位子网号和8位主机号,于是就有了254个子网和254台主机。但是我们并不要求一定要按字节(8 + 8)来分配,我们可以按位随意分配(但是子网号和主机号都不能少于2位)。

Q:30个C类地址,和包含30个子网的B类地址那个比较好用呢?

A:我们不说那一个好用,各有各的优点。但是相比于30个C类地址,分成子网后的B类地址,肯定会比部分之前损失一些可使用的地址(分网后主机号全0和全1的不能用了)。但子网对外部路由器来说隐蔽了内部网络组织的细节(外网不知到内网是怎么分的,因为外网的数据报是先发给网关gateway,然后网关解析子网地址,发给相应的主机),这对信息安全有一定的意义。其次,子网划分缩减了路由表的规模(在10.8小结,介绍用C类地址也可以所见路由表的技术)。例如,B类地址140.252被分成了若干子网的事实对于所有子网以外Internet路由器都是透明的。为了到达IP地址开始部分为140.252的主机,外部路由器只需要知道通往IP地址140.252.104.1(gateway)的路径。这就是说,对于网络140.252只需一个路由表目,而如果采用30个C类地址,则需要30个路由表目。

(粗线——以太网,虚线——点对点链路)

如上图所示:一份来自Internet的数据报到达gateway,它的目的地值是140.252.57.1。路由器gateway需要知道子网号是57,然后把它送到kpno。同样,kpno必须把数据报送到R55,最后由R55把它送到R57。

  • 3.5 子网掩码

Q:主机是怎么知道自己的IP地址的?

A:任何主机在开机的时候都会进行‘指定主机IP地址’的工作,大多数系统把IP地址存在一个磁盘文件里供引导时读用。在第5章中,我们会介绍对于一个没有磁盘保存这种文件的系统是如何在引导时知道自己的IP地址的。

子网掩码:除了IP地址之外,主机还需知道有多少比特用于子网号及多少比特用于主机号。这是在引导过程中通过子网掩码来确定的。子网掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。子网掩码经常采用十六进制来表示,特别是当界限不是一个字节时。

  给定IP地址和子网掩码后,主机就可以确定IP数据报的目的是:(1)本子网上的主机;(2)本网络中其他子网中的主机;(3)其他网路的主机。如果知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位可以得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线。下图为举例:

  • 3.6 特殊情况的IP地址

上图中:0表示全0,-1表示全1,netid、subnetid和hostid分别表示不为全0或全1的对应字段。子网号栏为空表示该地址没有进行子网划分。

我们把表分成3部分:头两项为特殊的源地址、中间项为环回地址、最后四项为广播地址。

源地址:网络号为0,是主机在用BOOTP协议确定本机IP地址过程中的初始地址。

广播地址:12章会讲~

  • 3.7 一个子网的例子

  这个例子是文中采用的子网,以及如何使用两个不同的子网掩码。本例中,数据报经过140.252.104.1的路由器传进来,到经过140.252.1的子网,进入我们例子中要讨论的140.252.13的子网。但是这个子网中包含两个网络——以太网和SLIP子网,这样的话原来的子网划分就无法区分这两个网络,为了不让主机跨越不同的网络就要使用不同的子网号,我们的解决方法是将子网号从8位扩充为11位,把主机号减为5位。这就叫做变长子网,我们的第二个子网掩码是255.255.255.224。

  11位子网号中的前8bit始终是13。在剩下的3bit中,我们用二进制001表示以太网,010表示点对点SLIP链路。这个变长子网掩码在140.252网络中不会给其他主机和路由器带来问题——只要目的是子网140.252.13的所有数据报都传给路由器sun(IP地址是140.252.1.29),如上图所示。如果sun知道子网13中的主机有11bit子网号,那么一切都好办了。请看下表:

  我们看到sun和bsdi都有两个IP地址,因为它们既是主机又是路由器,所以各有两个接口。这个表中的最后一行是图3-10中的广播地址140.252.13.63:它根据以太网子网号(140.252.13.32)和图3-11中的低5位置1(16+8+4+2+1=31)得来的,这个地址被称作以子网为目的的广播地址(subnet-directed broadcast address)。

『TCP/IP详解——卷一:协议』读书笔记——09的更多相关文章

  1. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  2. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——18

    2013-08-27 15:44:52 第7章 Ping程序 7.1 引言 “ping”这个名字来源于声纳定为操作.Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达.该程序发送 ...

  4. 『TCP/IP详解——卷一:协议』读书笔记——14

    2013-08-25 11:32:06 第5章 RARP:逆地址解析协议 5.1 引言 具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址.但是无盘机,如X终端或无盘工作站,则需要采用其 ...

  5. 『TCP/IP详解——卷一:协议』读书笔记——13

    2013-08-24 16:03:39 4.6 ARP代理 ARP代理(Proxy ARP):如果ARP请求是从一个网络的主机发往另一个网络上的主机,那么连接这两个网络的路由器就可以回答该请求.这样可 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——11

    2013-08-23 20:00:18 第4章 ARP:地址解析协议 4.1 引言 ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议. ...

  7. 『TCP/IP详解——卷一:协议』读书笔记——07

    2013-08-20 17:51:49 第三章 IP:网际协议 3.1 引言 IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP和IGMP数据都以IP数据报格式传输.再来看一下图 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——06

    2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...

  9. 『TCP/IP详解——卷一:协议』读书笔记——05

    2013-08-19 22:35:57 2.6 PPP:点对点协议 PPP点对点协议修改了SLIP协议中的所有缺陷: 1. 在串联链路上封装IP数据报的方法.PPP即支持数据为8位&无奇偶检验 ...

  10. 『TCP/IP详解——卷一:协议』读书笔记——04

    2013-08-18 16:31:17 第2章 链路层 2.1 引言 链路层主要有三个目的: 为IP模块发送和接受IP数据报 为ARP模块发送ARP请求和接受ARP应答 为RARP发送RARP请求和接 ...

随机推荐

  1. Archlinux KDE 添加中文语言包

    From: https://wiki.archlinux.org/index.php/KDE_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29#.E8.AF.AD. ...

  2. VBA_Excel_教程:过程,函数

    Sub s1() Debug.Print "s1" '调用过程:无括号,加call提升可读性 s2 Call s2 End Sub Sub s2() Debug.Print &qu ...

  3. JS宝典

    hammerjs 终止事件流 window.event.returnValue = false; return false; 页面显示调用方法.类似viewWillApper IOS和android表 ...

  4. jsp与Servlet

  5. SQL Server 之AdventureWorks 2008 安

    学习背景:<SQL Server 2008 编程入门经典> SQL Sever 版本 SQL Server 2008 R2 方法一: 1:AdventureWorks 2008 下载地址: ...

  6. Java系列笔记(1) - Java 类加载与初始化

    目录 类加载器 动态加载 链接 初始化 示例 类加载器 在了解Java的机制之前,需要先了解类在JVM(Java虚拟机)中是如何加载的,这对后面理解java其它机制将有重要作用. 每个类编译后产生一个 ...

  7. 在bootstrap ace样式框架上修改的后台管理型模板(Tab页后台管理模板)

    后台管理模板开始用frameset布局,但是有时候会遮挡比如上面导航或者左边导航的二级三级弹出菜单,因为宽度被限制了,所以有时候就用easyui或者ext的,但是样式不好看,然后看到了bootstra ...

  8. MFCC matlab code

    %function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filen ...

  9. Nginx配置文件(nginx.conf)配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...

  10. iOS崩溃日志记录工具--CrashlyTics

    http://try.crashlytics.com Crashlytics优势: 1.Crashlytics基本不会漏掉任何应用崩溃的信息 2.Crashlytics对崩溃日志管理很人性化,会根据崩 ...