text: 运输层
  OSI七层模型中的物理层、数据链路层和网络层，它们是面向网络通信的低三层协议。运输层负责端到端的通信，既是七层模型中负责数据通信的最高层，又是面向网络通信的低三层和面向信息处理的最高三层之间的中间层。运输层位于网络层之上、会话层之下，它利用网络层子系统提供给它的服务去开发本层的功能，并实现本层对会话层的服务。
  运输协议
  运输层（传输层），解决的是计算机程序到计算机程序之间的通信问题，即所谓的“端”到
  运输层“端”的通信。引入传输层的原因： 增加复用和分用的功能、 消除网络层的不可靠性、 提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输。运输层是ISO/OSI的第四层，处于通信子网和资源子网之间，是整个协议层次中最核心的一层。它的作用是在优化网络服务的基础上，为源主机和目标主机之间提供可靠的价格合理的透明数据传输，使高层服务用户在相互通信时不必关心通信子网实现的细节。运输层的最终目标是为传送服务用户提供有效、可靠和价格合理的运输服务，而传送服务的用户即会话层实体。运输层是OSI七层模型中最重要最关键的一层，是唯一负责总体数据传输和控制的一层。运输层要达到两个主要目的：第一提供可靠的端到端的通信；第二，向会话层提供独立于网络的运输服务。 首先，运输层之上的会话层、表示层及应用层均不包含任何数据传输的功能，而网络层又不一定需要保证发送站的数据可靠地送至目的站；其次会话层不必考虑实际网络的结构、属性、连接方式等实现的细节。根据运输层在七层模型中的目的和地位，它的主要功能是对一个进行的对话或连接提供可靠的传输服务；在通向网络的单一物理连接上实现该连接的利用复用；在单一连接上进行端到端的序号及流量控制；进行端到端的差错控制及恢复；提供运输层的其它服务等。运输层反映并扩展了网络层子系统的服务功能，并通过运输层地址提供给高层用户传输数据的通信端口，使系统间高层资源的共享不必考虑数据通信方面的问题。
  基本功能
  提供端到端（进程-进程）的可靠通信，即向高层用户屏蔽通信子网的细节，提供
  运输层通用的传输接口。
  1. 把传输地址映射为网络地址；2. 把端到端的传输连接复用到网络连接上；3. 传输连接管理；4. 端到端的顺序控制、差错检测及恢复、分段处理及QoS监测；5. 加速数据传送；6.将传输层的传输地址映射到网络层的网络地址；7. 将多路的端点到端点的传输连接变成一路网络连接；8. 传输连接的建立、释放和监控；9. 完成传输服务数据单元的传送；10. 端点到端点传输时的差错检验及对服务质量的监督。
  TCP/IP的运输层中的两个协议
  用户数据报协议UDP(User Datagram Protocol)：提供无连接服务；传输控制协议TCP(Transmission Control Protocol)：提供面向连接服务。UDP和TCP都使用IP协议。
  1.UDP提供了不可靠的无连接传输服务。它使用IP携带报文，但增加了对给定主机上多个目标进行区别的能力。 UDP没有确认机制；不对报文排序；没有超时机制；没有反馈机制控制流量；使用UDP的应用程序要承担可靠性方面的全部工作。
  2. 传输控制协议TCP(Tranmission Control Protocol)面向连接的、可靠的、端到端的、基于字节流的传输协议；TCP不支持多播（multicast）和广播（broadcast）；TCP连接是基于字节流的，而非消息流，消息的边界在端到端的传输中不能得到保留；对于应用程序发来的数据，TCP可以立即发送，也可以缓存
  运输层一段时间以便一次发送更多的数据。为了强迫数据发送，可以使用PUSH标记；对于紧急数据（urgent data），可以使用URGENT标记。
  端口的概念
  端口：用16位来表示，即一个主机共有65536个端口。序号小于256的端口称为通用端口，如FTP是21端口，WWW是80端口等。端口用来标识一个服务或应用。一台主机可以同时提供多个服务和建立多个连接。端口(port)就是传输层的应用程序接口。应用层的各个进程是通过相应的端口才能与运输实体进行交互。服务器一般都是通过人们所熟知的端口号来识别的。例如，对于每个TCP/IP实现来说，FTP服务器的TCP端口号都是21，每个Telnet服务器的TCP端口号都是23，每个TFTP(简单文件传输协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用众所周知的1－1023之间的端口号。这些人们所熟知的端口号由Internet端口号分配机构（Internet Assigned Numbers Authority, IANA）来管理。
  用户数据报UDP的格式
  运输层用户数据报UDP包括两个字段：数据字段和首部字段。首部字段有8个字节，4个字段组成，每个字段两个字节。源端口字段： 源端口号；目的端口字段：目的端口号；长度字段：UDP数据报的长度；检验和字段：防止UDP数据报在传输中出错。伪首部：仅为计算检验和而构造。UDP通常作为IP的一个简单扩展。它引入了一个进程端口的匹配机制，使得某用户进程发送的每个UDP报文都包含有报文目的端口的编号和报文源端口的编号，从而使UDP软件可以把报文传递给正确的接收进程。
  UDP提供的服务：UDP提供的服务与IP协议一样，是不可靠的、无连接的服务。但它又不同于IP协议，因为IP协议是网络层协议向运输层提供无连接的服务，而UDP是传输层协议，它向应用层提供无连接的服务。UDP有以下优点：发送数据之前不需要建立连接，发送后也无需释放，因此，减少了开销和发送数据的时延。UDP不使用拥塞控制，也不保证可靠交付，因此，主机不需要维护有许多参数的连接状态表。UDP用户数据报只有8个字节的首部，比TCP的20个字节的首部要短。由于UDP没有拥塞控制，当网络出现拥塞不会使源主机的发送速率降低。因此UDP适用实时应用中要求源主机的有恒定发送速率的情况。
  TCP提供的服务
  运输层1.端到端的面向连接的服务；2. 完全可靠性；全双工通信；3.流接口；4.应用程序将数据流发送给TCP；5.在TCP流中，每个数据字节都被编号（序号）；6.TCP层将数据流分成数据段并以序号来标识；7.可靠的连接建立和完美的连接终止。TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流，并使每一个字节对应于一个序号。 TCP的编号与确认：TCP不是按传送的报文段来编号。TCP将所要传送的整个报文看成是一个个字节组成的数据流，然后对每一个字节编一个序号。在连接建立时，双方要商定初始序号。TCP就将每一次所传送的报文段中的第一个数据字节的序号，放在TCP首部的序号字段中。TCP的确认是对接收到的数据的最高序号（即收到的数据流中的最后一个序号）表示确认。但返回的确认序号是已收到的数据的最高序号加1。也就是说，确认序号表示期望下次收到的第一个数据字节的序号。由于TCP能提供全双工通信，因此通信中的每一方都不必专门发送确认报文段，而可以在传送数据时顺便把确认信息捎带传送。这样可以提高传输效率。
  TCP报文段的格式
  从TCP报文段格式图可以看出，一个TCP报文段分为首部和数据两部分。
  首部固定部分各字段的意义如下：
  源端口/目的端口：TSAP地址。用于将若干高层协议向下复用
  发送序号：是本报文段所发送的数据部分第一个字节的序号
  确认序号：期望收到的数据（下一个消息）的第一字节的序号
  首部长度：单位为32位（双字） ；
  控制字段
  紧急比特（URG）：URG=1时表示加急数据，此时紧急指针的值为加急数据的最后一个字节的序号 ；
  确认比特（ACK）：ACK=1时表示确认序号字段有意义 ；
  急迫比特（PSH）：PSH=1时表示请求接收端的传输实体尽快交付应用层 ；
  复位比特（RST）：RST=1表示出现严重差错，必须释放连接，重建 ；
  同步比特（SYN）：SYN=1，ACK=0 表示连接请求消息。SYN=1，ACK=1 表示同意建立连接消息；
  运输层终止比特（FIN）：FIN=1时表示数据已发送完，要求释放连接；窗口大小：通知发送方接收窗口的大小，即最多可以发送的字节数 ；
  检查和：12B的伪首部 首部 数据；
  选项：长度可变。TCP只规定了一种选项，即最大报文段长度 ；
  TCP的流量控制
  TCP使用滑动窗口机制来进行流量控制。当一个连接建立时，连接的每一端分配一个缓冲区来保存输入的数据。当数据到达时，接收方发送确认ACK，并包含一个窗口通告（剩余的缓冲区空间的数量叫窗口）。如果发送方收到一个零窗口通告，将停止发送，直到收到一个正的窗口通告。当接收方窗口为0后应用层取出小部分数据将产生一个比较小的窗口通告，使得对方发送一些小的数据段，效益很低。可以通过延迟发送窗口通告或发送方延迟发送数据来解决。使用了窗口机制以后，提高了网络的吞吐量。
  TCP如何发现拥塞
  1.收到ICMP的源抑制报文；2.超时包丢失；3.TCP把发现包丢失解释为网络拥塞。
  运输层拥塞避免：指当拥塞窗口增大到门限窗口时，就将拥塞窗口指数增长速率降低为线性增长速率，避免网络再次出现拥塞。迅速递减：TCP总是假设大部分包丢失来源于拥塞，一旦包丢失，则TCP降低它发送数据的速率，这种方法能够缓和拥塞。慢启动：TCP开始时只发送一个消息；如果安全到达，TCP将发送两个消息；如果对应的两个确认来了，TCP就再发四个，如此指数增长一直持续到TCP发送的数据达到接收方通告窗口的一半，这时TCP将降低增长率。TCP的重传机制：TCP重传机制是TCP中最重要和最复杂的问题之一。TCP每发送一个报文段，就设置一次记时器。只要记时器设置的重传时间到而还没有收到确认，就要重传这一报文段。TCP监视每一连接中的当前延迟，并适配重发定时器来适应条件的变化。重发定时器基于连接往返延迟：
  RTTnew = (alpha*RTTold) ((1 - alpha)*RTTsample))
  RTO = beta*RTTnew
  TCP的运输连接管理
  1.运输连接管理目的：使运输连接的建立和释放都能正常的进行；2.连接建立的采用的过程叫做三次握手协议或三次联络。三次握手(three-way handshake)方案解决了由于网络层会丢失、存储和重复分组带来的问题。三次握手正常建立连接的过程：主机 A 发出序号为X的建立连接请求CR TPDU。主机 B 发出序号为Y的接受连接确认ACK TPDU，并确认A的序号为X的建立连接请求。主机 A 发出序号为X的第一个数据DATA，并确认主机 B的序号为Y的接受连接确认。
  TCP的有限状态机：TCP将连接可能处于的状态及各种状态可能发生的变迁，画成如下图所示的有限状态机。图中的每一个方框就是TCP可能具有的状态。方框中写的字是TCP标准中给该状态起的名字。状态之间的箭头表示可能发生的状态变迁。箭头旁边写上的字，表示是什么原因引起这种变迁，或表明发生状态变迁后又出现什么动作。
  运输协议等级
  运输层的功能是要弥补从网络层获得的服务和拟向运输服务用户提供的服务之间的差距。它所关心的是提高服务质量包括优化成本。运输层的功能按级别和任选项划分，级别定义了一套功能集，任选项定义在一个级别内可以使用的功能。OSI定义了五种协议级别，即级别0（简单级）、级别1（基本差错恢复级）、级别2（多路复用级）、级别3（差错恢复和多中复用级）和级别4（差错检测和恢复级）。级别与任选项均可在连接建立过程中通过协商选用。运输层实体 选用级别及任选项的依据为： 通过T－CNNECT语表示的运输服务用户的要求。 可用的网络服务质量。 传输服务用户所能与价格之比。
  运输层根据用户要求和差错性质，网络服务按质量可划为下列三种类型：
  具有可接受的残留差错率和故障通知率（网络连接断开和复位发生的比率），也就是无N－RESET 完美的网络服务。
  具有可接受的残留差错率和不可接受的故障通知率，即完美的分组递交但有N-RESET或N-ISCNNECT存在的网络服务。
  具有不可接的残留差错，即网络连接不可靠，可能会丢失分组或出现重复分组，且存在N-RISCONNET的网络服务。 可见，网络服务质量的划分是以用记户要求比较高,则一个网络可能归于C型 ，反之则一网络可能归于B型甚至A型 。例如：而同一网络对银行系统来说则只能算作C型了。三种类型的网络服务中，A型质量最高，分组的丢失，重复或复位等情况可以忽略不计，一般来说，能提供A型服务的公用宽或网几乎没有。B型网络质量次之，大多数X-RESET出现这就需要运输层协议来解决。c型网络服务质量最差，它是完全不可靠的服务，那些纯提供数据服务的宽域网，无线电分组交用网和很多国际网都属些类。服务质量划分得较高的网络，仅需要较简单的协议级别；反之，服务服务质量划分较低的网络，则需要复杂的协议。
  五种协议级别中，级别0提供简单的运输连接，它是专为A型网络设计的。级别0提供具有商的连接建立、分段和差错报告的数据运输所需要复杂的功能，以及网络服务提供的流量控制和拆线功能。级别1以最小开销提供了基本的运输连接，它是专为B型网络连接设计的。级别1提供具有运输连接，拆线和在一个网络连接上支持；连续的运输连接的能，并提供检级别0的功能以及在没有运输服务用户参予的情况下由网络层告警的故障恢复能力。级别2具有在一个络网连接，它是为与A型网络连接而设计的，级别2具有流量的控制的运输连接的能力。它不是供检错或差恢复功能。级别3提供级别2的功能以外，还提供具有在无运输服务用户参的情况下，检测由网络告警的故障恢复能力。级别4除提供级别3的功能以外，还提供具在
  运输层无运输服务用户参情况下，检测由网络服务提供者提供低质量服务而引起的故障，并从故障中自行恢复的能力。所检测的故障类包括分组丢失、失序、重份和残缺。级别4还提供增强抗网络故障的能力。它是专为C网络连接设计的。【运输协议数据单元的定义和结构】运输协议数据单元(TPDU)结构是由数八位组(即字节)构成的，字节的编号从1开始，并按它们进入一个网络服务数据单元(NSDU)的顺序递增。每个字节中从1到8对比特进行编号最小的字节为最高有效值。TPDDU按顺序包含下列内容：头部、若存在，则占第n+1及其以后的字节；固定部分，占第2、3...、n个字节；可变部分，若存在，则占第n+1及其以后的字节。长度指示字段L1表示包含L1本身在内头部字节数长度，L1以二进制表示，最大值为254(11111110)。例如连接(CR)TPDU的长度不得超过128个字节。若指示的长度超过或实际的网络服务用户数据，则应视为协议出错。固定部分包括TPDU代码和常出现的参数。固定部分的部分的长度和结构由TPDU代码。
  TPDU代码表中，"XXXX"在级别2、3、4中标志许可证(CDT)；在级别0和1中为"0000"。"ZZZZ" 在级别2、3、4中标志许可证；在选择接收确认任选规程时不能用。可变部分包含不常用的参数，各参数结构如图5.3所示，参数代码，字段用二进制编码参数长度指示以字节为单位指出参数值字段的长度。数据字段包含透明的用户数据，在每一个TPDU中，用户字段的长度均受限制，如cd/cc不能超过32个字节，DR不能超过64个字节，ED为1到16个字节，而DT用户数据长度受；连接建立时协商TPDU大小的限制。
  运输服务
  运输层运输层的最终目标是为用户提供有效、可靠和价格合理的服务。图5.1给出了运输层与网络层、运输服务用户三者之间的关系。在一个系统中，运输实体通过网络服务与其它运输实体通信，向运输层用户（可以是应用进程，也可以是会话层协议）提供运输服务。运输层的服务包括的内容有：服务的类型、服务的等级、数据运输、用户接口、连接管理、快速数据运输、状态报告、安全保密等。
  运输服务有两大类，面向连接的服务和无连接的服务。面向连接的服务提供运输服务与用户之间逻辑连接的建立、维持和拆除，是可靠的服务，可提供流量控制、差错控制和序列控制。无连接服务即数据服务，只能提供不可靠的服务。
  运输协议实体应该允许运输层用户能选择运输层所提供的服务等级，以利于更有效地利用所提供的链路、网络及互连网络的资源。可供选择的服务包括差错和丢失数据的程度、允许的平均延迟和最大延迟、允许的平均吞吐率以及优先级水平等。根据这些要求，可将运输层协议服务等级细分为以下四类：
  1）可靠的面向连接的协议。2）不可靠的无连接协议。3）需要定序和定时运输的话音运输协议。4）需要快速和高可靠的实时协议。
  数据运输的任务是在两个运输实体之间运输用户数据和控制数据。一般采用全双工服务，个别场合也可采用半双工服务。数据可分为正常的服务数据分组和快速服务数据分组两种，对快速服务数据分组的运输可暂时中止当前的数据运输，在接收端用中断方式优先接收。
  运输层用户接口机制可以有多种方式，包括采用过程调用、通过邮箱运输数据和参数、用DMA方式在主机与具有运输层实体的前端处理机之间运输等。
  面向连接的协议需要提供建立和终止连接的功能。一般总是提供对称的功能，即两个对话的实体都有连接管理的功能，对简单的应用也有仅对一方提供连接管理功能的情况。连接的终止可以采用立即终止运输，或等待全部数据运输完再终止连接。
  向运输层用户提供运输实体或运输连接的状态信息。
  包括对发送者和接收者的确认、数据的加密以及通过和解密以及通过保密的链路和节点的路由选择等安全保密的服务。
  服务质量
  运输层服务质量QOS（Quality of Service）是指在运输连接点之间看到的某些运输连接的特征，是运输层能的度量，反映了运输质量及服务的可用性。服务质量可用一些参数来描述，如连接建立延迟、连接建立失败、吞吐量、输送延迟、残留差错率、连接拆除延迟、连接拆除失败概率、连接回弹率、运输失败率等等。用户可以在连接建立时指明所期望的、可接受的或不可接受的QOS参数值。通常，用户使用连接建立原语在用户与运输服务提供者之间协商QOS，协商过的QOS适用于整个运输连接的生存期。但主呼用户请求的QOS可能被运输服务提供者降低，也可能被呼用户降低。
  运输连接建立延迟是指在连接请求和相应的连接确认之间容许的最大延迟。运输连接失败概率是在一次测量样本中运输连接的失败总数与运输连接建立的全部尝试次数之比。连接失败定义为由于服务提供者方面的原因造成在规定的最大容许建立延迟时间内所请求的运输连接没有成功，而由于用户方面的原因造成的连接失败概率内。
  吞吐量是在某段时间间隙内单位时间运输的用户数据的字节数，对每个方向都有吞吐量，它们由最大吞吐量和平均吞吐量组成。输送延迟是在数据请求和相应的数据指示之间所经历的时间，每个方向都有输送延迟，包括最大输送延迟和平均输送延迟。残留差错率是在测量期间，所有错误的、丢失的和重复的用户数据与所请求的用户数据之比。运输失败概率是在进行样本测量期间观察到的运输失败总数与运输样本总数之比。
  运输连接拆除延迟是在用户发起除请求到成功地拆除运输连接之间可允许的最大延迟。运输连接拆除失败概率是引起拆除失败的拆除请求次数与在测量样本中拆除请求总次数之比。运输连接
  运输层保护是服务提供者为防止用户信息在未经许可的情况下被监视或操作的措施，保护选项的无保护特性、针对被动监视的保护及针对增、删、改的保护等。运输连接优先权为用户提供了指示不同的连接所具有的不同的重要性的方法。运输连接的回弹率是指在规定时间间隔（如1秒）内，服务提供者发起的连接拆除（即无连接拆除请求的连接拆除指示）的概率。QOS参数由运输服务用户在请求建立连接时加以说明，它可以给出所期望的值和可接受的值，在某些情况下，运输实体在检查QOS参数时能立即发现其中一些值是无法实现的，在这种情况下，运输实体直接将连接失败的信息告诉的信息告诉请求者，同时说明失败的原因。另外的一种情况是运输层知道它无法实现用户期望的要求（例如1200bps的吞量），但能达到稍低一点的且仍能被用户所接受的值（例如600bps的吞吐量），那么它就在请求建立连接时向目的机发出这一值。如果目的机不能处理高于源端机可接受的值（例如300bps的吞吐量），那么它就可以将参数降至该可接受值，若目的机连该可接受值也不能处理，则拒绝连接请求。由此，请求者总能立即知道建立是否成功，若成功
  运输层则商定的QOS是什么等信息。以上过程称为选项协商，一旦各种参数协商好，则在整个连接生存期内保持不变。上述QOS参数中的一部分也选用于无连接运输服务。
  OSI运输服务定义（ISO8072）没有具体给出QOS参数的编码或允许值，这些参数通常在用户与电信部门之间商定。为防止某些用户对QOS过于贪心，大多数电信部门对于较高质量的服务相应地也收取较高的费用。OSI运输服务原语：传输层为上一层的应用程序提供一个标准的原语集，为服务提供者和用户之间进行可靠的数据传输架起了一座“桥梁”。ISO规范包括四种类型10个运输服务原语，见表5.2。其中服务质量参数指示用户的要求，诸如吞吐量、延迟、可靠度和优先度等。运输 服务（TS）用户数据参数最多可达32个八进制用户数据。