网络层

一:网络层介绍
    介于运输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若直干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
    为了实现这个目标,网络层必须知道通讯子网(即所有路由器构成的集合)的拓扑结构,并且在拓扑结构中选择适当的路由。同时网络层还必须仔细地选择路由器,以避免发生某些通讯线路和路由器负载过重,而其他线路和路由器空闲的情形。
    具体功能包括寻址和路由选择、连接的建立、保持和终止等。


二:分组交换
    如果有一台主机需要发送一个分组,那么它将分组传送给最近的路由器,该路由器或者在它自己的LAN上,或者在一条通向承运商的点到点的链路上。
    该分组将被存储在路由器上,一直到它完全到达路由器上为止,所以路由器可以校验它的校验和。
    然后它被沿路转发到下一台路由器,直到到达目标主机为止,最后在目标主机上被递交给相应的进程。

三:想传输层提供的服务
    1):目标
        1: 所提供的服务应该独立于路由器技术(即服务应与通信子网的技术无关)
        2: 路由器的数量,类型和拓扑关系对于传输层来说是不可见的。
        3: 传输层可以使用的网络地址应该有一种统一的编址方案,甚至可以跨越多个LAN和WAN。
    2):两种服务
    1: 无连接的服务(分组称为数据报 子网称为数据报子网)
        每个分组头都必须包含目的地址
        每个分组在途径节点上被单独处理
        同一数据流的分组可以走不同的路径
        在无连接方法中,网络除了把分组传送到目的地以外不需做任何事情,如果分组丢失了,接收方必须检测出错误并请求重发;如果分组因采用不同的路径而没有按序到达,接收方必须将它们重新排序。
    2: 面向连接的服务(虚电路和虚电路子网),每个分组都包含标识符指示属于哪个虚电路
        首先要发出连接请求,与目的端建立连接
        数据通信
        拆除连接

四:路由算法,负责确定一个进来的分组应该被传送到哪一条输出线路上
    类似两进程,一个进程在每个分组到达时对它进行处理,它在路由表中查找该分组所对应的输出线路。另一个进程负责填充和更新路由表。
   
    正确性:
    简单性:
    健壮性:能处理拓扑结构和流量方面的各种变化,不要求所有主机都停止所有工作,且每当某台路由器崩溃的时候也不要求网络重新启动。
    稳定性:一个稳定的算法会达到平衡且保持平衡状态不变。
    公平性:
    最优性:

    非自适应算法(静态路由):不会根据当前流量或者估计的流量和拓扑结构来调整他们的路由决策。路径预先在离线情况下计算好,在网络启动时被下载到路由器中。
    自适应算法(动态路由):会改变他们的路由决策,以反映出拓扑结构的变化,通常也会反映出流量的变化情况。
   
    1):最短路径路由(Dijkstra静态),其中加权值可以说跳数,距离,宽带,平均流量,通信开销,平均队列长度,测量得到的延迟等,可以是其中一个,也可以都考虑进去得到一个函数,通过计算得出。
    2):扩散法(静态),每一个进来的分组都将被发送到除了它进来的那条线路之外的每一条输出线路上。会产生大量的副本和无限制的转发
        一种办法是在分组头中携带一个跳数计数器,分组每到一个节点其跳数计数器就减1,当计数器为0时分组被丢弃.计数器的初始值可以设为通信子网的直径,即相距最远的两个节点之间的跳数.
        另一种办法是记住哪些分组已经转发过了,从而确保一个分组不会被同一个节点转发两次.这要求源路由器从主机收到一个分组后,将一个序号放入分组头中,同时每一个路由器对于每一个源路由器都要维护一张序号表,记录从每一个源路由器上已经收到的分组的序号.每当一个路由器收到来自某个源路由器的分组时,就用分组的序号去查找该源路由器的序号表,如果序号已在表中则该分组被丢弃.为了防止序号表过大,序号表中还应增设一个计数器k,表示序号直至k的分组都已经转发过了,从而不需要保留序号小于k的序号.
        扩散法的一种较实用的变形是选择性扩散,在这种算法中分组只朝着大致正确的方向转发,而不是转发到除输入线路外的所有线路上.
    3):距离矢量路由(Distance Vector Routing动态),每个路由器维护一张路由表(即一个矢量),他以予网络中的每个路由器为索引,表中列出了当前已知的路由器到每个目标路由器的最佳距离,以及所使用的线路。通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。
        举例来说,假定使用延迟作为“距离”的度量标准,并且该路由器发送一个列表,其中包含了他到每一个目标路由器的延时估计值;同时,他也从每个邻居路由器接收到一个类似的列表。假设一个路由器接收到来自邻居x的一个列表,其中x(i)表示x估计的到达路由器i所需要的时间。如果该路由器知道他到x的延时为m毫秒,那么他也知道在x(i)+m毫秒之间内经过x可以到达路由器i。一个路由器针对每个邻居都执行这样的计算,就可以发现最佳的估计值,然后在新的路由器表中使用这个最佳的估计值以及对应的输出路线。
        存在无穷计算问题。
    4):链路状态路由:隐藏在链路状态路由选择之后的思想十分简单,可以分5部分加以描述。每个路由器必须完成以下的工作:
        1: 发现它的邻居节点,并知道其网络地址;
            当一个路由器启动以后,它的第一个任务就是要知道谁是它的邻居,这是通过向每条点到点线路发送特殊的 HELLO分组来实现的。在另一端的路由器应发送回来一个应答来说明它是谁,这个名字必须是唯一的。
        2: 测量到它各邻居节点的延迟或开销;
            链路状态路由选择需要每个路由器知道它到邻居节点的延迟,至少得有个可信的估计值。取得延迟时间的最直接 方式就是发送一个要求对方立即响应的特殊的ECHO分组。通过测量一个来回的时间再除以2,发送方路由器就可以 得到一个可靠的延迟估计值。想要更精确些,可以重复这一过程多次,再取平均值。
            其中一个有趣的话题是,在测量延迟时是否将载荷考虑进去。如果要考虑载荷因素,往返时间应该从ECHO分组 进人队列时开始计时;如果忽略载荷,计时器就得从ECHO分组排列队列第一位时开始计时。
            两种方法都会有争议,在延时测量中引人流量因素意味着当一个路由器在两条相同带宽的线路间进行选择时, 如果一条线路总是有很重的负载,而另一条线路总是负载较轻,那么后者将被认为是一条更短的路径,这种选样 能导致良好的`跬能。
        3: 组装一个分组以告之它刚知道的所有信息;
            一旦用于交换的信息收集起来,下一步就是构造一个包含所有数据的分组。该分组以发送者的标志符开头,紧 跟着是顺序号和年龄,和一个邻居节点列表,对于每个邻居节点,都给出了它们的延迟。
            创建链接状态分组很容易,难的是决定何时创建分组。一种可能性是定期创建,即每隔一定时间间隔就创建一 次;另一种可能性是当出现重大事件时(像线路或邻居节点的增删,或它的特征值明显改变时)再创建。
        4: 将这个分组发送给其他路由器;
            基本思想是利用扩散来发布链接状态分组。为了控制扩散 ,每个分组包含一个顺序号。该顺序号在每次发送新分组时加1。路由器记下它所见过的所有信息对(源路由器, 顺序号)。当一个新的链路状态分组到达时,它先查看一下该分组是否已收到过。如果是新的,把它再向除了进入线路之外的所有线路发布;如果是重复的,则丢弃它。如果一个分组的顺序号比目前为止已到达的最大的顺序号还小,则被认为已过时而拒绝。
        5: 计算到每个其他路由器的最短路径。
            一旦一个路由器积累了一整套的链路状态分组,它便可以重组整个子网结构,因为每条线路出现过了。实际上 ,每条链路被表示了两次,两个方向各出现一次,两个值可以取平均,也可以分开用。
        6: 分级路由
            每个路由器都需要保存其他路由器的一些信息。随着网络规模的扩大,网络中的路由器也将增加。因此,路由表的规模也将增大,从而使路由器不能有效地处理网络流量。使用分级路由可以解决这个问题。
            采用分级后,路由器被划分成区域,没有路由器知道如何将分组路由到自己所在区域内的目标地址,但是对于其他区域的内部结构毫不知情。当不同的网络被互相连接起来的时候,很自然的就会将每个网络当做一个独立的区域,这样做的好处是一个网络中的路由器不必知道其他网络的拓扑结构。
        7: 广播路由,一个节点需要将信息发送给网内部分节点,这种方式成为组播或多播
            独立发送方法:这种方法不需要子网络具有特殊的广播功能,当需要广播信息时,广播节点采用点对点的传送策略将广播信息向每个节点发送一遍。这种方法不仅需要广播节点知道所有节点的地址,而且非常浪费宽带。
            扩散方法:这种方法也长生太多分组,浪费太多宽带。
            多目的路径选择:即每个分组包含一组目标或一组位图,由该位图来指定所期望的目标。当一个分组到达一个路由器的时候,路由器检查所有的目标,以确定哪些数据线路是必须的(最佳路径)。路由器位每一条需要用到的输出线路生成一份新的副本,在这份副本中只包含哪些使用这条线缆的目标。实际上原来的目标集合被分散到这些输出线路上,在经过足够多的跳数之后,每个分组只包含一个目标,因此可以被当做普通的分组来对待。
            生成树方法:生成树是子网的子集,包含所有节点但不包含回路。该方法以源节点作伪生成树的根,采用扩散方法转发数据包,是一种高效的实现方法。但问题是每个节点都需要知道相应的生成树。
            逆向路径转发:该方法近似于生成树方法但不需要实现知道生成树。即当一个节点收到一个广播包时,就检查该包是否来自通常用于从本节点发送包到广播员的链路。如果是的话,那就很有可能该广播分组时沿着最佳路径被转发过来的,因而是到达当前路由器的第一个副本。这时路由器将该分组转达到除了到来的那条线路之外的所有其他线路上。否则该分组被当做重复分组丢弃。
        8: 多播路由,使用组播路由选择方法,即每个节点都需要知道自己属于哪个组,同时需要计算一颗覆盖子网的生成树。在转发过程中,对生成树进行修剪,去掉那些不能到达小组成员的线路,最终得到一个包含小组成员的生成树。
        9: 移动主机的路由


五:拥塞控制算法
    当一个子网或者子网的一部分出现太多分组的时候,网络的性能开始下降。这种情况称为拥塞。
    拥塞控制:确保子网能够承载所到达的流量。这是一个全局性的问题,涉及到各方面的行为,包括所有的主机,所有路由器,路由器内部的存储-转发处理过程,以及所有可能会消弱子网承载容量的其他因素。
    流控制:只与特定的发送发和特定的接收方之间的点到点流量相关。其任务是确保一个快速的发送发不会持续地以超过接收方能力的速率传输数据。
    1):拥塞控制的通用原则
    1: 开环的,试图使用良好的设计来解决问题,从一开始就保证问题不会发生,一旦系统运行起来就不再中途修改。
        控制手段:确定何时接受新的流量,确定何时丢弃分组及丢弃哪些分组,以及在网络的不同点上执行调度决策。这些手段的共同之处是做出决定时不考虑网络的当前状态。
    2: 闭环的:建在的反馈环路的概念基础上。三个部分
        A:监视系统,检测到何时何地发生了阻塞。
            度量标准:由于缺少缓冲区空间而丢弃分组所占的百分比,平均队列长度,超时和重传分组的数量,平均分组延迟,以及分组延迟的标准方差。越大,表示拥塞可能性越大。
        B:将该信息传递到能够采取行动的地方
            检测到拥塞的路由器给流量源(一或多个)发送一个分组,告诉他们发生了问题。但是这些分组会给本已拥塞的子网增加负担。
            在每个分组中保留一个位或域,当拥塞流量超过某个阙值时,由该路由器填充改值域。并在其所有输出分组中填充该域,以警告它的邻居:“不要再往这边发了,这边已经堵了。”
            让主机或者路由器周期性地往外发送探询分组,显示地询问有关拥塞的情况。然后,在有问题的区域中,可以利用这些信息来路由流量。
        C:调整系统的运行,以改正问题
            它是建立在反馈环路的概念基础之上。
    总结:
    开环控制是在网络拥塞之前尽量避免拥塞,而闭环控制则是在拥塞发生之后如何处理它。
    开环算法分为两类:一类在源端采取动作。另一类在目标端产生动作。闭环算法分为两类:显示反馈和隐式反馈。

    2):拥塞预防策略
        1: 数据链路层
            重传策略:即一个发送发发送分组之后多久会超时,以及超时之后重传什么。分为选择性重传和回退N步重传。
            乱序缓存策略:如果接收方只是机械地丢弃所有的乱序分组,那么这些分组不得不被重传,从而带来额外的负载。
            确认策略:如果每个分组都离开被确认的话,则确认分组将会带来额外的流量。而如果被保存起来等待反向流量中捎带时,又可能会导致额外的重传和超时。
            流控制策略:结合确认策略,一个紧凑的流控制方案(如滑动窗口)将降低数据传输率,有助于缓解拥塞。
        2: 网络层
            子网内部的虚电路与数据报策略:选择使用需电路还是使用数据报,也会影响拥塞,因为许多拥塞控制算法只能与虚电路子网一起工作。
            分组排队和服务策略:关系到路由器是否为每条输入线路使用一个队列,是否为每条输出线路使用一个队列。还是为两者各使用一个队列,也关系到分组的处理顺序(入轮询法或基于优先级的处理方法)。
            分组丢弃策略:即当没有空间时,指明该丢弃哪个分组的原则。一个好的策略有助于缓解拥塞。
            路由算法:好的路由算法可以将流量分散到所有线路上,而不好的会将大量的流量发送到本来已经拥塞的线路上。
            分组生存期管理:负责处理一个分组在丢弃之前应该生存多长时间。如果太长会妨碍工作,而过短会导致到达目的之前就超时,导致重传。
        3: 传输层
            重传策略
            乱序缓存策略:
            确认策略
            流控制策略
            确定超时策略

    3):虚电路子网中的拥塞控制
        1: 准入控制,它广泛应用于Internet,是一种防止已经拥塞的子网进一步恶化的技术。其思想是:一旦出现拥塞的信号,则不再创建虚电路,直到问题排除为止。方法粗野,但是简单且鱼鱼实现。
        2: 允许创建新的虚电路。当网络出现拥塞的时候,它会谨慎地选择路由,使所有新的虚电路都绕开有问题的区域。
        3: 当建立虚电路的时候,在主机和子网之间进行协商以达成一致的约定。这份约定通常规定了流量和容量的形状、所要求的服务质量和其他的参数。通过这种方式,在新的虚电路上是不可能发生拥塞的,因为所有需要的资源保证能够获得,但是它的缺点是浪费资源。

    4):数据报子网中的拥塞控制
        1: 警告位,分组的头中设置一个特殊的位来只是警告状态。当路由器处于警告状态时,它就会不断的设置警告位,源主机因此也会不断地获得设置了警告位的确认分组。当警告位不断增加时,源主机就不断地减少它的传输速率,当警告位的确认分组减少到极少量的时候,源主机就会增加它的传输速率。所以只有当所有的路由器都排除问题后,流量才可以增加上去
        2: 抑制分组,抑制分组:路由器给源主机送回一个抑制分组(choke packet),并且在抑制分组中指明原分组的目标地址。同时,原来的分组在头部加上了一个标记,从而在后面的路由器中就不用发抑制分组了,因为当后面的路由器看到这个标记之后就知道在前面的路由器已经发了抑制分组了。
            但是,如果源主机有的分组已经在路上了,怎么办呢?那么,源主机将在一段时间内忽略同样的抑制分组,除非一段时间间隔到了,它又将再次监听从那个发送抑制分组的路由器发送过来的抑制分组,从而判断是减少流量还是增加流量。
        3: 逐跳抑制分组,当网络速度很高或者路由器离源主机的距离很远的时候,给源主机发送抑制分组并不能很好地其作用,因为反应太慢。
            所以在沿途的路由器上都设置抑制分组,当某个路由器给分组发送了抑制分组之后,前面的路由器就不会再往后面的路由器发送分组了。
            这种方法会使拥塞点上拥塞现象很快得到缓解,但是其代价使上游路径上需要消耗更多的缓冲区空间。

    5):丢弃负载
        当以上任何一种方法都不足以消除拥塞时,就可以考虑使用丢弃负载了。即当路由器因为来不及处理而分组被淹没时,只需要将这些分组丢弃即可。
        1: 随机早期检测 RED(Random Early Detection)
            即让路由器在情况恶化之前就开始丢弃分组,要不然就迟了。为了确定该什么时候丢弃分组,路由器维护其队列最近的平均长度值。当某一条线路上的平均长度超过一定阙值时,该线路被定为是拥塞的,从而对它采取措施。
            由于路由器可能无法判断哪一个源是引起的拥塞,所以,它只能是随机地从拥塞的队列中选取分组。
            但是路由器用什么方法告知源主机有关的问题呢?
            一种策略是给源发送一个抑制分组,但是它会带来额外的网络负载。
            另一种策略是将选取出来的分组丢弃,而不向源主机报告,源主最终会感到缺少确认分组,并采取措施。由于它知道分组的丢失往往是因为拥塞而丢弃分组照成的,所以它用减慢发送速度作为对策,而不是更加费力的发送更多的分组。

六:服务质量
    流:从一个源到一个目标的分组流。
    服务质量(QoS):可靠性,延迟,抖动和宽带
    1):获得好的服务质量所使用的技术
        1: 过度提供资源,提供足够的路由器容量,缓冲区和宽带,以保证分组能够顺利的通过。
        2: 缓冲能力,在接收方,数据流在被递交之前可以先缓存起来。将数据流缓存起来并不会影响到可靠性和宽带,但会增加延迟,然而可以消除抖动。
        3: 流量整形,他在服务器端而非客户端对流量进行平滑处理,调节数据传输的平均速率。(均匀的速度向外发送,是一种主动调整流量输出速率的措施)
            流量监管:典型应用是监督进入网络的某一流量的规格,把它限制在一个合理的范围之内,或对超出的部分流量进行“惩罚”,以保护网络资源和运营商的利益。
            漏桶算法:是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。
                A:到达的数据包(网络层的PDU)被放置在底部具有漏孔的桶中(数据包缓存);   
                B:漏桶最多可以排队b个字节,漏桶的这个尺寸受限于有效的系统内存。如果数据包到达的时候漏桶已经满了,那么数据包应被丢弃;   
                C:数据包从漏桶中漏出,以常量速率(B字节/秒)注入网络,因此平滑了突发流量。
                有点如下,  
                A:信源可以容易地保证它的通信量符合标准;   
                B:网络可以容易地验证通信量是否符合规范;   
                C:网络可以保证严格的延迟界限,避免一切又缓冲区溢出引起的丢失;   
                D:由于服务质量根据严格的界限说明,用户能够验证网络是否提供了请求的服务质量。
            令牌桶算法:网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。
            令牌桶是这样工作的:
                A:令牌以一定的速率放入桶中。
                B:每个令牌允许源发送一定数量的比特。
                C:发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。
                D:如果没有足够的令牌发送包,这个包就会等待直到有足够的令牌(在整形器的情况下)或者包被丢弃,也有可能被标记更低的DSCP(在策略者的情况下)。
                E:桶有特定的容量,如果桶已经满了,新加入的令牌就会被丢弃。因此,在任何时候,源发送到网络上的最大突发数据量与桶的大小成比例。令牌桶允许突发,但是不能超过限制。

七:网络互联
    所谓网络的互联是指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备相互连接起来,以构成更大的网络系统.
    网络互联的形式有局域网与局域网,局域网与广域网,广域网与广域网的互联三种。以实现互相通信且共享软件,数据的系统。
    1):网络是如何连接起来的
        物理层:通过中继器或集线器可以将网络连接起来,他们通常只是简单的将数据位从一个网络搬移到另一个同类型的网络中。
        数据链路层:使用网桥和交换机,可以接受帧,检查MAC地址,且将这些帧转发到另一个不同的网络中。
        网络层:路由器,将两个网络连起来,当两个网络截然不同时,路由器可能会转换分组格式。能够处理多种协议的路由器称为多协议路由器。
        (交换式网络和路由网络的区别,通过交换机,整个帧以MAC地址位基础进行传输,而路由网络,路由器从帧中提前出分组,然后利用分组中的地址来决定它的目标方向)
        传输层:传输网关即两个传输层之间的接口。类似把两个不同协议的网络蘸连起来。
    2):级联虚电路
        级联虚电路工作过程与虚电路子网工作过程相似;
        本质特征是从源主机到目标主机之间沿途经过一个或者多个网关,在这条路径上建立起一个虚电路序列号。每个网关维护一些内部表,纪录下那些虚电路经过了该网关,这些虚电路分别通向哪里,以及新的虚电路好是什么等。
        工作过程
        1: 建立连接
            A:当目的主机不在子网内时,则在子网内找一个离目的网络最近的路由器,与之建立一条虚电路;
            B:该路由器与外部网关建立虚电路;
            C:该网关与下一个子网中的一个路由器建立虚电路;
            D:重复上述操作,直到到达目的主机。
        2: 传输数据
            A:相同连接的包沿同一虚电路按序号传输;
            B:网关根据需要转换包格式和虚电路号。
        3: 拆除连接

    3):无连接互联网络
        无连接网络互连的工作过程与数据报子网的工作过程相似;
        每个包单独路由,提高网络利用率,但不能保证包按顺序到达;
        根据需要,连接不同子网的多协议路由器做协议转换,包括包格式转换和地址转换等。

    4):级联虚电路和无连接互联网络比较
        1: 级联虚电路的优点
            A:路由器预留缓冲区等资源,保证服务质量;
            B:包按序号传输;
            C:短包头。
        2: 级联虚电路的缺点
            A:路由器需要大量内存,存储虚电路信息;
            B:一旦发生拥塞,没有其它路由;
            C:健壮性差;
            D:如果网络中有一个不可靠的数据报子网,级连虚电路很难实现。
        3: 无连接网络互连的优点
            A:能够容忍拥塞,并能适应拥塞;
            B:健壮性好;
            C:可用于多种网络互连。
        4: 无连接网络互连的缺点
            A:长包头;
            B:包不能保证按序号到达;
            C:不能保证服务质量。

    5):隧道技术
        源和目的主机所在网络类型相同,连接它们的是一个不同类型的网络,这种情况下可以采用隧道技术。
        当数据包需要穿过一个异构的中间网络时,在入口处被整个地封装到一个中间网络的网络层分组中,外层分组穿过中间网络从入口到达出口,然后数据包被完整地取出来。
        这种方法的好处是可以避免复杂的异种协议转换。

    6):互联网路由
        互联网络的路由与单独子网的路由过程相似,只是复杂性增加;
        1: 两级路由算法
            内部网关协议(IGP: Interior Gateway Protocol): RIP,OSPF,网络内部使用。
            外部网关协议(EGP: Exterior Gateway Protocol): BGP,EGP,网络之间使用。
            自治系统AS(Autonomous System),由于互联网内部每个网络都独立于所有其它的网络,所以每个网络通常乘坐一个AS。
            互联网路由与网络内部路由之间的一个区别是,互联网路由可能要求跨越国际边界,会导致各种法律介入。
            另一个区别是代价,在单个网络内部通常只用一种收费算法,而不同网络可能属于不同管理部门。

    7):分段
        1: 每种网络都对最大包长有限制,有以下原因
            A:硬件,例如 TDM 的时槽限制;
            B:操作系统;
            C:协议,例如包长度域的比特个数;
            D:与标准的兼容性;
            E:希望减少传输出错的概率;
            F:希望避免一个包占用信道时间过长。
            大包经过小包网络时,网关要将大包分成若干段(fragment),每段作为独立的包传输。
        2: 网关将大包分段后,每段都要经过同一出口网关,并在那里重组;带来的问题
            A:出口网关需要知道何时所有分组都到齐;
            B:所有分组必须从同一出口网关离开;
            C:大包经过一系列小包网络时,需要反复地分段重组,开销大。
            重组方法:
            A:树型标记法
                例,包0分成三段,分别标记为0.0, 0.1, 0.2,段0.0构成的包被分成三段,分别标记为0.0.0, 0.0.1, 0.0.2;存在的问题
                段标记域要足够长
                分段长度前后要一致
            B:偏移量法
                定义一个基本段长度,使得基本段能够通过所有网络;
                包分段时,除最后一个段小于等于基本段长度外,所有段长度都等于基本段长度;
                一个包可以包括几个段,包头中包括;原始包序号,包中第一个基本段的偏移量,最后段指示位;

八:Internet上的网络层
    1):网络层设计前10调原则
        1: 保证它能够工作
        2: 尽可能使它简单
        3: 做出明确的选择
        4: 尽可能做到模块化
        5: 期望具备异构性
        6: 避免使用固定不变的选择和参数
        7: 寻找一个好的设计,它不必是最完美的
        8: 对于发送操作一定要严格,对于接收操作要有一定的容忍度
        9: 要考虑伸缩性
        10: 要考虑性能和代价
    2):IP协议
        1: IP数据报首部的固定部分中的各字段
        版本(4位),指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。   
        首部长度(4位),可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。   
        区分服务(8位),用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。   
        总长度(16位) 总长度指首部和数据之和的长度,单位为字节。因此数据报的最大长度为216-1=65535字节。   在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。   
        标识(identification6位)。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。   
        标志(flag3位),但目前只有2位有意义。   
            标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个。   
            标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。   
        片偏移(13位)。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。   
        生存时间(8位),生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。   
        协议(8位),协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。   
        首部检验和(16位)。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
        源地址(16位),表示网络号和主机号
        目标地址(16位),表示网络号和主机号

    3):IP地址
        IP地址分成了网络号和主机号两部分,设计者就必须决定每部分包含多少位。网络号的位数直接决定了可以分配的网络数(计算方法2^网络号位数);主机号的位数则决定了网络中最大的主机数
        A类:1.0.0.1-126.255.255.254 其中10.0.0.0--10.255.255.255 私有 默认子网掩码 255.0.0.0
        B类:128.1.0.1-191.254.255.254 其中172.16.0.0--172.31.255.255  私有 默认子网掩码 255.255.0.0
        C类:192.0.1.1-223.255.254.254 其中192.168.0.0--192.168.255.255 私有 默认子网掩码 255.255.255.0
        D类:224.0.0.0-239.255.255.255
        E类:240.0.0.0-247.255.255.255
        0.0.0.0 表示本机
        0.*.*.* 当前网络上的主机
        255.255.255.255 本地网络上的广播,(本网段所有主机,这个地址不能被路由器转发)
        网络.255.255.255 远程网络上的广播
        127.*.*.* 回环
        127.0.0.1 本机地址

        1:子网
            一个网络中所有主机必须具有相同的网络号
            CIDR,无类别域间路由,基本思想是将剩余的IP地址以可变大小块的方式进行分配,而不管他们所属类别。

    4):Intrnet控制协议
        1: ICMP(Internet Control Message Protocol)是Internet控制报文协议
            用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
            ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。
            ICMP“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:   
            A:侦测远端主机是否存在。   
            B:建立及维护路由资料。   
            C:重导资料传送路径。   
            D:资料流量控制。
        2: ARP,即地址解析协议,实现通过IP地址得知其物理地址。
            在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址(48位)。这样就存在把IP地址变换成物理地址的地址转换问题。
            在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。
            而在TCP/IP协议栈中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。
            于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。

            ARP代理(ARP Proxy):当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。
            所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的某个端口的MAC地址。
            于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。

        3: RARP反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
            假如一个设备不知道它自己的IP地址,但是知道自己的物理地址,网络上的无盘工作站就是这种情况,设备知道的只是网络接口卡上的物理地址。这种情况下应该怎么办呢?RARP(逆地址解析协议)正是针对这种情况的一种协议。
            A:发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;   
            B:本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;   
            C:如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;如果不存在,RARP服务器对此不做任何的响应;    
            D:源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

        4: BOOTP是一个基于TCP/IP协议的协议,它可以让无盘站从一个中心服务器上获得IP地址,为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。
            RARP使用全1广播,但路由器并不转发这样的广播消息
            客户端获取IP地址的过程如下:
            首先,由BOOTP启动代码启动客户端,这个时候客户端还没有IP地址,使用广播形式以IP地址255.255.255.255向网络中发出IP地址查询要求。
            接着,运行BOOTP协议的服务器接收到这个请求,会根据请求中提供的MAC地址找到客户端,并发送一个含有IP地址、服务器IP地址、网关等信息的FOUND帧。
            最后,客户端会根据该FOUND帧来通过专用TFTP服务器下载启动镜像文件,模拟成磁盘启动。

        5: DHCP(Dynamic Host Configuration Protocol)动态主机配置,用来给网络客户机分配动态的IP地址。
            使用DHCP时必须在网络上有一台DHCP服务器,而其他机器执行DHCP客户端。当DHCP客户端程序发出一个信息,要求一个动态的IP地址时,DHCP服务器会根据目前已经配置的地址,提供一个可供使用的IP地址和子网掩码给客户端。
            DHCP服务器有3种为DHCP客户机分配TCP/IP地址的方式:
            A:手工分配:在手工分配中,网络管理员在DHCP服务器通过手工方法配置DHCP客户机的IP地址。当DHCP客户机要求网络服务时,DHCP服务器把手工配置的IP地址传递给DHCP客户机。
            B:自动分配:在自动分配中,不需要进行任何的IP地址手工分配。当DHCP客户机第一次向DHCP服务器租用到IP地址后,这个地址就永久地分配给了该DHCP客户机,而不会再分配给其他客户机。
            C:动态分配:当DHCP客户机向DHCP服务器租用IP地址时,DHCP服务器只是暂时分配给客户机一个IP地址。只要租约到期,这个地址就会还给DHCP服务器,以供其他客户机使用。如果DHCP客户机仍需要一个IP地址来完成工作,则可以再要求另外一个IP地址。

        6: OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。
            开放最短路径协议(OSPF)协议不仅能计算两个网络结点之间的最短路径,而且能计算通信费用。
            可根据网络用户的要求来平衡费用和性能,以选择相应的路由。
            在一个自治系统内可划分出若干个区域,每个区域根据自己的拓扑结构计算最短路径,这减少了OSPF路由实现的工作量;
            OSPF属动态的自适应协议,对于网络的拓扑结构变化可以迅速地做出反应,进行相应调整,提供短的收敛期,使路由表尽快稳定化。
            每个路由器都维护一个相同的、完整的全网链路状态数据库。
            这个数据库很庞大,寻径时, 该路由器以自己为根,构造最短路径树,然后再根据最短路径构造路由表。路由器彼此交换,并保存整个网络的链路信息,从而掌握全网的拓扑结构,并独立计算路由。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值