计算机网络自顶向下方法:第四章 网络层:数据平面 课后复习题
若有错误, 欢迎指出~html
第四章: 网络层:数据平面
4.1节
R1. 咱们回顾在本书中使用的某些术语.
- 前面讲过运输层的分组名字是报文段, 数据链路层的分组名字是帧. 网络层的分组名字是什么? 前面讲过路由器和链路层交换机都被称为分组交换机. 路由器与链路层交换机间的根本区别是什么?
- 答: 网络层的分组名字是数据报.
路由器和链路层交换机的根本区别是它们服务于不一样的网络层协议. 链路层交换机基于链路层帧中的字段值作出转发决定, 服务于第二层链路层; 路由器基于网络层数据报中的首部字段值作出转发决定, 服务于第三层网络层.
R2. 咱们注意到网络层功能可被大致分红数据平面功能和控制平面功能. 数据平面的主要功能是什么? 控制平面的主要功能呢?
- 数据平面的主要功能是转发, 也就是说当路由器接受到网络层数据报后, 控制平面负责根据路由转发表把数据报从输入链路转发到合适的输出链路.
控制平面的主要功能是填充路由表, 也就是决定一个数据报应该转发到哪里.
R3. 咱们对网络层执行的转发功能和路由选择功能进行区别. 路由选择和转发的主要区别是什么?
- 转发是指将分组从一个输入链路接口转移到适当的输出链路接口的路由本地动做. 转发发生的时间很短, 一般用硬件实现.
- 路由选择是指肯定分组从源到目的地所采起的端到端路径的网络范围处理过程. 发生的时间较长, 一般为几秒, 所以用软件实现.
R4. 路由器中转发表的主要做用是什么?
- 路由表的做用是肯定分组下一步应该发送到哪里? 路由器会根据分组首部的一个或几个字段做为索引, 并在转发表中根据索引找到对应的输出链路接口.
R5. 咱们说过网络层的服务模型"定义发送主机和接收主机之间的端到端分组的传送特性".
- 因特网的网络层的服务模型是什么? 就主机到主机数据报的传递而论, 因特网的服务模型可以保证什么?
- 答: 因特网的网络层提供了单一的服务, 称为尽力而为服务. 就主机到主机数据报的传递而论, 因特网的服务模型什么也保证不了, 传送的分组既不能保证以它们发送的顺序被接收, 也不能保证它们最终交付; 既不能保证端到端时延, 也不能保证有最小的带宽.
4.2节
R6. 在4.2节中, 咱们看到路由器一般由输入端口, 输出端口, 交换结构和路由选择处理器组成.
- 其中哪些是用硬件实现的, 哪些是用软件实现的? 为何? 转到网络层的数据平面和控制平面的概念, 哪些是用硬件实现的, 哪些是用软件实现的? 为何?
- 答: 输入端口, 输出端口, 交换结构是用硬件实现的. 路由选择处理器是用软件实现的.
转到网络层的数据平面和控制平面的概念, 数据平面是用硬件实现的, 控制平面是用软件实现的. 缘由是在数据平面处理两个数据报之间的时间很是短, 软件没法在这么短的时间内完成转发. 控制平面则不一样于数据平面的, 它的主要功能是维护转发表, 逻辑比数据平面复杂多了, 并且它不须要短期处理大量时间, 只须要及时更新就好了, 所以用软件实现.
R7. 讨论为何在高速路由器的每一个输入端口都存储转发表的影子副本.
- 首先一个路由器是有不少个输入端口的, 转发行为的第一步是在转发表中查找输出接口. 若是每一个输入端口都并发地调用路由选择器查找输出接口必然会产生时延. 因此要在高速路由器的每一个输入端口都存储转发表的影子副本, 使转发决策能在每一个输入端口本地作出, 避免了集中式处理的瓶颈.
R8. 基于目的地转发意味着什么? 这与通用转发有什么不一样.
- (假定你已经阅读4.4节, 两种方法中哪一种是软件定义网络所采用的? )
- 答: 软件定义网络SDN采用的是通用转发. 基于目的地转发意味着: 若是是根据目的地的IP地址转发的话, 路由转发表中可能须要有40多亿项. 固然能够经过匹配IP地址的最长前缀对全部IP地址进行分组. 可是这样的路由器功能太单一, 不具备广泛性.
- 通用转发延续了基于目的转发的"匹配+动做"模式, 但不受限于经过源分组的IP地址匹配目的IP地址进行转发, 而是经过富足首部字段值集合和计数器集合对动做集合进行匹配. 要知道正由于有了通用转发这样对"匹配+动做"模式的高度抽象, 才使得网络层变得丰富多彩.
R9.假设一个到达分组匹配了路由器转发表中的两个或更多表项. 采用传统的基于目的地转发, 路由器用什么原则来肯定这条规则能够用于肯定输出端口, 使获得达的分组能交换到输出端口.
- 路由器使用最长前缀匹配规则, 即在该表中寻找最长的匹配项, 并向与最长前缀匹配相关联的链路接口转发分组.
R10. 在4.2节中讨论了三种交换结构. 列出并简要讨论每一种交换结构. 哪种(若是有的话)可以跨越交换结构并行发送多个分组?
- 经内存交换. 分组从输入端口处被复制处处理器内存中. 处理器从其首部中提取目的地址, 在转发表中找出适当的输出端口, 并把该分组复制到该输出端口的缓存中.
- 经总线交换. 分组从输入端口通过总线发送到全部输出端口, 只有与该分组匹配的输出端口会把分组留下来.
- 经互联网络交换. 交换机由2N条总线组成互联网络, 链接N个输入口和N个输出口. 经过控制网络中的交点使分组到达对应的输出端口. 这种纵横式网络可以并行发送多个分组.
R11. 描述在输入端口会出现分组丢失的缘由. 描述在输入端口如何消除分组丢失(不使用无限大缓存区).
- 分组到达输入端口后须要通过交换结构传送到输出端口. 若是有两个分组要同时传送到某个输出端口, 那么在交换结构传输排在前面的分组时, 排在后面的分组必须等待. 这就造成了输入端口队列, 若输入端口分组到达的速率大于交换结构的处理速率, 队列就会愈来愈长, 最后致使分组丢失.
- 因为只要输入链路上的分组到达速率达到其容量的58%, 输入队列将无限增大致使大量丢包, 要消除分组丢失须要控制分组的到达速率.
R12. 描述在输出端口会出现分组丢失的缘由. 经过提升交换结构速率, 可以防止这种丢失吗?
- 分组从输入端口通过交换结构到达输出端口, 输出端口将分组推出到输出链路上, 假如交换结构(纵横交换结构)同时将3个分组传输到输出端口上, 而输出端口一次只能发送一个分组, 那么将会有2个分组在输出端口排队. 若是不断有大于1个的分组同时从交换结构传输到输出端口, 输出端口的排队将会变长, 当输出端口缓存耗尽后会出现分组丢失.
- 正是由于交换结构传输分组到输出端口的速率快于输出端口的传输速率致使输出端口出现排队, 因此提升交换结构速率不能防止这种丢失.
R13. 什么是HOL阻塞? 它出如今输入端口仍是输出端口?
- HOL(Head-Of-the-Line)全称为输入排队交换机中的线路前部阻塞.
- 从图中能够看到输入端口1, 3的两个深色分组会通过交换结构到达输出端口1.
- 假定该交换结构决定先传输输入端口1的分组, 那么输入端口3的分组必须等待.
- 同时能够看到输入端口3神色分组后面的浅色分组的输出端口并非1而是2, 考虑这是一个纵横式交换结构, 输入端口3的深色分组和浅色分组原本是能够并行传输的, 如今因为深色分组被阻塞, 浅色分组也必须排队等待, 这就是HOL阻塞, 出如今输入端口.
R14. 在4.2节咱们学习了FIFO, 优先权, 循环(RR)和加权公平排队(WFQ)分组调度规则. 这些排队规则中, 哪一个规则确保全部分组是以到达的次序离开的?
- FIFO分组调度规则, 全称为(First-In-First-Out)先进先出链路调度规则.
R15. 举例说明为何网络操做员要让一类分组的优先权超过另外一类分组的.
- 例如如今输出队列中同时存在实时语音分组和SMTP邮件分组和文件传输分组等. 网络管理员让实时语音分组的优先权超过SMTP分组的, 由于网络时延对实时语音通话的影响远大于SMTP的影响. 语音分组经历较长时延后语音服务就无法进行了, 而SMTP传输慢点, 邮件服务器最终仍是能得到该邮件分组, 能容忍较大的时延.
R16. RR和WFQ分组调度之间的基本差别是什么? 存在RR和WFQ将表现得彻底相同的场合吗? (提示: 考虑WFQ权重)
- RR和WFQ都是经过循环调度器在各个分组类中进行循环传输, 它们的基本差别在于RR对于每一个类会公平地只发送一个分组, 发送完当即转移到下一个类, 除非只剩下一个类有分组. 而WFQ则会给每一个类分配权重, 至关于变相地给每一个类的分组分配优先权, WFQ会按照权重对一个类进行传输后再转移到下一个类, 对于权重高的类循环调度器可能会在该类中传输好几个分组再转移到下一个类, 而不是每一个分组传输一个.
R17. 假定主机A向主机B发送封装在一个IP数据报中的TCP报文段. 当主机B接受到该数据报时, 主机B中的网络层怎样知道它应当将该报文段(即数据报的有效载荷)交给TCP而不是UDP或某个其余东西呢?
- 主机B中的网络层经过查看数据报首部字段中的协议字段得知应该把数据部分交给哪一个特定的运输层协议. 好比值为6代表交给TCP, 值为17代表交给UDP.
- 协议字段的做用至关于运输层报文段首部中的目的端口号, 指示将数据交给哪一个套接字. 链路层的链路层帧一样也有特殊字段用于将链路层和网络层绑定在一块儿.
R18. 在IP首部中, 哪一个字段能用来确保一个分组的转发不超过N台路由器.
- 寿命字段(Time-To-Live, TTL), 每当一台路由器处理该数据报时该值减1, 当减到0时丢弃该数据报.
R19. 前面讲过因特网检验和被用于运输层报文段以及网络层数据报.
- 如今考虑一个运输层报文段封装在一个IP数据报中.在报文段首部和数据报首部中的检验和要遍布IP数据报中的任何共同字节进行计算吗?
- 答: 不须要. 首先搞清楚报文段检验和与数据报检验和之间的差异. - 数据报检验和只是对IP数据报的首部计算了检验和, 而报文段首部中的检验和是对整个报文段(包括承载的应用层数据部分)都进行计算的.
- 其次, TCP/UDP和IP不必定属于同一个协议栈, TCP可以运行在别的网络协议上, IP数据报也能携带除了TCP/IP之外的其余数据.
R20. 何时一个大数据报分割成多个较小的数据报? 较小的数据报在什么地方装配成一个较大的数据报?
- 网络层的数据报须要往下通过链路层封装成链路层帧才能放上链路开始传输. 然而一个链路层帧的载荷大小根据链路层协议的不一样而不一样, 数据报的大小不能超过一个链路层帧的最大传送单元(Maximum Transmission Unit, MTU). 因此当链路层遇到大于自身MTU的数据报时须要把数据报分割成多个较小的数据报. 这项工做将放到端系统中进行, 由于若是在路由器中进行的话会大大下降路由器的性能.
- 较小的数据报在目的端系统的网络层进行装配.
R21. 路由器有IP地址吗? 若是有, 多少个?
- 路由器有IP地址, 这里的有IP地址并非说有一个IP地址标志一台路由器. 而是说路由器的一个输入或输出端口对应着一个IP地址.
- 因此一个路由器拥有的IP地址数是不肯定的, 假如一个路由器有一个输入端和两个输出端, 那么对应地就有三个IP地址, 分别对应三个端口.
R22. IP地址223.1.3.27的32比特二进制等价形式是什么?
- 11011111 00000001 00000011 000
R23. 考察使用DHCP的主机, 获取它的IP地址, 网络掩码, 默认路由器及其本地DNS服务器的IP地址. 列出这些值.
- DHCP(Dynamic Host Configuration), 动态主机配置协议.
- DHCP协议用于让一台主机在子网中得到它的IP地址. 过程以下:
- 首先主机向255.255.255.255 IP广播地址发送一个DHCP发现报文, 这个发现报文会在整个子网传播.
- 子网内的DHCP服务器收到DHCP发现报文后会向广播地址发送一个DHCP提供报文, 向须要IP的主机提供IP地址(如下图为例): 223.1.2.4, 网络掩码: 223.1.2.0/24, 默认路由器: 223.1.2.5 以及本地DNS服务器的IP地址.
- 主机可能会收到不仅一个DHCP提供报文, 选择其中一个后向服务器发送DHCP请求.
- 被选中的DHCP服务器响应DHCP ACK报文.
R24. 假设在一个源主机和一个目的主机之间有3台路由器.
- 不考虑分片, 一个从源主机发送给目的主机的IP数据报将经过多少个接口? 为了将数据报从源移动到目的地须要检索多少个转发表?
- 答: 经过一个路由器须要经过2个接口, 端到端之间一共有3台路由器, 因此数据报一共要经过6个接口.
- 通过3个路由器, 须要检索3个转发表.
R25. 假设某应用每20ms生成一个40字节的数据块, 每块封装在一个TCP报文段中, TCP报文段再封装在一个IP数据报中. 每一个数据报的开销有多大? 应用数据所占的百分比是多少?
- 这题考察的是TCP报文段首部字段和数据报首部字段的大小.
- TCP报文段首部是20字节.
- 数据报报文段首部是20字节.
- 因此每一个数据报的开销为80字节, 应用数据所占的百分比是50%.
R26. 假定你买了一个无线路由器并将其与电缆调制解调器相连.
- 同时假定ISP动态地为你链接的设备(即你的无线路由器)分配一个IP地址. 还假定你家有5台PC, 均使用802.11(WIFI)以无线方式与该无线路由器相连. 怎样为这5台PC分配IP地址? 该无线路由器使用NAT吗? 为何?
- 答: 这5台PC的IP地址会经过请求DHCP服务器得到.
- 该无线路由器会使用NAT, 缘由是: 家庭网络可能会随时加入许多台联网设备, 而最简单经常使用的管理这些设备IP地址的方法就是NAT.
R27. "路由聚合"一词意味着什么? 路由器执行路由聚合为何是有用的?
- 路由聚合意味着一个子网只经过接入IP地址的部分前缀和外部因特网相连, 外界并不关心子网内还存在着多个组织, 这种使用单个网络前缀通告多个网络的能力一般称为路由聚合.
- 对于路由器而言, 假设一台组织外的路由器要转发一个数据报, 该数据报的目的地址在组织内部, 那么该组织外的路由器转发到组织内的一台路由器时, 只须要考虑地址的前x比特便可. 这个作法至关大地减小了在这些路由器中转发表的长度. (使转发表不用记录每一个具体目的IP地址, 只须要记录一个相似223.1.1.0/24同样的带前缀的地址便可)
R28. "即插即用"或"零配置"协议意味着什么?
- "即插即用"和"零配置"描述的是DHCP协议.
- 这一协议意味着DHCP协议让每一个须要接入因特网的端设备都能方便地得到IP地址. 具体过程能够往上查看第R23题. 其中广播地址和子网是DHCP运做不可缺少的元素.
R29. 什么是专用网络地址? 具备专用网络地址的数据报会出如今大型公共因特网中吗? 解释理由.
- 专用地址这一律念产生在NAT(网络地址转换)场景中.
- NAT的模型是一台具备单一IP地址的路由器处于因特网与子网之间, 子网内的端系统从新得到一个相似IP地址的网络地址. 这个网络地址对于一个端系统来讲就是专用网络地址.
- 专用网络地址的数据报不会出如今大型公共因特网中, 由于大型因特网边缘分布了无数个NAT, 每一个NAT构成的子网中的专用网络地址是能够重复的, 具备专用网络地址的数据报中填写的IP地址只有在专属的NAT中能够识别, 因此不可能出如今公网.
- 具备专用网络地址的数据报在进入公共因特网以前被运行NAT的路由器改造过了.
R30. 比较并对照IPv4和IPv6首部字段. 它们有相同的字段吗?
- 有相同的字段. IPv6在IPv4的基础上改进了, 舍弃了被证实为低效的功能, 添加具远见性的流标签等字段, 并保留了基本功能.
R31. 有人说当IPv6以隧道形式经过IPv4路由器时, IPv6将IPv4隧道做为链路层协议. 你赞成这种说法吗? 为何?
- 我不一样意这种说法, IPv4的原理是用一个IPv4数据报把IPv6数据报封装起来, IPv6数据报至关于封装后数据报的有效载荷. 这个隧道应该属于网络层协议.
4.4节
R32. 通用转发和基于目的转发有何不一样.
R33. 咱们在4.1节遇到的基于目的地转发与在4.4节遇到的OpenFlow流表之间有什么差别?
- 基于目的地转发明确地经过目的地匹配, 具体动做是转发到响应的输出端口上.
- OpenFlow流表的匹配项能够是分组首部字段中的一个或几个, 动做能够是转发, 拦截, 丢弃等. OpenFlow流表是对匹配转发更高层次的抽象.
R34. 路由器或交换机的"匹配加动做"意味着什么?
- 在基于目的地转发的分组交换机场合中, 要匹配什么并采起什么动做? 在SDN的场合中, 举出3个可以被匹配的字段和3个能被采起的动做.
- 答: 参考R33. (补充: 被匹配的字段能够属于链路层, 网络层, 运输层, 如目的MAC, VLAN优先权等)
R35. 在IP数据报中举出可以在OpenFlow1.0通用转发中"匹配"的3个首部字段. 不能在OpenFlow中"匹配"的3个IP数据报首部字段是什么?
- 能匹配: IP目的, VLAN优先权, 目的MAC
- 不能匹配: TTL字段(数据报过期), 数据报长度, 差错检验.
欢迎关注本站公众号,获取更多信息