计算机网络-网络层
网络层被设计成“向上提供简单灵活的,无连接的,尽最大努力交付的数据报服务”的特性,即所传输的分组没有保证,可能出错,丢失,重复,失序,或超时。 但这样设置好处是:网络的造价大大降低(比如路由器),运行方式灵活,能够适应多种应用(即在网络层之上的传输层可以基于灵活的网络层作很多拓展工作) 异构网络互联 不同协议的网络子系统通过**中间设备(中继设备)**相互连接起来,形成更大的系统。(P135) 中继设备: 物理层:中继器,集线器(Hub) 数据链路层:网桥或交换机 网络层:路由器 网络层之上:网关 路由与转发 路由器的两功能:路由选择(确定哪一条路径 => 构建和维护路由表)和分组转发(当一个分组到达时要完成的动作 => 查询,转发以及队列管理和任务调度等)。 拥塞控制 网络进入拥塞状态的方法:观察网络吞吐量和负载的关系。 如果随着网络负载的增加,网络的吞吐量明显小于正常吞吐量(或者不增反降),则说明可能(一定)进入了拥塞状态。(注意:正常情况下,负载越高,吞吐量越大) 拥塞控制和流量控制(联系到链路层的流量控制)的区别 流量控制是在发送端和接受端点对点通信时的数据传输控制,它数局部性控制,且是接收端来控制发送端 而拥塞控制则是一个全局性的问题,它确保的是一个子网内的数据能够成功传输到彼此。 拥塞控制的方法 开环控制:静态的预防方法,系统启动后,设置的控制调度算法不能改版。 闭环控制:动态方法,采用监测网络系统去监视,及时检测哪里发生了拥塞,然后将拥塞的信息传输到合适的地方,以便调整网络系统的运行。 路由算法 静态路由算法 => 网络管理员手动配置的路由信息,它不能适应网络状态的变化。 动态路由算法 => 通过路由器之间相互传递信息并且根据一定的算法,实时更新路由表的信息。 动态路由算法的两个主要算法 距离-向量路由算法 => 实现协议RIP(路由信息协议) => 应用层协议,使用了UDP传送数据 所有结点定期地将它们的**整个路由选择表(下面统称为路由表)**传送给其所有的相邻结点。 每个结点从相邻结点拿到路由表信息后,迭代计算到每个结点的最短距离,并实时更新自己的路由表。 链路状态路由算法 => 实现协议OSPF(开放最短路径优先) => 网络层协议,使用ip数据包传递数据 每个结点(路由器)向本自治系统的所有节点发送自己和自己相邻路由器之间的链路状态,即先把信 息发送给相邻的路由器,然后通过相邻的路由器再次发送给它的相邻路由器,这样不断迭代传递,最终所有结点都能获得发送结点的相邻链路状态。 => 泛洪法 最后每个路由器都能获得自治系统内所有节点的相邻链路状态,然后按照一定的算法,更新自己的路由转发表。 所以该算法要求每个参与算法的结点都具有完全的网络拓扑信息。 层次路由 设想一下,如果对网络中众多的路由不分层次,则会使得每次转发的路由表(或链路信息)异常庞大,无论是更新还是查阅都会非常消耗性能,其次灵活性也不高,因为没有分层,导致整个路由系统必须统一协议标准,而不能“因地制宜”。 所以考虑把整个互联网划分为较小的自治系统(每个自治系统有多个局域网),每个较小的自治系统可以设置自己的路由协议,同时也需要自治系统间的协议来屏蔽不同路由协议自治系统的通信。 自治系统内使用的路由选择协议叫做内部网关协议(IGP) => 例如RIP,OSPF等 自治系统间使用的路由选择协议叫做外部网关协议(EGP) => 例如BGP等。 ipv4 ipv4分组格式如下所示 注意:有些描述存储大小的字段是有单位的,比如首部长度,总长度等,这些会在下面单独说明 首部长度单位: 32位(4Byte) 总长度:首部加数据段的总长度,单位:Byte 片位移:由于MTU的限制,ip数据报如果过长会被分片,那么该字段则表示该片段在原分组的相对位置,用于之后在目的地拼接。长度单位:8Byte,所以每个分片的长度一定是8B的整数倍(除最后一片) 网络地址转换(NAT) 将专门网络地址转换为公用地址,从而隐藏内部管理的IP地址。这样做的好处是可以增多主机的ip分配,一个局域网的主机可以用多个内网ip标识,而它们的公网地址则只需要用一个ip标识即可,而NAT就做的是这其中的转换工作。 即一台主机可以用 一个公网ip + 一个内网ip 唯一标识。...