第6章 传输层

来源:互联网 发布:软件问题跟踪表 编辑:程序博客网 时间:2024/05/01 07:53

传输层架构在网络层提供的服务之上,把数据传递服务从两台计算机之间扩展到了两台计算机上的进程之间,并且服务所需的可靠性独立于当前使用的物理网络。传输层为应用层使用网络提供了抽象模式。

6.1 传输服务

6.1.1 提供给上层的服务

传输层的最终目标是向它的用户提供高效、可靠的和成本有效的数据传输服务,他的用户通常是应用层的进程。

6.1.2 传输服务原语

段(segment):表示传输实体时间发送 的消息。
“传输服务原语”允许传输用户访问传输服务,并且这种访问是直接的和不透明的。一套简单的传输服务原语集合包括:监听(Listen)、连接(Connect)、发送(Send)、接收(Receive)、断连(Disconnect)

6.1.3 Berkeley 套接字

TCP使用套接字(socket)
Berkeley套接字接口:一个应用程序接口(API),使用一个Internet套接字的概念,使主机间或者一台计算机上的进程间可以通讯。 它可以在很多不同的输入/输出设备和驱动之上运行,尽管这有赖于操作系统的具体实现。 接口实现用于TCP/IP协议,因此它是维持Internet的基本技术之一。 它是由加利福尼亚的伯克利大学开发,最初用于Unix系统。 如今,所有的现代操作系统都有一些源于Berkeley套接字接口的实现,它已成为连接Internet的标准接口。

6.2 传输协议的要素

6.2.1 寻址

端口(port):亦传输服务访问点(TSAP,Transport Service Access Point),传输层地址。
端口映射器(portmapper)

6.2.2 连接建立

数据包生存周期限制:TCP的核心方法是源端序号作为段的标签,使得该段在T秒内不被重复使用,T的大小以及数据包速率确定了序号的大小。

6.2.3 连接释放

终止连接的方式有两种:非对称和对称释放。非对称释放连接是电话系统 的一种连接方式,当一方挂机之后,连接就中断了。对称释放连接是把连接看成连个独立的单项连接,要求单独释放每一个单项连接。
对称连接使用三次握手协议,最初建议的发起方必须对应答消息进行确认。并使用定时器建立超时断开连接或一段时间内没有段到来,自动断开连接。

6.2.4 差错控制和流量控制

差错控制确保数据传输具备所需的可靠性,通常指所有数据均被无差错第传送到目的地。流量控制是防止快速发送端淹没慢速接收端。
(1) 帧中携带一个检错码,用于检测信息是否被正确接收;
(2) 帧中携带的序号用于标识本帧,发送方在收到接收方成功接收返回确认之前,必须重发帧。这种机制称为自动重复请求(ARQ,Automatic Repeat reQuest)
(3) 任何时候允许发送方发送一定数量的帧,如果接收方没有及时返回确认,则发送方必须停止。如果只发送一帧,则协议称为停等式(stop-and-wait)协议。较大的窗口可使得发送管道化。因而提高距离长且速度快的链路性能。
(4) 滑动窗口(sliding window):TCP中采用滑动窗口来进行传输控制,滑动窗口的大小意味着接收方还有多大的缓冲区可以用于接收数据。发送方可以通过滑动窗口的大小来确定应该发送多少字节的数据。当滑动窗口为0时,发送方一般不能再发送数据报,

6.2.5 多路复用

多路复用(multiplexing):多个回话共享连接
逆向多路复用(inverse multiplexing):一个例子,流控制传输协议(SCTP,Stream Control Transmission Protocol) ,它把一条连接运行在多个网络接口上。

6.3 拥塞控制

6.3.1 理想的带宽分配

  1. 功率=负载/延迟
  2. 最大-最小公平性:如果分配给 一个流的带宽在不减少分配给另一个流带宽的前提下无法进一步增长。
  3. 收敛:拥塞控制算法能否快速收敛到公平而有效的带宽分配上

6.3.2 调整发送速率

发送速率受两个方面的限制,首先是流量控制,在接收端没有足够缓冲区的情况下,必须进行流量控制;第二个限制是拥塞控制,在网络容量不足的情况下必须进行拥塞控制。
TCP使用的是显示拥塞通知(ECN,Explicit Congestion Notification),路由器在经历拥塞的数据包中设置警告比特来警告发送端放慢速率,但不告诉源端应该减缓多少。
加法递增乘法递减(AIMD,Additive Increase Multiplicative Decrease)法则是达到有效和公平操作点的适当流量规则。
aimd是TCP采用的拥塞控制法则。

6.4 Internet传输协议:UDP

6.4.1 UDP概述

用户数据包协议(UDP,User Datagram Protocol),UDP为应用程序建立了一种无需建立连接就可发送封装的IP数据包报的方法。
UDP传输的段(segment)由8字节的头和有效载荷字段构成。
6.

6.4.2 远程过程调用

远程过程调用(RPC,Remote Procedure Call ),它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.

6.4.3 实时传输协议

实时传输协议(RTP,Real-time Transport Protocol):RTP广泛应用于流媒体相关的通讯和娱乐,包括电话、视频会议、电视和基于网络的一键通业务(类似对讲机的通话)。RTP通常运行在用户空间,位于UDP之上。
RTP的基本功能是将几个实时数据流复用到一个UDP数据包流中,其可以以单播或组播的模式传输到目标机,其没有任何保障传递可靠性的措施,数据包可能丢失,延迟或损坏。
实时传输控制协议(RTCP,Realtime Transport Control Protocol):能处理反馈,同步和用户接口等信息。第一功能是可以向源端提供有关延迟,抖动、带宽、拥塞和其他网络特性的反馈信息。还可以处理流之间的同步。

6.5 Internet 传输协议:TCP

6.5.1 TCP概述

传输控制协议(TCP,Transmission Control Protocol):是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。TCP传输实体接收本地用户数据流,将他们分割成不超过64kb(实际上去掉IP和TCP投,通常不超过1460数据字节)的分段,每个分段以单独的IP数据报形式发送。

6.5.2 TCP服务模型

TCP服务由发送端和接收端创建一种称为套接字(socket)的端点来获得。每个套接字有一个套接字编号(地址),高编号由主机的IP地址以及一个本地主机的16位端口编号组成,端口是TCP的TSAP名字。为了获得TCP服务,必须显式的在一台机器的套接字和另一台机器的套接字之间建立一个连接。
TCP连接是全双工,并且是点到点的。一个TCP就是一个字节流,而不是消息流。端到端之间不保留消息的边界。

6.5.3 TCP协议

TCP连接的每个段都有自己的32位序号。发送端和接收端的TCP实体以段的形式交换数据。TCP段(TCP segment)由一个固定的20字节的头及随后的数据字节构成。TCP实体使用的基本传输协议是具有动态窗口大小的滑动窗口协议,当发送端传送一段时,他启动一个计数器,当该段到达接收方时,接收端的TCP实体返回一个携带了确认号和剩余窗口大小的段,并且确认号的值等于接收端期望接收的下一个序号。
1. TCP使用三次握手建立连接
2. TCP释放:TCP虽是全双工,但可以将其看成是一对单工连接,每个单工连接的释放彼此独立。为了释放一个连接,任何一方都可以发送一个设置FIN标志位的TCP段,这表示其已经没有数据发送了。当FIN被另一方确认后,这个方向上的连接就被关闭,不再发送任何数据。然而另一个方向上或许还有数据传输。只有两个方向都关闭了,连接才算彻底释放。
3. TCP滑动窗口:TCP窗口管理奖正确接收段的确认和接收端的接收缓冲区分配分离开来。
4. TCP计时管理器:重传计时器(RTO,Retransmission TimeOut),当一个实体发出一个段时,它同时启动一个重传计时器。如果在该计时器超时前被确认,则计时器被停止。另一方面,如果在确认到来之前计时器超时,则段被重传。持续计时器(persistance times),其设计意图是为了避免出现以下所述的思索情况:接收端发送一个串口大小为o的确认,当发送端等待。稍后,接收端更新了窗口,但是携带更新确认的消息数据包丢失,现在发送方和接收方都在等待进一步消息。当计时器超时时,发送端给接收端发送一个探测消息。保活计时器(keeplive timer),当一个连接空闲了一段时间后,保活计时器可能超时,从而促使某一段查看另一端是否仍然在,若另一端没有响应,则终止连接。
5. TCP拥塞控制:TCP维持一个拥塞窗口(congestion window),窗口的大小是任何时候发送端可以往网络发送的字节数。确认时钟(ack clock),发送端以接收到的ack速率,TCP平滑输出流量和避免不必要的路由器队列。

0 0
原创粉丝点击