今天一天整理出来第五章的内容,教材使用的是清华大学出版社的《计算机网络》第五版,先是在word里面撰写的,并上传到了百度文库。由于文档里面含有许多图片,在这里无法显示出来,还请谅解。如有需要探讨的请发送邮件到liuplace@126.com。我会尽快回复。
第五章 网络层
5.1 网络层设计问题
网络层任务:存储转发数据包交换,向传输层提供服务。
围绕这一任务,在设计网络层时,Internet社团与电话公司为代表的社团展开了争论,Internet社团认为:网络应该是不可靠的,错误控制与流量控制均应该由主机完成,电话公司阵营任务:网络应该是可靠的,面向连接的服务。
无连接服务的实现:IP(internetProtocol)是整个Internet的基础,每个数据包携带一个目标的IP地址,路由器使用该地址来单独转发每一个数据包。
面向连接服务的实现:存在一个重要过程标签交换(labelswitching)。例子:多协议标签交换(MPLS, Multi Protocol Label Switching),主要用于Internet的ISP网络,MPLS往往对客户是隐藏的,ISP用它来为超大流量建立长期的连接。
注:没有绝对一说,中庸之道是很有道理的,什么东东都会有用武之地,不要那么极端嘛!
5.2 路由算法
路由算法是网络层的重中之重,(在书中的第一部分就说了,本章关注的就是算法,所以我还买了一本《算法导论》),它是网络层软件的一部分,它负责确定一个入境数据包应该被发到哪个输出线路上,因此路由和转发这是两个功能。
路由算法必须满足的特性:正确性,简单性,鲁棒性,稳定性,公平性和有效性!(这里面存在相互矛盾的目标)。
算法分类:(1)非自适应性算法(nonadaptive algorithm),也称静态路由(staticrouting),适应于路由选择非常清楚的场合。(2)自适应性算法(adaptive algorithm),也称动态路由(dynamicrouting)。下面的路由算法均是基于拓扑水平结构进行路由决策的。
最短路算法:
这里涉及到每一条边的权重,这个衡量的因素很多,包括:跳数,物理距离,距离,带宽,平均流量,通信成本,平均延迟等。
在一个图中,计算两个节点之间的最短路径算法,非常著名的便是Dijkstra算法,码农都知道这个东东,直接上代码:
泛洪算法(Flooding)
主要用于广播和无线路由算法。
距离矢量路由算法(Distancevector routing)
虽然动态路由算法更加复杂,但是这些算法能在当前网络拓扑中找到最短路径,因此更加有效。
距离矢量路由算法(Distancevector routing)工作过程:每个路由器维护一张表,列出当前已知到每个目的的最短距离以及使用的链路,这些表通过邻居之间的相互交换信息而不断更新,最终每个路由器都了解到到达每个路由器的最佳链路。
重大缺陷:无穷计算问题(counting-to-infinity)
这一缺陷体现在,对好消息反应非常迅速,但是对坏消息反应异常迟缓。用下图作以解释:
链路状态路由(linkstate routing)
由于上述算法的巨大BUG,1979年起,ARPANET正式改用链路状态路由算法。这一算法的变种:IS-IS或者OSPF已经成为应用最为广泛的路由算法。
实质:算法将完整的拓扑结构发给了每一个路由器,然后每个路由器运行Dijkstra算法就可以找出本地到每一个其他路由器的最短路径。
整个算法技巧性最强的部分在于分发链路状态包。
广播路由(Broadcastingrouting)
改进方案:多目标路由(Multi destinationrouting):确定必要的线路(只要一条线路是到达至少一个目标的最佳路径,那么它就是必要的),但是BUG在于,它要求源端知道全部的目标地址。
逆向路径转发(reverse pathforwarding):当一个广播数据包到达一个路由器时,路由器检查它到来的那条线路是否正是通常用来给广播源发送数据包用的那条线路。
组播(multicasting)路由&选播(Anycast)路由
移动主机路由
这部分内容比较有意思,打算详述,稍后补上。
自组织网络(Ad hoc)路由
在此最流行的按需距离矢量(AODV,Ad hoc On demandDistance Vector),包括路由发现也是按需发现的。
AODV算法到达请求的目标后,构造一个ROUTE REPLY包,在一个大型网络中,会产生很多广播包,可以使用IP包的TTL字段限制广播的范围。
5.3 拥塞控制算法
网络层和传输层共同承担着处理拥塞(Congestion)的责任。
控制拥塞的最有效方法就是减少传输层注入网络的负载。
拥塞控制的途径根据时间尺度划分如下:
这一部分很容易理解。
5.4 服务质量
流量整形(trafficshaping):调节进入网络的数据流的平均速率和突发性所采用的技术。
服务等级约定(SLA,service level agreement)。
流量监管(traffic policing)。
漏洞和令牌桶:
漏桶算法(leaky bucket algorithm),令牌桶算法(token bucket algorithm)。
漏桶和令牌桶限制了一个流的长期速率,但是允许短期突发某个最高调节长度,下图。
5.5 网络互联
当不同质的网络(包括PAN,LAN,MAN和WAM等)连接在一起形成的网络互联(Internetwork)或者简单的互联网(Internet)。“I”大写,表示互连!!
何以连接网络
一个例子说明一切,源主机在802.11网络上,要给以太网上的目标机器发送数据包。
隧道技术(tunneling):
通过这种技术,从一个多协议路由器到另一个多协议路由器的整个行程就像是单条链路上的一跳。这一技术广泛的应用于因使用其他网络而被隔离的主机和网络。结果生成的网络就是所谓的覆盖(overlay)网络,缺点在于无法到达隧道之下的网络的主机。==》变成了虚拟专用网络(VPN,Virtual Private Networks),VPN就是一个提供安全措施的简单覆盖网络。
互联网路由:
内部网络协议(interior gateway protocol)
外部网关协议(exterior gateway protocol)
自治系统(AS,AutonomousSystem)
路由策略(routingpolicy)
数据包分段:有一个整体的认识。
5.6 Internet上的网络层
本章的又一个大重点!
设计网络层的十条原则(从最重要到最不重要):举一反三的干活
保证工作!!!!
保持简单!!!
明确选择!!
模块开发!
期望异构性
避免静态选项和参数
寻找好的而不是最完美的设计
严格发送,宽容接收
考虑可扩展性
考虑性能和成本
IPv4协议
全部都很重要!待我日后详细补上!
IPv4协议头èIP地址前缀子网èCIDR-无类域间路由(Classless Inter-Domain Routing)(路由聚合(route aggregation),超网(supernet))èNAT-网络地址转换
以太网地址与IP地址?
IPv6协议
此时源地址和目标地址均是16字节,IPv6地址的表示方法。
另外,校验和字段(Checksum)被去掉了。
Internet控制协议
知道ICMP ARP DHCP用处。
OSPF BGP
我会单独分出详细的一文来阐述。
今日事,今日毕!
今日目标完成!
明天第六章走起。。。。。。。。
还有啊,昨天晚睡了半个小时,早上7点半才起床,然后洗漱台好好人,路上也堵得死死的,所以说,每天早起20分钟是有道理的!