《Computer Networks》Fifth Edition中文版笔记

5.6 Internet的网络层

  1. 模块开发。这条原则直接导致了协议栈的思想,每一层的协议完全独立于所有其他的协议。
  2. 寻找好的而不是完美的设计。通常设计者有一个好的设计,但是它不能够处理一些怪异的特殊情况。设计者不应该乱改设计,而是坚持这个好的设计,将围绕着特殊情况而展开的工作负担转移到那些强烈要求的人身上。

5.6.1 IPv4协议

  1. IP数据报头的传输从左到右并从上到下,Version字段的高序字节最先被传送出去(这就是“big-endian”网络字节序。在little-endian字节序机器上,比如Intel x86计算机,在传输和接收时需要进行字节顺序的软件转换)。现在回想起来,little-endian字节序是更好的选择,但在设计IP协议时没有人能预测到今天little-endian流行计算世界。
  2. 由于头的长度不固定,所以头的IHL字段指明了头到底有多长(以32位字长度为单位)。
  3. 最初时,服务类型字段包含6位,其中3位表示优先级,3位表示主机最关心的延迟、吞吐量或可靠性中的哪一个。然而,没人真正知道路由器用这些位做什么,因此这些位空着许多年没人用。在设计区分服务时,IEFT承认自己的失败,并重新启用这个字段。现在,前6位用来标记数据包的服务类别(加速服务和确保服务);后2位用来携带显式拥塞通知信息,比如数据包是否经历了拥塞。
  4. 标识(Identification)字段的用途是让目标主机确定一个新到达的分段属于哪一个数据报。同一个数据报的所有段包含同样的标识值。
  5. 在每一跳上该计数器必须被递减,而且,当数据报在一台路由器上排队时间较长时,该计数器必须多倍递减。
  6. 校验算法的执行过程是这样的:当数据到达时,所有的16位(半字)累加起来,然后再取结果的补码。该算法的目的是到达数据包的头校验和计算结果应该为0。在每一跳必须重新计算头校验和字段,因为至少有个字段总是不断在改变(即生存期字段)。
  7. 选项:严格源路由——给出数据报遵循的完整路径(对于系统管理员,这个选项非常有用,他们可以在路由表被破坏时发送紧急数据包,或者用这个选项来测量时间);松散源路由——给出一些不能错过的路由器;记录路由——要求每个路由器加上自己的IP地址;时间戳——要求每个路由器加上自己的IP地址和时间戳。
  8. 如今,IP选项已失宠。许多路由器忽略它们或者不能有效地处理它们,它们作为一种罕见案例被搁置了起来。也就是说,它们只是得到部分支持,但很少被使用。

5.6.2 IP地址

  1. 重要的是要注意,一个IP地址并不是真正指向一台主机,而是指向一个网络接口,所以如果一台主机在两个网络上,它必须有两个IP地址。与此相反,路由器有多个接口,从而有多个IP地址。
  2. 前缀的主要优势是路由器仅仅根据地址的网络部分即可转发数据包,只要每个网络都有一个唯一的地址块。
  3. 这样可使得路由表远远小于按每个IP地址索引所需要的大小,考虑到Internet的主机数量已接近十亿,这对于每个路由器需要维护的路由表来说实在是太大了。然而,通过分层的方式路由器只需要保持约30万条前缀的路由。
  4. 虽然使用层次路由使得Internet路由规模化,但它有两个缺点。首先,一个主机的IP地址取决于它位于网络上的位置。比如移动IP这样的设计必须支持主机在网络之间移动,但同时保持相同的IP地址。第二个缺点在于层次结构浪费了地址,除非精心管理地址空间。
  5. 这种分割并不要求均匀,但每片必须对齐以便可以把较低的任何位用作地址的主机部分。在这种情况下,块的一半(一个/17)分配给了计算机科学系,四分之一分配给了电机工程学系(一个/18),八分之一(一个/19)分配给了艺术系,剩余的八分之一未分配。
  6. 如果有必要,子网的划分还可以改变,只需要更新校园网内部路由器上的所有子网掩码即可。
  7. 对于通往组织外部某个目的地的路由,这些路由器可以利用简单的默认路由把数据包发送到通往ISP的线路上,ISP把组织与Internet其余部分相连。
  8. ISP和骨干路由器之间的路由没有这样奢侈,这些骨干路由器位于Internet中间。它们必须知道通过哪些方式可到达每个网络,这里没有简单的默认路由可用。
  9. 我们可以运用与子网划分相同的观点:不同地点的路由器可以知道一个给定IP地址的不同大小前缀。然而,不是将一块地址分割成子网,相反,在这里我们把多个小前缀的地址合并成一个大前缀的地址块。这个合并过程称为路由聚合(route aggregation),由此产生的较大前缀地址块有时称为超网(supernet),以便有别于地址块的分割。
  10. 由于4096个地址的块必须位于4096的字节边界上,所以,牛津大学申请的地址不可能从194.24.8.0开始。相反,它们获得了从194.24.16.0至194.24.31.255的地址块,子网掩码为255.255.240.0。
  11. 更为扭曲的是前缀允许重叠。规则是数据包按最具体路由的方向发送,即具有最少IP地址的最长匹配前缀(longest matching prefix)。
  12. 相反,最长匹配前缀路由可以用图中显示的两个前缀来转发。一个总的前缀指示把整个地址块的流量发到伦敦;一个更具体的前缀用来指示该大前缀的一部分流量发往旧金山。
  13. 当一个数据包到达时,路由器扫描路由表以便确定目的地是否在前缀的地址块内。有可能多个具有不同前缀的表项得到匹配,在这种情况下,使用具有最长前缀的表项。
  14. 相反,人们设计了复杂的算法来加快地址匹配过程。商用路由器使用了定制的VLSI,这些算法被嵌入到了硬件中。
  15. 尤其是,真正的罪魁祸首是B类网络。在现实中,一个B类地址对大多数组织而言还是过于庞大。研究表明,超过半数的B类网络少于50台主机。一个C类网络足够应付得过来。但毫无疑问,每个组织都会申请一个B类地址,它们想到总有一天自己的网络规模将超过8位主机地址空间的范围。
  16. 今天,表明一个IP地址是否属于A、B或C类网络的标志位已不再使用,但在文献中队这些类的引用仍然很普遍。
  17. 具有正确的网络号和主机字段全1的地址允许机器向在Internet任何地方的遥远局域网发送广播数据包。然而,许多网络管理员禁用了此功能,主要原因在于这是一个安全隐患。最后127.xx.yy.zz形式的地址保留给回环测试用。发送到该地址的数据包并没有被真正放在线路上,它们如同入境数据包一样在本地处理。这样在发送方不知道网络号的情况下,可以给主机发送数据包,这对测试网络软件很有用。
  18. 这种地址转换使用了IP地址的三个范围,这些地址已经被声明为私有化。任何网络可以在内部随意地使用这些地址。仅有的规则是不允许包含这些地址的数据包出现的Internet上。这3个保留的地址范围是:
    10.0.0.0~10.255.255.255/8 (16777216个主机)
    172.16.0.0~172.31.255.255/12 (1048576个主机)
    192.168.0.0~192.168.255.255/16 (65536个主机)
  19. NAT盒子通常与防火墙组合成一个单一设备,防火墙提供了一种安全机制,它仔细地控制着进出客户网络的流量。另外还有一种可能,将NAT盒子集成到路由器或者ADSL调制解调器中。
  20. 该端口称为源端口,它告诉TCP代码凡是属于该连接的入境数据包都应该发送给该端口。
  21. 任何时候当出境数据包进入NAT盒子,其源地址10.x.y.z被客户的真实IP地址所取代,而且,TCP的source port字段被一个索引值取代,该索引值指向NAT盒子的地址转换表中65536个表项之一。该表项包含了原来的IP地址和原来的源端口。最后,NAT盒子重新计算IP头和TCP头的校验和,并将校验和插入到数据包中。这里之所以要替换source port域,是因为来自机器10.0.0.1和10.0.0.2连接可能碰巧使用了同一个端口,比如都使用了5000,所以仅仅使用source port还不足以唯一性地标识发送进程。
  22. 当一个数据包从ISP到达NAT盒子时,source port从TCP头中提取出,并被用作为索引值查找NAT盒子的映射表。
  23. 实际上,这意味着,家庭网络用户可以通过NAT与一台远程Web服务器建立TCP/IP连接,但远程用户无法与家庭网络内的一台游戏服务器建立连接,这种情况需要特殊的配置技术或者NAT穿越(NAT traversal)技术。
  24. 如果NAT盒子崩溃,并且它的映射表丢失,那么它的所有TCP连接都将被摧毁。没有NAT的情况下,路由器可以崩溃并重启,对TCP连接没有长远影响。发送进程只是在几秒钟内发生超时,然后重传所有未被确认的数据包。使用了NAT之后,Internet如同电路交换网络一样,变得非常脆弱。

5.6.3 IPv6协议

  1. 如果整个地球,包括陆地和水面都被计算机覆盖,那么,IPv6将保证每平方米有7*10^25个地址。化学系的学生将会注意到,这个数值超出了阿伏伽德罗常数。
  2. IHL字段没有了,因为IPv6头有固定的长度。协议(Protocol)字段也被拿掉了,因为下一个头(Next header)字段指明了最后的IP头后面跟的是什么(比如UDP或者TCP段)。
  3. 简要地说,当主机发送了一个非常大的IPv6数据包时,如果路由器不能转发这么大的数据包,它并不对该数据包进行分段,而是向发送主机返回一条报错消息。这条消息告诉主机,所有将来发送给该目标地址的数据包都要分段。让主机从一开始就发送大小合适的数据包,比让沿途路由器动态地对每个数据包进行分段要有效得多。
  4. 最后,校验和(Checksum)字段也被去掉了,因为计算校验和会极大地降低性能。现在使用的大多是可靠网络,而且数据链路层和传输层常有它们自己的校验和,所以在网络层上再使用校验和,相比它所付出的性能代价是不值得的。
  5. 逐跳头(hop-by-hop header)用来存放沿途所有路由器必须要检查的信息。到现在为止,已经定义了一个选项:支持超过64KB的数据报。使用这种扩展头时,固定头中的有效载荷长度(Payload length)字段要设置为0。
  6. 然而,与IPv4不同的是,在IPv6中,只有源主机才可以将一个数据包进行分段。沿途的路由器可能不会进行分段。这一改变是对原始IP的重大哲学突破,但是符合IPv4的现行做法;而且它简化了路由器的工作,使得路由过程更快。
  7. 而且,随着Internet的增长,越来越多的长距离链路将被建立起来,从而使得从一个国家到达另一个国家可能至多不超过六跳。如果从源端和接收方分别到达它们相应的国际网关需要超过125跳,那么它们的国家主干网一定有问题了。
  8. 反对派则认为,真正的安全应用一般只需要端到端的加密,其中源端应用完成加密过程,接收方应用完成解密过程。网络层的实现可能会有错误,用户对此没有任何控制能力却要受到它的约束。

5.6.4 Internet控制协议

  1. 源抑制(SOURCE QUENCH)消息以前被用来抑制那些发送太多数据包的主机。当一台主机接收到这条消息时,它应该将发送速度减慢下来。这种消息现在很少使用了,因为当拥塞发生的时候,再发这些包无疑是火上浇油。现在,Internet的拥塞控制任务主要由传输层完成。
  2. 回显(ECHO)和回显应答(ECHO REPLY)消息可以用来判断一个指定的目标是否可达,以及是否还活着。目标主机接收到回显消息之后,应该立即送回一个回显应答消息。这些消息主要被ping工具用在探测Internet上是否存在某一台特定的主机。
  3. 路由器通告(ROUTER ADVERTISEMENT)和路由器恳求(ROUTER SOLICITATION)消息使得主机拥有寻找附近路由器的能力。主机至少需要学习一个路由器的IP地址才能发送离开本地网络的数据包。
  4. 这时候,主机1上的IP软件构建一个以太网帧,其目标地址为E2,并且把IP数据包(目标地址为192.32.65.5)放到以太网帧的有效载荷字段中,然后将它发送到以太网上。
  5. 首先,一旦一台机器已经运行了ARP,那么,它可以将结果缓存起来,以便稍后它与同一台机器通信时再用。当下次通信时,它就可以在缓存中找到所需的地址映射关系。
  6. 保持缓存信息最新状态并能优化性能的一种更聪明的方式是,让每台机器配置之后广播它的地址映射关系。这次广播通常以ARP的形式发送,即主机发送一个ARP请求查找它自己的IP地址。按理来说,网络上应该不会有任何应答,这个广播数据包的副作用就是其他主机在ARP缓存中加入一个映射表项。这就是所谓的免费ARP(gratuitous ARP)。
  7. 还有一种可能,当主机1不知道主机4在另一个不同网络时,仍然可以从主机1发送一个数据包给主机4.解决办法是让CS网络上的路由器回答针对主机4的ARP请求,并且以E3作为响应。直接由主机4来响应对自己的ARP请求报文是不可能的,因为它根本看不到ARP请求(路由器不会转发以太网级的广播报文)。然后,路由器将收到发给192.32.63.8的帧,并将该帧转发给EE网络。这个解决方案称为ARP代理(proxy ARP)。
  8. 当计算机启动时,它有一个嵌入在NIC中的内置以太网地址或其他链路层地址,但没有IP地址。像ARP一样,该计算机在自己的网络上广播一个报文,请求IP地址。这个请求报文就是DHCP DISCOVER包,这个包必须到达DHCP服务器。如果DHCP服务器没有直接连在本地网络,那么必须将路由器配置成能接收DHCP广播并将该请求报文中继给DHCP服务器,由DHCP服务器来处理DHCP报文。
  9. 当DHCP服务器收到请求,它就为该主机分配一个空闲的IP地址,并通过DHCP OFFER包返回给主机(这个报文或许也要通过路由器中继)。为了在主机没有IP地址的情况下完成此项工作,服务器用主机的以太网地址来标识这台主机(主机的以太网地址由DHCP DISCOVER包携带过来)。
  10. 如果一个主机离开网络,并且没有把分配给它的IP地址返回给DHCP服务器,那么该地址将永久丢失。过一段时间,很多地址都可能因此而丢失。为了防止这种情况发生,可以为每个分配的IP地址指定一段固定时间,这种技术成为租赁(leasing)。在租赁期满前,主机必须请求DHCP续订。
  11. 常见的配置信息例子包括网络掩码、默认网关的IP地址、DNS服务器和时间服务器的IP地址。DHCP已在很大程度上取代了先前使用的协议(称为RARP和BOOTP),因为这些协议的功能比较有限。

5.6.5 标签交换和MPLS

  1. 还有另一种技术正在开始广为应用,特别是被ISP用来在它们的网络之间移动Internet流量。这种技术成为多协议标签交换(MPLS, MultiProtocol Label Switching),它非常接近电路交换。
  2. MPLS在每个数据包前面增加一个标签,路由器根据数据包标签而不是数据包目标地址实施转发。用标签作为一个内部表的索引,快速查找该表找出正确的输出线路,因而这只是一个表查操作。
  3. 由于IP数据包并不是针对虚电路设计的,所以在IP头并没有刻意存放虚电路号的空间。由于这个原因,必须要在IP数据包的头前面加上一个新的MPLS头。如果从一台路由器到另一台路由器之间的线路使用PPP作为成帧协议,那么帧格式中包含了PPP、MPLS、IP和TCP头。
  4. 它不是一个真正的第3层协议,因为它依赖IP或其他网络层地址来建立标签路径;但它也不是一个真正的第2层协议,因为它既可以在多跳之间转发数据包,也不是一条单一链路。
  5. 这个属性还意味着有可能制造出能同时转发IP数据包和非IP数据包的MPLS交换机,具体如何转发取决于线路上出现的是什么。这个特性就是MPLS名字中“多协议”的由来。
  6. 当一个MPLS增强型数据包到达一个标签交换路由器(LSR,Label Switched Router),标签就被用作查找一个表的索引,以便确定要使用的出境路线和新标签。所有的虚电路网络几乎都采用这种标签替换技术。标签只有本地意义,两个不同的路由器可以给两个都到另一台路由器但相互之间毫无关系的数据包分配相同的标签,这两个数据包的进一步传输将使用同一条出境线路。为了在虚电路的另一端能区别出这两个数据包,标签必须在每一端重新进行映射。
  7. 由于大多数主机和路由器都不理解MPLS,因此我们还应该考虑何时以及如何把标签附加到数据包上。这事发生在一个IP数据包到达MPLS网络边缘。标签边缘路由器(LER,Label Edge Router)检查数据包的目标IP地址和其他字段,确定该数据包应当遵循哪条MPLS路径,然后右侧的标签贴在数据包前。
  8. MPLS与传统虚电路的一个区别是聚合水平。在通过MPLS网络时,为每个流设置它自己的一组标签当然是可能的;然而,对于路由器来说,更常见的做法是将终止在某个特定路由器或者LAN的多个流合并成一组,并为这些流使用同一个标签。这些被合起来共享同一个标签的流称为属于同一个转发等价类(FEC,Forwarding Equivalence Class)。
  9. 当已标记的数据包到达这条路径的开始端点处,另一个标签被添加到数据包的前面。这就是所谓的标签栈(stack of label)。最外面的标签指导这些数据包沿着这条公共路径前行。
  10. S标志位告诉删除外层标签的路由器是否还剩下额外的标签。对于最底部的标签,该标志位设为1;而对所有其他标签,该标志位设置为0。
  11. 在传统的虚电路网络,当用户希望建立一个连接时,会向网络发出一个设置包,通过该包来创建路径并生成转发表的表项。
  12. 转发信息由一些协议设置,这些协议一般是路由协议和连接建立协议的组合。这些控制协议与标签转发分离得干干净净,这种分离具有可以使用多个不同控制协议的便利。其中一个变种是这样工作的:当路由器启动时,它会检查看看自己是哪些路由的最终目的地(例如,哪个前缀属于它的接口);然后它为这些路由创建一个或多个FEC,并且为每个FEC分配一个标签,再把新标签发送给其邻居;如此一般地往外传播,直到所有的路由器都获得了相应的路径。

5.6.6 OSPF——内部网关路由协议

  1. 该协议在1990年成为标准,它就是开放最短路径优先(OSPF,Open Shortest Path First)。它借鉴了另一个成为中间系统到中间系统(IS-IS,Intermediate-System to Intermediate-System)的协议,该协议已经成为一个ISO标准。由于它们的共同根源,这两个协议非常的大同小异。它们在域内路由协议中占有绝对的优势,大多数路由器制造商都同时支持这两个协议。OSPF更广泛地应用在公司网络,而IS-IS则更多地应用在ISP网络。
  2. 第六,必须支持层次化系统。到1988年,一些网络已经增长到相当大的规模,以至于任何一台路由器都不可能知道其完整的拓扑结构。OSPF必须设计成不要求路由器知道完整的拓扑结构也能很好地工作。
  3. 这里主机被省略了,因为它们在OSPF中通常不起作用,真正参与路由协议的是路由器和网络(其中可能包含主机)。
  4. OSPF的工作方式本质上是对一张图进行操作:将一组实际网络、路由器和线路抽象到一个有向图中,图中的每条弧有一个权值(距离、延迟等)。广播网络用一个节点表示,加上网络上每台路由器用一个节点表示,从网络节点到路由器节点之间的弧段权值为0。其他网络只有主机,因此只需要一条到达网络的弧,没有返回弧。这种结构使得路由可以到达主机但不能穿过主机。
  5. OSPF可以将这样的AS划分成编号的区域(area),每个区域是一个网络,或者一组互连的网络。区域不能相互重叠,但是也不必面面俱到,也就是说有些路由器可能不属于任何一个区域。全部属于一个区域的路由器称为内部路由器(internal router)。区域是单个网络的一种泛化形式。在区域外部,能见到的是它的目的地而不是拓扑结构。
  6. 每个AS有一个骨干区域(backbone router),称为0号区域。该区域中的路由器称为骨干路由器(backbone router)。所有区域都必须连接到骨干区域,连接方式有可能会通过隧道进行:所以,从AS内的任何一个区域出发,经过骨干区域,总是有可能到达该AS的任何其他区域。
  7. 每个连接到两个或更多区域的路由器成为区域边界路由器(border router)。它必须是骨干区域的一部分。区域边界路由器的工作任务:概括本区域的目的地信息并注入到与自己连接的其他区域。这种概括包含成本信息,但不包括区域内的所有拓扑细节。
  8. 然而,如果只有一个边界路由器通往区域外,甚至路由信息概要都不需要传递。通往该区域外部目的地的路由总是被指令“前往边界路由器”,这类区域称为存根区域(stub area)。
  9. 最后一种路由器是AS边界路由器(AS boundary router)。它把通往其他AS的外部路由注入到本区域。然后外部路由就呈现为可以通过AS边界路由器可达的目的地,该路由当然会有某种成本。
  10. 在正常操作期间,每个区域内的路由器有相同的链路状态数据库,并运行相同的最短路径算法。其主要工作是计算从自身出发到每个其他路由器和整个AS内网络的最短路径。区域边界路由器需要所有与之连接区域的数据库,并且为每个区域分别运行最短路径算法。
  11. 为了避免出现这样的情形,OSPF要求从每个LAN中选举一台路由器作为指定路由器(designated router)。指定路由器与本LAN上的所有其他路由器是邻接的,并且与它们交换信息。实际上,它就是一个
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《计算机网络 第5版》是由Andrew S. Tanenbaum和David J. Wetherall共同撰写的网络技术经典教材。本书主要介绍计算机网络的基本原理、协议、架构和应用等方面的内容,涵盖了计算机网络领域的众多重要技术和概念。 本书首先介绍了计算机网络的基础知识,包括网络拓扑、传输媒介、协议和网络层次结构等。接下来,本书着重介绍了网络协议的设计和实现,包括传输层协议、网络层协议和链路层协议等。同时,本书还讨论了安全、管理和性能调优等网络管理相关的主题。 此外,《计算机网络 第5版》也介绍了各种网络应用领域,包括网络安全、分布式系统、网络存储和云计算等方面的内容,着重强调了实际应用的重要性。 总之,本书内容详尽全面,难度适中,不仅可以作为网络技术相关专业学生的参考教材,也适合从事网络技术工作的人员作为研究和培训资料。 ### 回答2: 《计算机网络》第五版是Andrew S. Tanenbaum于2010年与David J. Wetherall合著的计算机网络领域经典教材。全书分为七个部分,包括网络协议、物理层、数据链路层、局域网、无线局域网与移动网络、网络层、传输层、应用层、多媒体网络与网络安全等内容。该书详细介绍了计算机网络的各个领域知识,包括网络结构、传输协议、路由选择、网络安全等等。其中,物理层和数据链路层涉及到的数据传输技术、传输介质及信号等的具体实现方式,读者可以通过深入了解这些理论,掌握网络通信的操作基本原理。局域网和无线局域网部分更加注重网络拓扑结构、协议通信等应用层面的知识,包括传输媒介、传输速度、数据安全传输等技术。此外,网络安全和应用层等内容也为网络通信提供了实用的应用指南和操作规范。该书还具备高度的可读性和通俗易懂的语言,可以帮助初学者迅速了解并掌握网络通信的基本知识,是一本极具价值的网络通信教材。 ### 回答3: 《计算机网络》第五版是由Andrew S. Tanenbaum和David J. Wetherall共同编写的一本计算机网络教材。本书全面覆盖了计算机网络的主要概念、原理、技术和协议,包括物理层、数据链路层、网络层、传输层、应用层等内容。此外,本书还介绍了现代计算机网络的相关技术和应用,如软件定义网络、云计算、物联网等。 《计算机网络》第五版与前几版相比,更新了一些章节的内容,涵盖了更多的最新技术和发展趋势。本书还增加了一些案例研究和实验,帮助读者深入理解计算机网络的实际应用和工作原理。 总之,《计算机网络》第五版是一本全面而深入的计算机网络教材,适合作为计算机、通信、电子等专业的教材,也可供从事计算机网络研究和开发的专业人员参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值