您的位置:首页 > 其它

《自顶向下法》学习笔记——第三章:运输层

2017-01-23 19:23 323 查看
第三章 运输层


1、概述和运输层服务

0)概述

    *逻辑通信:
        a)运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能;

        b)实际上这些主机可能通过很多路由器及多种不同类型的链路相连;

        c)应用进程使用运输层提供的逻辑通信功能彼此发送报文,而无需考虑承载这些报文的物理基础设施细节。
1)运输层和网络层的关系
    *网络层提供了主机之间的逻辑通信,运输层为运行在不同主机上的进程之间提供了逻辑通信。

    *运输层协议只工作在端系统中:

        a)运输层协议是在端系统中,而不是在路由器中实现的;

        b)在端系统中,运输层协议将来自应用进程的报文移动到网络边缘(即网络层),但对这些报文在网络核心中如何移动并不做任何规定。

    *运输层协议能够提供的服务(如时延和带宽保证)常常受制于底层网络层协议的服务模型。
    *但即使网络层协议是不可靠的(存在分组丢失、篡改和冗余),运输层协议也能为应用程序提供可靠的数据传输服务。

2)因特网运输层概述
    *UDP协议为调用它的应用程序提供一种不可靠、无连接的服务。
    *TCP协议为调用他的应用程序提供一种可靠、面向连接的服务。

    *IP网际协议:

        a)IP为主机之间提供了逻辑通信;

        b)IP的服务模型是尽力而为交付服务,即尽他最大努力在通信主机之间交付报文段,但并不做任何确保。即它不保证报文段的交付、不保证报文段按序交付、不保证报文段中数据的完整性;

        c)由于上述原因,IP被称为不可靠服务。

    *运输层的基本服务:

服务名称服务描述TCPUDP
进程到进程的数据交付通过多路复用和多路分解,将主机间交付扩展到进程间交付提供提供
差错检查通过在其报文段部首中包括差错检查字段而提供完整性检查提供提供
可靠数据传输通过使用流量控制、序号和定时器,TCP确保正确地、按序地将数据从发送进程交付给接收进程提供不提供
拥塞控制TCP拥塞控制防止任何一条TCP连接用过多的流量来淹没主机之间的通信链路和交换设备提供不提供


2、多路复用与多路分解

0)概念:

    *运输层的多路复用与多路分解,就是将网络层提供的“主机到主机交付服务” -》延伸到 -》为运行在主机上的应用程序提供“进程到进程的交付服务”。

    *过程描述:

        a)运输层与应用层之间通过套接字发送和接收数据;

        b)套接字有唯一标识符,主机上的每个套接字分配一个唯一的端口号

        c)每个报文段有特殊字段(源端口号目的端口号)来指示该报文段所要交付到的套接字;

    *多路分解:
        报文到达目的主机 => 运输层检查报文段中的目的端口号 => 将报文段定向到相应的套接字 => 报文段中的数据通过套接字进入其所连接的进程

    *多路复用:

        发送源主机从不同套接字中收集数据块 => 运输层为每个数据块封装上部首信息(包括源端口号+目的端口号)生成报文段 => 将报文段传递到网络层
   


2)UDP套接字与TCP套接字
   *UDP套接字由一个二元组唯一标识——目的IP地址+目的端口号;
   *TCP套及诶由一个四元组唯一标识——源IP地址+源端口号+目的IP地址+目的端口号。
3)web服务器与TCP
    *连接套接字与进程直接并非总有着一一对应的关系。当今的高性能web服务器通常只使用一个进程,但是为每个新进的客户连接创建一个新的连接套接字,在任意给定时间内都可能有许多连接套接字连接到相同的进程。


3、无连接运输-UDP

0)概述

    *UDP只是做了运输协议能做的最少工作,除了复用/分解功能及少量的差错检测外,它几乎没有对IP增加别的东西。

    *更适用UDP的几点:

        a)实时性=>实时应用通常不希望过分地延迟报文段的传送,且能容忍一些数据丢失,UDP协议更为合适;

        b)无需连接建立=>UDP不会引入建立连接的时延;

        c)无连接状态=>TCP需要在端系统中维护连接状态,包括接收和发送缓存、拥塞控制参数、序号和确认号等;

        d)分组部首开销小。
1)UDP报文段结构

      


   *UDP部首只有四个字段,每个字段由两个字节组成:

        a)“端口号”用于实现UDP的多路分解功能;

        b)“长度字段”指示了UDP报文段的字节数(部首+数据);

        c)“校验和”用于使接收方检查接收到的报文段是否存在差错。

2)UDP校验和
    *生成方法——对UDP报文段中的所有16比特字节的和进行反码运算,求和时遇到的任何溢出都被回卷。

    *作用:在既无法确保逐链路的可靠性,又无法确保内存中的差错检测的情况下,如果端到端数据传输服务要提供差错检测,就必须在端到端基础上在运输层提供差错检测。

    *虽然UDP提供了差错检测,但它对差错恢复无能为力。UDP的某种实现只是丢弃受损的报文段。


4、可靠数据传输原理

0)概述

    *可靠数据传输协议的职责:数据可以通过一条可靠的信道进行传输。借助于可靠信道,传输数据比特就不会受到损坏或丢失,而且所有数据都是按照其发送顺序进行交付。
    *TCP是在不可靠的(IP)端到端网络层之上实现的可靠数据传输协议。
1)构造可靠数据传输协议
    *基本技术:校验和,序号,定时器,ACK/NAK分组。
    *停止等待协议:当发送方处于等待ACK或NAK的状态时,它不能从上层获得更多的数据。

    *数据分组中的比特受损:

        a)自动重传请求(ARQ)协议=>差错检测(校验和)+接收方反馈(ACK/NAK分组)+重传;
     *ACK或NAK分组受损:
        a)序号=>在数据分组中添加“序号”字段,让发送方对其数据分组编号,接收方只需检查序号即可确定收到的分组是否是一次重传。

    *底层信道丢包:

        a)倒计数定时器+重传=>不管是数据分组丢失、ACK分组丢失、数据或ACK分组过度延时,都进行重传;
2)流水线可靠数据传输协议
    *停止等待协议缺点:有着非常低的发送方利用率。

    *流水线:不使用停等方式运行,运行发送方发送多个分组二无需等待确认。

        a)必须增加序号范围;

        b)协议的发送方和接收方两端也必须缓存多个分组;

        c)流水线的差错恢复基本方法——“回退N步”和“选择重传”。
3)回退N步(滑动窗口协议)
    *窗口长度:流水线中未确认的分组数不能超过某个最大允许数N。

    *累积确认:对序号为n的分组确认表明接收方已正确接收到序号n及其之前的所有分组。

    *回退N步:超时事件发生时,发送方重传所有已发送但还未被确认过的分组。

    *接收方丢弃所有失序分组:发送方必须维护窗口的上下边界及nextSeqnum在窗口中的位置,接收方仅需维护的唯一信息是下一个按序接收的分组的序号。 

     



4)选择重传
    *回退N步的性能问题:单个分组的差错就能够引起GBN重传大量分组,许多分组根本没有必要重传。

    *选择重传(SR)协议:
        a)通过让发送方仅重传那些它怀疑在接收方出错(丢失或受损)的分组而避免了不必要的重传;

        b)SR接收方将确认一个正确的分组而不管其是否按序。失序的分组将被缓存直到所有丢失分组(即序号更小的分组)皆被收到为止,这时才可以将一批分组按序交付给上层;

        c)发送方和接收方的窗口并不总是一致;

        d)窗口长度必须小于或等于序号空间大小的一半。

     



5)可靠传输机制总结: 

     




5、面向连接的运输-TCP

1)TCP连接

    *面向连接:在一个应用进程可以向另一个应用进程发送数据之前,这两个进程必须先相互“握手”。即它们必须互相发送某些预备报文段,以建立确保数据传输的参数。

    *TCP连接状态完全保留在两个端系统中,中间网络元素(路由器和链路层交换机)不会维持TCP连接状态。

    *TCP连接提供的是全双工服务,TCP连接也总是点对点的。

    *几个关键概念:

        a)三次握手;

        b)发送缓存/接收缓存,TCP连接的每一端都有各自的发送缓存和接收缓存;

        c)最大报文段长度MSS,MSS的典型值是1460字节;

     



2)TCP报文段结构
    *TCP报文段由部首字段和一个数据字段组成,TCP的部首一般是20字节。

    *当TCP发送一个大文件时,TCP通常是将该文件划分成长度为MSS的若干块;然而交互式应用通常传输长度小于MSS的数据块。      

     



    *序号和确认号:
        a)他们TCP报文段部首中两个最重要的字段,是TCP可靠传输服务的关键部分;

        b)序号是建立在传送的字节流之上,一个报文段的序号是该报文段首字节的字节流编号;

        c)主机A填充进报文段的确认号是主机A期望从主机B收到的下一个字节的序号。

    *累积确认:TCP只确认流中至第一个丢失字节为止的字节。

3)往返时间的估计与超时
    *超时时间间隔必须大于该TCP连接的往返时间RTT,即从一个报文段发出到它被确认的时间。

    *除了测量RTT外,还需要估算RTT的变化。

4)可靠数据传输
    *因特网的网络层服务(IP服务)是不可靠的。IP不保证数据报的交付,不保证数据报的按序交付,也不保证数据报中数据的完整性。对于IP服务,数据报能够溢出路由器缓存而永远不能到达目的地,数据报也可能是乱序到达,而且数据报中的比特也可能损坏。由于运输层报文段是被IP数据报携带着在网络中传输的,所以运输层报文段也会遇到这些问题。
    *TCP在IP不可靠的尽力而为的服务之上创建了一种可靠数据传输服务。TCP的可靠数据传输服务确保一个进程从其接收缓存中读出的数据流是无损坏、无间隔、非冗余和按序的数据流;即该字节流与另一方端系统发出的字节流完全相同。

    *SendBase:最早未被确认的字节序号。

    *累积确认:TCP采用累积确认,所以y确认了字节编号在y之前的所有字节都已经收到。

    *超时时间间隔加倍:发生超时事件时,每次TCP重传都会将超时间隔设为先前值的两倍。然而每当定时器在另外两个事件(即收到上层应用的数据和收到ACK)中的任意一个启动时,超时间隔都经过重新推算得到。

    *快速重传:如果TCP发送方接收到对相同数据的3个冗余ACK,它把这当做一种指示,说明跟在这个已经被确认过3次的报文段之后的报文段丢失。TCP就执行快速重传,即在该报文段的定时器过期之前重传丢失的报文段。

    *TCP的差错恢复机制也许更像回退N步和选择重传的混合体。

5)流量控制
    *一条TCP连接每一侧主机都为该连接设置了接收缓存。当该TCP连接收到正确、按序的字节后,它就将数据放入接收缓存。相关联的应用进程会从该缓存中读取数据,但不必是数据刚一到达就立即读取。

    *TCP为它的应用程序提供了流量控制服务以消除发送方使接收方缓存溢出的可能性。流量控制是一个速度匹配服务,即发送放的发送速率与接收方应用程序的读取速率相匹配。

    *TCP通过让发送方维护一个称为“发送窗口”的变量来提供流量控制。主机B通过把当前的rwnd值放入它发给主机A的报文段的接收窗口字段中,通知主机A它在该连接的缓存中还有多少可用空间。

    *当主机B的接收窗口为0时,主机A继续发送只有一个字节数据的报文段。

    *UDP并不提供流量控制。

6)TCP连接管理

     



     


     



    *创建连接——3次握手:

        a)server接收到client的TCP SYN报文段时,会为该TCP连接分配缓存和变量,并返回给client端SYNACK报文段;

        b)client端收到SYNACK报文段后,客户端也会给该TCP连接分配缓存和变量。

    *连接结束——4次挥手 :

        a)当连接结束后,主机中的资源(即缓存和变量)将被释放。


6、拥塞控制原理

1)拥塞原因与代价

    *分组重传常被作为网络拥塞的征兆,但是却无法处理导致网络拥塞的原因。为了处理网络拥塞原因,需要一些机制以在面临网络拥塞是遏制发送方。
2)拥塞控制方法
    *端到端拥塞控制:

        a)即使网络中存在拥塞,端系统也必须通过多网络行为的观察(如分组丢失与时延)来推断之;

        b)TCP必须通过端到端的方法来解决拥塞控制,TCP报文的丢失(超时或3次冗余确认)被认为是网络拥塞的一个迹象,TCP会相应减少其窗口长度。

    *网络辅助的拥塞控制:网络层构件(即路由器)向发送方提供关于网络中拥塞状态的显式反馈信息。


7、TCP拥塞控制

0)概述
<
b966
div style="margin:0px;">    *因为IP层不向端系统提供显式的网络拥塞反馈,TCP必须使用端到端拥塞控制。

    *TCP所采用的方法是让每一个发送方根据所感知到的网络拥塞程度,来限制其能向连接发送流量的速率。

        a)运行在发送方的TCP拥塞控制机制跟踪一个额外的变量,即拥塞窗口cwnd,在一个发送方中未被确认的数据量不会超过cwnd与rwnd中的最小值;

        b)TCP使用确认(网络上传输的报文被成功地交付给目的地)来触发增大它的拥塞窗口长度;

        c)一个丢失的报文段意味着拥塞,因此当丢失报文段时会降低TCP发送方的速率,减小它的拥塞窗口长度。

1)TCP拥塞控制算法
    *慢启动:

        a)cwnd的值以一个MSS开始,并且每当传输的报文段首次被确认cwnd的值就增加一个MSS;

        b)TCP发送速率起始慢,但在慢启动接待以指数增长;

        c)如果产生由超时导致的丢包事件,TCP发送方将cwnd设置为1并重新开始慢启动过程,同时将“慢启动阈值”设置为cwnd/2;

        d)当达到或超过“慢启动阈值”时,继续使cwnd翻番可能有些茹莽,此时TCP结束慢启动并转移到拥塞避免模式。

    *拥塞避免:

        a)TCP无法每过一个RTT将cwnd的值翻番,而是采用一种较为保守的方法,每个RTT只将cwnd的值增加一个MSS;

        b)出现TCP超时丢包时,TCP发送方将cwnd设置为1并重新开始慢启动过程,同时将“慢启动阈值”设置为cwnd/2,然后进入慢启动状态;
        c)连续3个冗余ack发生时,TCP将cwnd的值减半,同时将“慢启动阈值”设置为cnwd/2,然后进入快速恢复状态。
    *快速恢复:

        a)对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个冗余的ACK,cnwd的值增加一个MSS;

        b)快速恢复是TCP推荐而非必须的构件。

    *小结:TCP的拥塞控制是每个RTT内cwnd线性增加1MSS,然后出现3个冗余ACK时cwnd减半,因此TCP拥塞控制方式常被称为“加性增、乘性减”。

     


      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: