㈠ 计算机网络自顶向下方法
计算机网络自顶向下方法如下:
自顶自下主要是一种算法的实现,在不知道结果的情况之下,使用一种方法进行贺数演算,得到一种正确的结果,也就可以命名用自顶向下的思想进行实现了。衫蚂
在方程式内,对于未知的结果也就是进行一种推算。可以使用算法,也可以使用方程式的方式。在中国最古老的方式,我们也都会知道,算法就是我国最为古老的算学方式。
实在不会的,也要记住演算的步骤,因为记忆或许就是算法的精要。我们在学习数学的时候,使用的方程并不要我们进行记忆,因为我们在进行计算的时候,都要写在作业本之上,所以相对于算法来说,简单实现一点,对于一种记忆来说,更为的困难了。不过笔记解决了这样的一种问题。
而古老的算法,这个X的过程,可能就在我们的内心吧。用笔画一画,或许我们也就明白了,不过真的要记忆这样一种完全的算法过程,也不是一件内容的事情。
㈡ 计算机网络
入门:《网络是怎么连接的》、《图解 TCP/IP 》、《图解 HTTP 》.
深入学习:
《 计算机网络:自顶向下 》
https://gaia.cs.umass.e/kurose_ross/wireshark.htm
https://media.pearsoncmg.com/ph/esm/ecs_kurose_compnetwork_8/cw/
《计算机网络》谢希仁的 ( 这个评价倒是还好,
《TCP/IP 详解 卷一:协议》
《 Computer Networks: A Systems Approach 》Larry L Peterson
《 Computer Networks 》 Andrew S.Tanenbaum ( 虽然是 AST 的, 但是好像不适合初学
《 Elements of Computer Networking: An Integrated Approach (Concepts, Problems and Interview Questions) 》 ( ? )
https://www.hu.com/question/19718686
https://www.hu.com/question/19774914
https://www.hu.com/question/22354846
我的东西主要是英文的 , 当然, 我也需要买中文, 但我的渠道英文电子书方便
" 其实觉得cs144的公开视频讲得挺一般的,但是cs144新的lab真的很棒 "
https://online.stanford.e/lagunita-learning-platform
https://www.hu.com/question/63658105
《图解 HTTP》
如果要入门 TCP/IP 网络模型,我推荐的是《图解 TCP/IP》
另外,你想了解网络是怎么传输,那我推荐《网络是怎样连接的》
入门:《网络是怎么连接的》、《图解 TCP/IP 》《图解 HTTP 》.
2.深入学习:《计算机网络:自顶向下》、《TCP/IP 卷一》
对于 TCP/IP 网络模型深入学习的话,推荐《计算机网络 - 自顶向下方法》,这本书是从我们最熟悉 HTTP 开始说起,一层一层的说到最后物理层的,有种挖地洞的感觉,这样的内容编排顺序相对是比较合理的。
但如果要深入 TCP,前面的这些书还远远不够,赋有计算机网络圣经的之说的《TCP/IP 详解 卷一:协议》这本书,
要说我看过最好的 TCP 资料,那必定是《The TCP/IP GUIDE》这本书了,目前只有英文版本的,而且有个专门的网址可以白嫖看这本书的内容,图片都是彩色,看起来很舒服很鲜明,小林之前写的 TCP 文章不少案例和图片都是参考这里的,这本书精华部分就是把 TCP 滑动窗口和流量控制说的超级明白,很可惜拥塞控制部分说的不多。
Wireshark
当然,计算机网络最牛逼的资料,那必定 RFC 文档,它可以称为计算机网络世界的“法规”,也是最新、最权威和最正确的地方了,困惑大家的 TCP 为什么三次握手和四次挥手,其实在 RFC 文档几句话就说明白了。
小白读 《网络是怎样链接的》,然后 《图解 HTTP 》 《图解 TCP/IP 》。如果想学术一点,《计算机网络:自顶向下方法 中文第六版》或者 (Computer Networking: A top-down Approach 7th)。再难点,T 大佬的 《计算机网络》(Computer Networks)
在计算机网络的学习中为大家推荐《计算机科学导论》。这本书用大量的篇幅介绍了计算机网络的内容,还详细地介绍了计算机科学目前发展的特点和现状,适合想要学习计算机网络的同学打基础使用。
https://book.douban.com/review/7443456/#comments
自顶向下方法有两本:Computer Networking: A Top-Down ApproachbyJames F. Kurose, Keith W. Ross 中文翻译: 计算机网络:自顶向下方法(楼主提到的是这个)
Computer Networks: A Top-Down ApproachbyBehrouz A. Forouzan, Firouz Mosharraf 中文翻译:计算机网络教程:自顶向下方法
思科实验模拟器EVE的安装与使用 https://zhuanlan.hu.com/p/166295824
思科CCNA命令大全 https://zhuanlan.hu.com/p/259820495
㈢ 计算机网络第四章(网络层)
4.1、网络层概述
简介
网络层的主要任务是 实现网络互连 ,进而 实现数据包在各网络之间的传输
这些异构型网络N1~N7如果只是需要各自内部通信,他们只要实现各自的物理层和数据链路层即可
但是如果要将这些异构型网络互连起来,形成一个更大的互联网,就需要实现网络层设备路由器
有时为了简单起见,可以不用画出这些网络,图中N1~N7,而将他们看做是一条链路即可
要实现网络层任务,需要解决一下主要问题:
网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
在数据链路层那课讲过的可靠传输,详情可以看那边的笔记:网络层对以下的 分组丢失 、 分组失序 、 分组重复 的传输错误采取措施,使得接收方能正确接受发送方发送的数据,就是 可靠传输 ,反之,如果什么措施也不采取,则是 不可靠传输
网络层寻址问题
路由选择问题
路由器收到数据后,是依据什么来决定将数据包从自己的哪个接口转发出去?
依据数据包的目的地址和路由器中的路由表
但在实际当中,路由器是怎样知道这些路由记录?
由用户或网络管理员进行人工配置,这种方法只适用于规模较小且网络拓扑不改变的小型互联网
另一种是实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法,而自动得出路由表中的路有记录,这种方法更适合规模较大且网络拓扑经常改变的大型互联网
补充 网络层(网际层) 除了 IP协议 外,还有之前介绍过的 地址解析协议ARP ,还有 网际控制报文协议ICMP , 网际组管理协议IGMP
总结
4.2、网络层提供的两种服务
在计算机网络领域,网络层应该向运输层提供怎样的服务(“ 面向连接 ”还是“ 无连接 ”)曾引起了长期的争论。
争论焦点的实质就是: 在计算机通信中,可靠交付应当由谁来负责 ?是 网络 还是 端系统 ?
面向连接的虚电路服务
一种观点:让网络负责可靠交付
这种观点认为,应借助于电信网的成功经验,让网络负责可靠交付,计算机网络应模仿电信网络,使用 面向连接 的通信方式。
通信之前先建立 虚电路 (Virtual Circuit),以保证双方通信所需的一切网络资源。
如果再使用可靠传输的网络协议,就可使所发送的分组无差错按序到达终点,不丢失、不重复。
发送方 发送给 接收方 的所有分组都沿着同一条虚电路传送
虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。
请注意,电路交换的电话通信是先建立了一条真正的连接。
因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样
无连接的数据报服务
另一种观点:网络提供数据报服务
互联网的先驱者提出了一种崭新的网络设计思路。
网络层向上只提供简单灵活的、 无连接的 、 尽最大努力交付 的 数据报服务 。
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
网络层不提供服务质量的承诺 。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
发送方 发送给 接收方 的分组可能沿着不同路径传送
尽最大努力交付
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的 主机中的运输层负责可靠交付(包括差错处理、流量控制等) 。
采用这种设计思路的好处是 :网络的造价大大降低,运行方式灵活,能够适应多种应用。
互连网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。
虚电路服务与数据报服务的对比
对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点时不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责
4.3、IPv4
概述
分类编制的IPv4地址
简介
每一类地址都由两个固定长度的字段组成,其中一个字段是 网络号 net-id ,它标志主机(或路由器)所连接到的网络,而另一个字段则是 主机号 host-id ,它标志该主机(或路由器)。
主机号在它前面的网络号所指明的网络范围内必须是唯一的。
由此可见, 一个 IP 地址在整个互联网范围内是唯一的 。
A类地址
B类地址
C类地址
练习
总结
IP 地址的指派范围
一般不使用的特殊的 IP 地址
IP 地址的一些重要特点
(1) IP 地址是一种分等级的地址结构 。分两个等级的好处是:
第一 ,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
第二 ,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口 。
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为 多归属主机 (multihomed host)。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此 一个路由器至少应当有两个不同的 IP 地址 。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络 ,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
划分子网的IPv4地址
为什么要划分子网
在 ARPANET 的早期,IP 地址的设计确实不够合理:
IP 地址空间的利用率有时很低。
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
两级的 IP 地址不够灵活。
如果想要将原来的网络划分成三个独立的网路
所以是否可以从主机号部分借用一部分作为子网号
但是如果未在图中标记子网号部分,那么我们和计算机又如何知道分类地址中主机号有多少比特被用作子网号了呢?
所以就有了划分子网的工具: 子网掩码
从 1985 年起在 IP 地址中又增加了一个“ 子网号字段 ”,使两级的 IP 地址变成为 三级的 IP 地址 。
这种做法叫做 划分子网 (subnetting) 。
划分子网已成为互联网的正式标准协议。
如何划分子网
基本思路
划分子网纯属一个 单位内部的事情 。单位对外仍然表现为没有划分子网的网络。
从主机号 借用 若干个位作为 子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的 目的网络号 net-id,先找到连接在本单位网络上的路由器。
然后 此路由器 在收到 IP 数据报后,再按 目的网络号 net-id 和 子网号 subnet-id 找到目的子网。
最后就将 IP 数据报直接交付目的主机。
划分为三个子网后对外仍是一个网络
优点
1. 减少了 IP 地址的浪费 2. 使网络的组织更加灵活 3. 更便于维护和管理
划分子网纯属一个单位内部的事情,对外部网络透明 ,对外仍然表现为没有划分子网的一个网络。
子网掩码
(IP 地址) AND (子网掩码) = 网络地址 重要,下面很多相关知识都会用到
举例
例子1
例子2
默认子网掩码
总结
子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。
若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。
无分类编址的IPv4地址
为什么使用无分类编址
无分类域间路由选择 CIDR (Classless Inter-Domain Routing)。
CIDR 最主要的特点
CIDR使用各种长度的“ 网络前缀 ”(network-prefix)来代替分类地址中的网络号和子网号。
IP 地址从三级编址(使用子网掩码)又回到了两级编址 。
如何使用无分类编址
举例
路由聚合(构造超网)
总结
IPv4地址的应用规划
给定一个IPv4地址快,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中不同网络,进而可以给各网络中的主机和路由器接口分配IPv4地址
定长的子网掩码FLSM(Fixed Length Subnet Mask)
划分子网的IPv4就是定长的子网掩码
举例
通过上面步骤分析,就可以从子网1 ~ 8中任选5个分配给左图中的N1 ~ N5
采用定长的子网掩码划分,只能划分出2^n个子网,其中n是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的IP地址数量相同
但是也因为每个子网所分配的IP地址数量相同,不够灵活,容易造成IP地址的浪费
变长的子网掩码VLSM(Variable Length Subnet Mask)
无分类编址的IPv4就是变长的子网掩码
举例
4.4、IP数据报的发送和转发过程
举例
源主机如何知道目的主机是否与自己在同一个网络中,是直接交付,还是间接交付?
可以通过 目的地址IP 和 源地址的子网掩码 进行 逻辑与运算 得到 目的网络地址
如果 目的网络地址 和 源网络地址 相同 ,就是 在同一个网络 中,属于 直接交付
如果 目的网络地址 和 源网络地址 不相同 ,就 不在同一个网络 中,属于 间接交付 ,传输给主机所在网络的 默认网关 (路由器——下图会讲解),由默认网关帮忙转发
主机C如何知道路由器R的存在?
用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络的一个路由器的接口,由该路由器帮忙进行转发,所指定的路由器,也被称为 默认网关
例如。路由器的接口0的IP地址192.168.0.128做为左边网络的默认网关
主机A会将该IP数据报传输给自己的默认网关,也就是图中所示的路由器接口0
路由器收到IP数据报后如何转发?
检查IP数据报首部是否出错:
若出错,则直接丢弃该IP数据报并通告源主机
若没有出错,则进行转发
根据IP数据报的目的地址在路由表中查找匹配的条目:
若找到匹配的条目,则转发给条目中指示的吓一跳
若找不到,则丢弃该数据报并通告源主机
假设IP数据报首部没有出错,路由器取出IP数据报首部各地址字段的值
接下来路由器对该IP数据报进行查表转发
逐条检查路由条目,将目的地址与路由条目中的地址掩码进行逻辑与运算得到目的网络地址,然后与路由条目中的目的网络进行比较,如果相同,则这条路由条目就是匹配的路由条目,按照它的下一条指示,图中所示的也就是接口1转发该IP数据报
路由器是隔离广播域的
4.5、静态路由配置及其可能产生的路由环路问题
概念
多种情况举例
静态路由配置
举例
默认路由
举例
默认路由可以被所有网络匹配,但路由匹配有优先级,默认路由是优先级最低的
特定主机路由
举例
有时候,我们可以给路由器添加针对某个主机的特定主机路由条目
一般用于网络管理人员对网络的管理和测试
多条路由可选,匹配路由最具体的
静态路由配置错误导致路由环路
举例
假设将R2的路由表中第三条目录配置错了下一跳
这导致R2和R3之间产生了路由环路
聚合了不存在的网络而导致路由环路
举例
正常情况
错误情况
解决方法
黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,IP数据报进入它后就被丢弃
网络故障而导致路由环路
举例
解决方法
添加故障的网络为黑洞路由
假设。一段时间后故障网络恢复了
R1又自动地得出了其接口0的直连网络的路由条目
针对该网络的黑洞网络会自动失效
如果又故障
则生效该网络的黑洞网络
总结
4.6、路由选择协议
概述
因特网所采用的路由选择协议的主要特点
因特网采用分层次的路由选择协议
自治系统 AS :在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
自治系统之间的路由选择简称为域间路由选择,自治系统内部的路由选择简称为域内路由选择
域间路由选择使用外部网关协议EGP这个类别的路由选择协议
域内路由选择使用内部网关协议IGP这个类别的路由选择协议
网关协议 的名称可称为 路由协议
常见的路由选择协议
㈣ 计算机网络自顶向下方法--网络层
R1. 我们回顾一下本书中使用的某些术语。前面讲过,运输层的分组名称是报文段,数据链路层的分组名字是帧。网络层的分组名字是什么?前面讲过,路由器和链路层交换机都称为分组交换机。路由器和链路层交换机间的根本区别是什么?回想我们对数据报网络和虚电路网络都使用术语路由器。
R2. 在数据报网络中,网络层最重要的两个功能是什么?在虚电路网络中,网络层的3个最重要的功能是什么?
R3. 路由选择和转发的区别是什么?
R4. 在数据报网络和虚电路网络中,路由器都使用转发表吗?如果是,描述用于这两类网络的转发表。
R5. 描述某些网络层能为单个分组提供的某些假想的服务。对于分组流进行相同的描述。因特网的网络层为你提供了这些假想服务吗?ATM的CBR服务模型提供了该假想服务吗?ATM的ABR服务模型提供类该假想服务吗?
R6. 列出某些得益于ATM的CBR服务模型的应用。
R7. 讨论为什么在高速路由器的每个输入端口都存储转发表的影子副本。
R8. 4.3节中讨论了3类交换结构。列出并简要讨论每一类交换结构。哪一种(如果有的话)能够跨越交换结构并行发送多个分组?
R9. 描述在输入端口会出现分组丢失的原因。描述在输入端口如何消除分组丢失(不使用无限大缓存区)。
R10. 描述在输出端口出现分组丢失的原因。通过增加交换结构速率,能够防止这种丢失吗?
R11. 什么是HOL阻塞?它出现在输入端口还是输出端口?
R12. 路由器有IP地址吗?如果有,有多少个?
R13. IP地址223.1.3.27的32比特二进制等价形式是什么?
R14. 考察使用DHCP获得它的IP地址,网络掩码,默认路由器和其本地DNS服务器的IP地址的主机。列出这些值。
R15. 假设在一个源主机和一个目的主机之间有3台路由器。不考虑分片,一个从源主机发送给目的主机的IP报文将通过多少个端口?为了将数据报从源移动到目的地需要检索多少个转发表?
R16. 假设某应用每20ms生成一个40字节的数据块,每块封装在一个TCP报文中,TCP报文再封装在一个IP数据报中。每个数据报的开销有多大?应用数据所占的百分比是多少?
R17. 假设主机A向主机B发送封装在一个IP数据报中的TCP报文段。当主机B接收到该数据报时,主机B中的网络层应该如何知道它应当将该报文段(即数据报的有效载荷)交给TCP而不是UDP或某个其他东西呢?
R18. 假定你购买了一个无线路由器并将其与电缆调制解调器相连,并且你的ISP动态地为你连接的设备(即你的无线路由器)分配一个IP地址。还假定你家有5台PC,均使用802.11以无线方式与该无线路由器相连。怎样为这5台PC分配IP地址?该无线路由器使用NAT吗?为什么?
R19. 比较IPv4和IPv6首部字段。它们有某些字段是相同的吗?
R20. 有人说当IPv6通过IPv4路由器建隧道时。IPv6将IPv4隧道作为链路层协议。你同意这种说法吗?为什么?
R21. 比较和对照链路状态和距离向量路由选择算法?
R22. 讨论因特网的等级制组织是怎样使得其能够扩展为数以百万计用户的。
R23. 每个自治系统使用相同的AS内部路由选路算法是必要的吗?为什么?
R24. 考虑图4-37。从D中的初始表开始,假设D收到来自A的下面的通告:
D中的表会改变吗?如果是,怎样变化?
R25. 比较RIP和OSPF使用的通告。
R26. 填空:RIP通告通常宣称到各目的地的跳数。另一方面,BGP则是通告到各目的地的_____?
R27. 为什么在因特网中用到了不同类型的AS间与AS内部选路协议?
R28. 为什么策略考虑对于AS内部协议(如OSPF和RIP)与对于AS间路由选择协议(如BGP)一样重要呢?
R29. 定义和对比下列术语:子网,前缀和BGP路由。
R30. BGP是怎样使用NEXT-HOP属性的?它是怎样使用AS-PATH属性的?
R31. 描述一个较高层ISP的网络管理员在配置BGP时是如何实现策略的。
TODO----HERE
4.6.32 通过多个单播实现广播抽象与通过支持广播的单个网络(路由器)实现广播抽象之间有什么重要区别吗?
答:N次单播效率低,需要知道接收者的地址,消耗大。但是使用广播的话可以通过洪泛方法发送消息。
4.6.33 对于我们学习的3种一般的广播通信方法(无控制洪泛,受控洪泛和生成树广播),下列说法正确吗?可以假定分组不会因缓存溢出而丢失,所有分组以它们发送的顺序交付给链路。
a.一个节点可能接收到同一个分组的多个拷贝。
b.一个节点可能跨越相同的出链路转发多个分组的拷贝。
答:无控制洪泛:a对,b对。受控洪泛:a对,b错。生成树广播:a错,b错。
4.6.34 当一台主机加入一个多播组时,它必须将其IP地址改变为它所加入的多播组的地址吗?
答:对错误。
4.6.35 IGMP和广域多播选路协议所起的作用是什么?
答:IGMP运行在一台主机与其直接相连的路由器之间。IGMP允许主机指定路由器要加入的组播网。然后由组播路由器与运行组播路由协议的其他组播路由器一起工作。
4.6.36 在多播选路场合中,一棵组共享的树与一颗基于源的树之间有什么区别?
答:一个组共享的树来为组中所有发送方分发流量,一个是为每个独立的发送方构建一颗特定源的选路树。
㈤ 我们回顾在本书中使用的某些术语
我们在回顾在本书中使用的某些术语。前面讲过运输层的分组名字是报文段,数据链路层的分组名字是帧。网络层的分组名字是什么?前面讲过路由器和链路层交换机都被称为分组交换机。路由器与链路层交换机的根本区别是什么?
网络层的分组名字是数据报。
路由器和链路层交换机的根本区别是它们服务于不同的网络层协议.
链路层交换机基于链路层帧中的字段值做出转发决定, 服务于第二层链路层;
路由器基于网络层数据报中的首部字段值做出转发决定, 服务于第三层网络层.
2.我们注意都网络层功能可被大体分为成数据平面功能和控制平面功能。数据平面的主要功能是什么?控制平面的主要功能呢?
数据平面:主要是转发。当有数据报进入路由器中,数据平面负责根据路由转发表把数据报从输入链路转发到合适的输出链路。
控制平面:控制平面的主要功能是填充路由表, 也就是决定一个数据报应该转发到哪里。
3.我们对网络层执行的转发功能和路由选择功能进行区别. 路由选择和转发的主要区别是什么?
转发功能是根据路由选择在路由器内部进行数据包的端口移动。用硬件实现。
路由选择是指确定分组从源到目的地所采取的端到端路径的网络范围处理过程.。用软件实现。
4.路由器中转发表的主要作用是什么?
数据报到达路由器时,首部的一个或多个字段在转发表中索引,根据索引结果找到输出端口。
5. 我们说过网络层的服务模型"定义发送主机和接收主机之间的端到端分组的传送特性".因特网的网络层的服务模型是什么? 就主机到主机数据报的传递而论, 因特网的服务模型能够保证什么?
服务模型是因特网的网络层提供了单一的服务, 称为尽力而为服务。什么也不能保证,就主机到主机数据报的传递而论, 因特网的服务模型什么也保证不了, 传送的分组既不能保证以它们发送的顺序被接收, 也不能保证它们最终交付; 既不能保证端到端时延, 也不能保证有最小的带宽。
㈥ 计算机网络自顶向下方法的图书目录
出版者的话
作译者简介
译者序
前言
第1章
计算机网络和因特网
1.1 什么是因特网
1.1.1 具体构成描述
1.1.2 服务描述
1.1.3 什么是协议
1.2 网络边缘
1.2.1客户机和服务器程序
1.2.2 接入网
1.2.3 物理媒体
1.3 网络核心
1.3.1 电路交换和分组交换
1.3.2 分组是怎样通过分组交换网形成其通路的
1.3.3 ISP和因特网主干
1.4 分组交换网中的时延、丢包和吞吐量
1.4.1 分组交换网中的时延概述
1.4.2 排队时延和丢包
1.4.3 端到端时延
1.4.4 计算机网络中的吞吐量
1.5 协议层次和它们的服务模型
1.5.1 分层的体系结构
1.5.2 报文、报文段、数据报和帧
1.6 攻击威胁下的网络
1.7 计算机网络和因特网的历史
1.7.1 分组交换的发展:1961~1972
1.7.2 专用网络和网络互联:1972~1980
1.7.3 网络的激增:1980~1990
1.7.4 因特网爆炸:20世纪90年代
1.7.5 最新发展
1.8 小结
本书路线图
课后习题和问题
复习题
习题
讨论题
Ethereal实验
人物专访
第2章
应用层
2.1 应用层协议原理
2.1.1 网络应用程序体系结构
2.1.2 进程通信
2.1.3 可供应用程序使用的运输服务
2.1.4 因特网提供的运输服务
2.1.5 应用层协议
2.1.6 本书涉及的网络应用
2.2 Web应用和HTTP协议
2.2.1 HTTP概况
2.2.2 非持久连接和持久连接
2.2.3 HTTP报文格式
2.2.4 用户与服务器的交互:cookie
2.2.5 Web缓存
2.2.6 条件GET方法
2.3 文件传输协议:FTP
2.4 因特网中的电子邮件
2.4.1 SMTP
2.4.2 与HTTP的对比
2.4.3 邮件报文格式和MIME
2.4.4 邮件访问协议
2.5 DNS:因特网的目录服务
2.5.1 DNS提供的服务
2.5.2 DNS工作机理概述
2.5.3 DNS记录和报文
2.6 P2P应用
2.6.1 P2P文件分发
2.6.2 在P2P区域中搜索信息
2.6.3 案例学习:Skype的P2P因特网电话
2.7 TCP套接字编程
2.7.1 TCP套接字编程
2.7.2 一个Java客户机 服务器应用程序例子
2.8 UDP套接字编程
2.9 小结
课后习题和问题
复习题
习题
讨论题
套接字编程作业
Ethereal实验
人物专访第3章 运输层第4章 网络层第5章 链路层和局域网第6章 无线网络和移动网络第7章 多媒体网络第8章 计算机网络中的安全第9章 网络管理参考文献
㈦ 《计算机网络-自顶向下方法》第四章-网络层 要点
网络层的作用:实现主机到主机的通信服务,将分组从一台发送主机移动到一台接收主机。
1、转发涉及分组在单一的路由器中从一条入链路到一条出链路的传送。
2、路由选择涉及一个网络的所有路由器,它们经路由选择协议共同交互,以决定分组从源到目的地结点所采用的路径。计算这些路径的算法称为路由选择算法。
每台路由器都有一张转发表,路由器通过检查到达分组首部字段的值来转发分组,然后使用该值在该路由器的转发表中索引查找。路由选择算法决定了插入路由器转发表中的值。
路由选择算法可能是集中式的,或者是分布式的。但在这两种情况下,都是路由器接收路由选择协议报文,该信息被用于配置其转发表。
网络层也能在两台主机之间提供无连接服务或连接服务。同在运输层的面向连接服务和无连接服务类似,连接服务需要握手步骤,无连接服务不需要握手。但它们之间也有差异:
1、 在网络层中,这些服务是由网络层向运输层提供的主机到主机的服务。在运输层中,这些服务则是运输层向应用层提供的进程到进程的服务。
2、 在网络层提供无连接服务的计算机网络称为数据报网络;在网络层提供连接服务的计算机网络称为虚电路网络。
3、 在运输层实现面向连接的服务与在网络层实现连接服务是根本不同的。运输层面向连接服务是在位于网络边缘的端系统中实现的;网络层连接服务除了在端系统中,也在位于网络核心的路由器中实现。(原因很简单:端系统和路由器都有网络层)
虚电路网络和数据报网络是计算机网络的两种基本类型。在作出转发决定时,它们使用了非常不同的信息。
IP地址有32比特,如果路由器转发表采用“蛮力实现”将对每个可能的目的地址有一个表项。因为有超过40亿个可能的地址,这种选择完全不可能(即使用二分查找也十分慢)。
我们转发表的表项可以设计为几个表项,每个表项匹配一定范围的目的地址,比如有四个表项
(你可能也会考虑到,IP地址有32比特,如果每个路由器设计为只有2个表项,那么也只需要有32个路由器就可以唯一确定这40亿个地址中的一个。)
最长前缀匹配规则,是在转发表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。这种规则是为了与因特网的编址规则相适应。
1、输入端口
“使用转发表查找输出端口”是输入端口最重要的操作(当然还有其他一些操作)。输入端口执行完这些所需的操作后,就把该分组发送进入交换结构。如果来自其他输入端口的分组当前正在使用交换结构,一个分组可能会在进入交换结构时被暂时阻塞,在输入端口处排队,并等待稍后被及时调度以通过交换结构。
2、交换结构
交换结构的三种实现方式
3、输出端口
分组调度程序 处理在输出端口中排队的分组
4、路由选择处理器
</br>
</br>
IP协议版本4,简称为IPv4;IP协议版本6,简称为IPv6。
如上图所示,网络层有三个主要的组件
1、IP协议
2、路由选择协议
3、ICMP协议 (Internet Control Message Protocol, 因特网控制报文协议)
</br>
不是所有链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。例如,以太网帧能够承载不超过1500字节的数据,而某些广域网链路的帧可承载不超过576字节的数据。
一个链路层帧能承载的最大数据量叫做最大传送单元(Maximun Transmission Unit, MTU)
所以链路层协议的MTU严格限制着IP数据报的长度。这也还不是主要的问题,问题在于发送方与目的地路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的MTU。
举个例子:假定从某条链路收到一个IP数据报,通过检查转发表确定出链路,并且该出链路的MTU比该IP数据报的长度要小。那么如何将这个过大的IP分组压缩进链路层帧的有效载荷字段呢?
解决办法是,将IP数据报中的数据分片成两个或更多个较小的IP数据报,用单独的链路层帧封装这些较小的IP数据报;然后向输出链路上发送这些帧。每个这些较小的数据报都被称为片(fragment)。
路由器完成分片任务。同时,为了使得网络内核保持简单,IPv4设计者把数据报的重组工作放到端系统中,而非放到网络路由器中。
前提:一个4000字节的数据报(20字节IP首部加上3980字节IP有效载荷)到达一台路由器,且必须被转发到一条MTU为1500字节的链路上。假定初始数据报贴上的标识号为777。
这意味着初始数据报中3980字节数据必须被分配到3个独立的片(其中的每个片也是一个IP数据报)
IP分片:
IP地址有32比特,分为网络号和主机号。
IP地址的网络部分(即网络号)被限制为长度为8、16或24比特,这是一种称为分类编址的编址方案。具有8、16和24比特子网地址的子网分别被称为A、B和C类网络。
但是它在支持数量迅速增加的具有小规模或中等规模子网的组织方面出现了问题。一个C类(/24)子网仅能容纳多大2^8 - 2 = 254台主机(2^8 = 256, 其中的两个地址预留用于特殊用途),这对许多组织来说太小了。然而一个B类(/16)子网可支持多达65534台主机,又太大了。这导致B类地址空间的迅速损耗以及所分配的地址空间的利用率低。
广播地址255.255.255.255。当一台主机发出一个目的地址为255.255.255.255的数据报时,该报文会交付给同一个网络中的所有主机。
某组织一旦获得了一块地址,它就可以为本组织内的主机与路由器接口逐个分配IP地址。既可手工配置IP地址,也可以使用动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)自动配置。DHCP还允许一台主机得知其他信息,如它的子网掩码、它的第一跳路由器地址(常称为默认网关)与它的本地DNS服务器的地址。
由于DHCP具有能将主机连接进一个网络相关方面的自动能力,它又被称为即插即用协议。
DHCP是客户-服务器协议。客户通常是新达到的主机,它要活的包括自身使用的IP地址在内的网络配置信息。在最简单的场合下,每个子网将具有一台DHCP服务器。如果在某子网中没有服务器,则需要一个DHCP中继代理(通常是一台路由器),这个代理知道用于该网络的DHCP服务器的地址。
DHCP协议工作的4个步骤:
网络地址转换(Network Address Translation, NAT)
ICMP通常被认为是IP的一部分,但从体系结构上将它是位于IP之上的,因为ICMP报文是承载在IP分组中的。即ICMP报文是作为IP有效载荷承载的,就像TCP与UDP报文段作为IP有效载荷被承载那样。
众所周知的ping程序发送一个ICMP类型8编码0的报文到指定主机。看到该回显请求,目的主机发回一个类型0编码0的ICMP回显回答。大多数TCP/IP实现直接在操作系统中支持ping服务器,即该服务器不是一个进程。
新型IPv6系统可做成向后兼容,即能发送、路由和接收IPv4数据报,要使得已部署的IPv4系统能够处理IPv6数据报,最直接的方式是采用一种双栈方法。
1、链路状态(Link State, LS)算法:属于全局式路由选择算法,这种算法必须知道网络中每条链路的费用。费用可理解为链路的物理长度、链路速度,或与该链路相关的金融上的费用。链路状态算法采用的是Dijkstra算法。
2、距离向量(Distance-Vector, DV)算法:属于迭代的、异步的和分布式的路由选择算法。
“迭代的”,是因为此过程一直要持续到邻居之间无更多信息要交换为止。
“异步的”,是因为它不要求所有结点相互之间步伐一致地操作。
“分布式的”,是因为每个结点都要从一个或多个直接相连邻居接收某些信息,执行计算,然后将其计算结果分发给邻居。
DV算法的方程:
其中,dx(y)表示从结点x到结点y的最低费用路径的费用,c(x, v)是结点x到结点v的费用,结点v指的是所有x的相连结点,所以x的所有相连结点都会用minv方程计算。
(N是结点(路由器)的集合,E是边(链路)的集合)
为了减少公共因特网的路由选择计算的复杂性以及方便企业管理网络,我们将路由器组织进自治系统。
在相同AS中的路由器全都运行同样的路由选择算法,且拥有彼此的信息。在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议。
当然,将AS彼此互联是必需的,因此在一个AS内的一台或多台路由器将有另外的任务,即负责向在本AS之外的目的地转发分组。这些路由器被称为网关路由器。
分为自治系统内部的路由选择和自治系统间的路由选择
1、因特网中自治系统内部的路由选择:路由选择信息协议(Routing Information Protocol, RIP)
2、因特网中自治系统内部的路由选择:开放最短路优先(Open Shortest Path First, OSPF)
3、自治系统间的路由选择:边界网关协议(Broder Gateway Protocol, BGP)
为什么要使用不同的AS间和AS内部路由选择协议?
实现广播的方法
1、无控制洪泛。该方法要求源结点向它的所有邻居发送分组的副本。当某结点接收了一个广播分组时,它复制该分组并向它的所有邻居(除了从其接收该分组的那个邻居)转发之。
致命缺点: 广播风暴 ,如果图具有圈,那么每个广播分组的一个或多个分组副本将无休止地循环。
2、受控洪泛。用于避免广播风暴,关键在于正确选择何时洪泛分组,何时不洪泛分组。受控洪泛有两种方法:序号控制洪泛、反向路径转发(Reverse Path Forwarding, RPF)
3、生成树广播。虽然序号控制洪泛和RPF能避免广播风暴,但是它们不能完全避免冗余广播分组的传输。
多播:将分组从一个或多个发送方交付到一组接收方
每台主机有一个唯一的IP单播地址,该单播地址完全独立于它所参与的多播组的地址。
因特网网络层多播由两个互补组件组成:因特网组管理协议(Internet Group Management Protocol, IGMP)和多播路由选择协议
IGMP只有三种报文类型:membership_query报文,membership_report报文,leave_group报文。
与ICMP类似,IGMP报文也是承载在一个IP数据报中。
因特网中使用的多播路由选择
1、距离向量多播路由选择协议
2、协议无关的多播路由选择协议
㈧ 计算机网络谢希仁编着的第六版第四章课后习题答案
第4 章 网络层
4-01网络层向上提供的服务有哪两种?试比较其优缺点。
答案:虚电路服务和数据报服务。
虚电路的优点:虚电路服务是面向连接的,网络能够保证分组总是按照发送顺序到达目的站,且不丢失、不重复,提供可靠的端到端数据传输;目的站地址仅在连接建立阶段使用,每个分组使用短的虚电路号,使分组的控制信息部分的比特数减少,减少了额外开销;端到端的差错处理和流量控制可以由分组交换网负责,也可以由用户机负责。虚电路服务适用于通信信息量大、速率要求高、传输可靠性要求高的场合。
虚电路的缺点:虚电路服务必须建立连接;属于同一条虚电路的分组总是按照同一路由进行转发;当结点发生故障时,所有通过出故障的结点的虚电路均不能工作。
数据报的优点:数据报服务不需要建立连接;每个分组独立选择路由进行转发,当某个结点发生故障时,后续的分组可以另选路由,因而提高了通信的可靠性。数据报服务的灵活性好,适用于传输可靠性要求不高、通信子网负载不均衡、需要选择最佳路径的场合。
数据报的缺点:数据报服务是面向无连接的,到达目的站时不一定按发送顺序,传输中的分组可能丢失和重复,提供面向无连接的、不可靠的数据传输;每个分组都要有目的站的全地址;当网络发生故障是,出故障的结点可能会丢失数据,一些路由可能会发生变化;端到端的差错处理和流量控制只由主机负责。
答案太多传不上来,留下邮箱可以发给你..........
㈨ 计算机网络自顶向下方法的介绍
《计算机网络自顶向下方法》是2009年机械工业出版社出版的图书,作者是库罗斯。本书是当前世界上最为流行的计算机网络教科书之一,采用了作者独创的自顶向下的方法来讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下讲解,强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和“创造”。本书的讲解以因特网为例,学以致用;注重教学法,深入浅出地重点讲解计算机网络的基本原理。第4版全面关注了网络安全问题;更新并扩展了无线网络的覆盖范围,增加了有关802.11(WiFi)、802.16(WiMAX)和蜂窝网络的新内容;增强了P2P应用程序的内容,包括文件共享协议、BitTorrent等文件分发协议以及Skype的IP话音等新型多媒体应用;更新了局域网和多媒体网络的章节,以反映这些领域中理论与实践的变化;第1章中增加了有关端到端吞吐量分析的新材料;全面修订并增加了新的课后5-7题,以及附加了循序渐进的Ethereal实验。
㈩ 计算机网络-4-4-转发分组,构建子网和划分超网
上图是一个路由器怎么进行分组转发的例子:有四个A类网络通过三个路由器连接在一起,每一个网络上都可能会有成千上万台主机。若路由表指出每一台主机该进行怎样的转发。则要维护的路由表是非常的庞大。 如果路由表指定到某一个网络如何转发,则路由表中只有4行,每一行对应一个网络。 以路由器2的路由表为例:由于R2同时连接在网络2和网络3上,因此只要目标主机在网络2或者网络3上,都可以通过接口0或者1或者路由器R2直接交付(当然还有使用ARP协议找到这些主机相应的MAC地址)。若目标主机在网络1中,则下一跳路由器为R1,其IP地址为20.0.0.7。路由器R2和R1由于同时连接在网络2上,因此从路由器2把转发分组给R1是很容易的。 我们应当注意到:每一个路由器至少都要拥有两个不同的IP地址。 总之,在路由表中,对每一条路由最主要的是以下两条信息: (目的网络,下一跳地址) 我们根据目的网络地址来确定下一跳路由器,这样可以得到以下结论:
虽然互联网上所有的分组转发都是 基于目的主机所在的网络 ,但是在大多数情况下都允许这样的实例: 对特定的主机指明一个路由 ,这种路由叫 特定主机路由 。采用特定主机路由可以使网络人员方便管理控制网络和测试网络
路由器还可以采用 默认路由 以减少路由表所占用的空间和搜索路由表所使用的时间。
当路由器接收到一个待转发的数据报,在从路由表中得出下一跳路由器的IP地址后,不是把这个地址写入IP数据报,而是送交 数据链路层的网络接口软件 ,网络接口软件把负责下一跳的路由器IP地址转化为硬件地址(必须使用ARP),将硬件地址写入MAC帧的首部,然后根据这个硬件地址找到下一跳路由器。由此可见,当发送一连串的数据报时,上述的这种查找路由表,用ARP得到硬件地址,把硬件地址写入MAC地址首部等过程,将不断地重复进行,造成了一定的开销。
根据以上几点,我们提出 分组转发算法:
这里我们需要强调一下,路由表并没有给分组指明某个网络的完整路径(即先经过哪一个路由器,然后再经过哪一个路由器,等等)。路由表指出,到达某个网络应该先到达某个路由器(下一条路由器),在到达下一跳路由器之后,再继续查找路由表,知道再下一步应当到达哪一个路由器。这样一步步的查找下去,直到最后到达目的网络。
为什么划分子网?
为解决上述问题,从1985年引出 子网络号字段 ,使得两级IP地址变为三级IP地址,这种做法叫做 划分子网(subnetting)【RFC950】 。
划分子网的基本思路:
划分子网的用例
如上图为某单位拥有一个B类IP地址,网络地址为145.13.0.0(网络号为145.13),凡是目的网络为145.13.x.x的数据报都会送到这个网络上路由器R1上。
现在把该网络划分为三个字网,这里假设子网络号占用8位,因此主机号就只剩下16-8=8位了,所划分的三个字网为145.13.3.0,145.13.7.0,145.3.21.0。路由器在接受到145.13.0.0上的路由器数据后,再根据数据报的目的地址把它转化到相应的子网。
总之,当没有划分子网的时候,IP地址是两节结构。划分子网后IP地址就变成了三级结构。划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。
假定有一个IP数据报(其目的地址为145.13.3.10)已经到达了路由器R1,那么这个路由器如何把它转发到子网145.13.3.0呢?
我们知道,从IP数据包报的首部无法看出源主机的目的主机所连接的网络是否进行了子网划分。这是因为32位IP地址本身以及数据报的首部没有包含任何关于子网划分的信息。因此必须另想办法,这就是使用 子网掩码 。
把三级IP地址的子网掩码和收到的目的地址的IP地址 逐位进行与(AND)运算,就可以立即得到网络地址,剩下的步骤就交给路由器处理分组。
使用子网掩码的好处是:不管网络有没有划分子网,只要把子网掩码和IP地址进行逐位 与(AND) 运算,就立即得出网络地址来,这样在路由器处理到来的分组时就可采取同样的做法。
在不划分子网时,为什么还要使用子网掩码?这就是为了更便于查找路由表。现在互联网规定:所有网络都必须使用子网掩码,同时在路由器的路由表中也必须有子网掩码这一栏。如果一个网路不划分子网,那么该网络的子网掩码就是用 默认的子网掩码 ,默认子网掩码中1的位置和IP地址中的网络号字段net-id正好相对应。因此,若用默认子网掩码和某个不划分子网的IP地址逐位相"与",就应该能够得出该IP地址的网络地址来,这样做可以不用查找该地址的类别位就能够知道这是哪一类的IP地址。显然:
图4-21是这三类IP地址的网络地址和相应的默认子网掩码:
子网掩码是一个网络或者一个子网的重要属性 。在RFC950成为互联网标准后,路由器在和相邻路由器交换路由信息时,必须把自己所在的网络(或子网)的子网掩码告诉相邻路由器,在路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。
例4-2:
已知IP地址是141.14.72.24,子网掩码是255.255.192.0,求网络地址:
解: 255.255.192.0的二进制:11111111 11111111 11000000 00000000
IP 141.14.72.24二进制: 11111111 11111111 01001000
00000000
将IP地址二进制与子网掩码二进制进行 与(AND)运算 为 ::11111111 11111111 11000000 00000000
即网络IP为:141.14.64.0
在划分子网的情况下,分组转发的算法必须作出改动。在使用子网划分后,路由表应该包含以下内容:
在划分子网的情况下,路由器转发分组的算法如下:
例4-4:
图4-24有三个字网,两个路由器,以及路由器R1的部分路由表。现在源主机H1向目的主机H2发送分组。试讨论R1收到H1向H2发送的分组后查路由表的过程。
解:
源主机H1向目标主机H2发送的分组的目的地址为128.30.33.138。
源主机H1把本子网的子网掩码255.255.255.128与H2的IP地址128.30.33.128相与得到128.30.33.128,它不等于H1的网络地址(128.30.33.0)。这说明主机H2与主机H1不在同一个网段上,因此H1不能把数据包直接交付给H2。必须交给子网上的默认路由R1,由R1转发。
路由表在接受到这个分组之后,就在其路由表中逐行匹配寻找。
首先看R1路由表的第一行:用这一行的子网掩码255.255.255.128与H2IP地址进行互与,得到128.30.33.128,然后和这一行用样的方法进行第二行,结果发现相与出来的结果和目的网络地址匹配,则说明这个网络(子网2)就是收到的分组所要寻找的目的网络。于是就不用继续找了。R1把分组从接口1直接交付给主机H2(他们都在一个子网上)。
在一个划分子网的网络中可使用几个不同的子网掩码。使用变长 子网掩码VLSM(Variable Length Subnet Mask) 可进一步提高IP地址资源的利用率。在VLSM的基础上又进一步研究出 无分类编制 方法。它的正式名字是无分类域间路由选择CIDR(Classless Inter-Domain Routing)。
CIDR 最主要的特点有两个:
CIDR还使用斜线记法,就是在IP地址后面加上斜线/,然后写上 网络前缀所占的位数 。例如IP地址为128.14.35.7/20是某CIDR地址快中的一个地址,其中前20位就是网络前缀,后面的14位是主机位。如图所示:
当然以上地址的主机号全为0和全为1的地址,一般并不使用,这个地址块共有2^12个地址,我们可以使用地址块中最小的地址和网络前缀来指明这个地址快。例如,上述的地址块可记为128.14.32.0/20。
为了更方便的进行路由选择,CIDR使用了32位的地址掩码(address mask)。地址掩码是由一串1和一串0组成, 而1的个数就是网络前缀的个数。 虽然CIDR不使用子网了,但是出于某些原因,CIDR使用的地址掩码也可以继续称为 子网掩码,斜线记法中,斜线后面的数字就是1的个数 。例如,/20地址快的地址掩码是 11111111 11111111 11110000 00000000 (20个连续的1)。 斜线记法中,斜线后面的数字就是地址掩码中1的个数。
斜线记法还有一个好处就是它除了可以表示一个IP地址外,还提供了一些其他重要的信息。我们举例说明如下:
例如,地址为192.199.170.82/27不仅表示IP地址是192.199.170.82,而且还表示这个地址快的网络前缀有27位(剩下的5位是主机号),因此这个地址快包含32个IP地址( =32)。通过见到那的计算还可以得出,这个地址块的最小地址是192.199.170.64,最大地址是192.199.170.95。具体的计算方法是这样的:找到地址掩码中1和0的交界处发生在地址中的哪一个字节,现在是第四个字节,因此只要把这一个字节的十进制82用二进制表示即可:82的二进制是01010010,取其前3位(这3位加上前3字节的24位就够成了27位),再把后面的5位都写成0,即01000000,等于十进制64,这样就找到了地址快的最小地址192.199.170.64,再把最后面5位都置为1,即01011111,等于十进制的95,这就找到了地址块中的最大地址192.199.170.95。
由于一个CICR地址块有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称之为 路由聚合(route aggregation) ,它使得路由表中的一个项目可以表示原来传统分类地址的很多个路由,路由聚合也称之为 构成超网(supernetting) ,路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
每一个CIDR地址块中的地址数一定是2的整数次幂,这就是 构建超网 的来源。
网络前缀越短 ,其地址块所包含的地址数就越多,而在三级结构的IP地址中,划分子网是使网络前缀变长。
在使用了CIDR时,由于采用网络前缀这种记法,IP地址由网络前缀和主机号这两部分组成,因此在路由表中的项目也要有相应的变化,这时,每个项目由 网络前缀 和 下一跳地址组成 , 但是在查找路由表时可能会得到不止一个匹配结果 ,这样就带来一个问题:我们应该从这些匹配结果中选择哪一条路由呢?
正确的答案是: 应但从匹配结果中选择具有最长网络前缀的路由 ,这就做 最长前缀匹配(long-prefix matching) ,这是因为网络前缀越长,说明其地址块越小因而路由就越具体,最长前缀匹配又称之为 最长匹配 或者 最佳匹配 。
使用CIDR后,由于要寻找最长前缀匹配,使路由表的查找过程变的十分复杂,当路由表的项目数很大的时候,怎样设法减少路由表的平均查找时间就成为了一个非常重要的问题,现在常用的是 二叉线索(binary trie) ,它是一种特殊结构的树,IP地址中从左到右的比特值决定了从根节点逐层向下层延伸的路径,二二叉线索中的各个路径就代表路由表中存放的各个地址。
图4-26用一个例子说明二叉树线索的结构,图中给出了5个IP地址。为了简化二叉线索的结构,可以先找出对应一与每一个IP地址的唯一前缀(unique prefix),所谓唯一前缀就是在表中所有的IP地址中,该前缀时唯一的,这样就可以用这些唯一前缀来构造二叉线索。在进行查找时,只要能够和唯一前缀匹配相匹配就可以了。
从二叉树的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。