通信网络的小论文

文章 2019-07-09 15:26:17 1个回答   ()人看过

TCP传输的可靠性

【摘要】:传输控制协议(TCP)是为了在不可靠的互联网上提供一个可靠的端到端的、面向字节流连接而设计的,它为IP服务增加了面向连接和可靠性的特点。TCP提供了传输层几乎所有的功能,保证数据传送可靠、按序、无丢失和无重复。

【关键词】:面向连接 端到端 字节流 可靠性

【Abstract】:Transmission control protocol (TCP) is designed for providing a reliable end-to-end,connected with the byte stream oriented for the unreliable Internet.It adds the characteristics of connection-oriented and reliability for IP service.TCP provides nearly all of the transport layer functions, to ensure reliable data transmission, sequential, no loss and no repeat.

【Key Words】:Connection-oriented end-to-end byte stream reliability

一、引言

UDP是一个简单的协议,是实现最低传输要求的传输层协议。但是对于大多数Internet应用,更需要可靠、按序递交的传输层协议。TCP协议具有面向连接和可靠性的特点,它使用端口号来完成进程到进程的通信。TCP为应用层提供全双工服务,所有连接都是点到点的。目前许多流行应用程序都采用了TCP,如Telnet、FTP、SMTP等,而这些应用通常是用户进程。

二、TCP的连接管理与释放

TCP是面向连接的传输层协议。在每一次数据传输之前首先要在通信双方建立一条连接,即在源进程和目的进程之间建立一条虚路径。通过两个过程完成:建立连接和释放连接。

1、建立连接

TCP以全双工方式传送数据。在任何数据传送之前,要使每一方能确知对方的存在。

TCP协议中建立连接采用三次握手(three-way handshake)的方式实现。

2、连接释放

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

TCP连接释放需要4次握手。

三、流量控制

TCP采用可变大小的滑动窗口协议进行流量控制。TCP连接的每一方都有固定大小的缓冲空间用来暂存从应用程序传递来并准备发送的数据。滑动协议窗口协议定义了在缓存上的一个窗口。TCP发送数据的大小由窗口定义。双方为每个连接各使用一个窗口。

在TCP报文段首部的窗口大小字段的值就是当前给对方设置的窗口值。 发送窗口在连接时由双方商定,在通信过程中,接收方可根据自己资源情况,随时动态调整。如果网络发生拥塞,实际窗口可能变小。

当窗口的大小为0时,发送端不能再发送数据,但是有两种例外情况:(1)紧急数据可以发送;(2)发送方想让接收方重新宣布下一个期望的字节和窗口大小,则可以发送一个字节的数据段。

四、差错控制

TCP差错控制包括检测受到损伤的报文段、丢失的报文段、失序的报文段和重复的报文段,以及检测出差错后纠正差错,它除了使用检验和,还使用确认技术和超时机制。

1、丢失或受到损伤的报文段

TCP的每一个报文段都包括校验和字段,如果检查出某个报文段受到损伤,则接收端TCP就丢弃这个报文段。TCP没有否认机制,若某报文段在超时之前没有被确认,则被认为受到损伤或已丢失,发送端重传这个报文段。

2、重复的报文段

当超时截止期到但还没有收到确认报文时,发送端就会重发这个报文段。在接收端,当它收到的这个报文段序号与已接收到的另一个报文段序号相同时,那么接收端简单丢弃这个报文段。

3、失序的报文段

TCP报文段封装在IP数据报中。每一个IP数据报进行独立的路由选择。TCP报文段可能失序到达。接收端TCP处理失序报文段的方法是不予确认,只有当被确认的字节之前的所有数据都已经接收到,才发送确认报文段。如果确认延迟了,在发送端TCP的失序报文段的计时器截止期到,则重新发送这个报文段。重复的报文将被接收端TCP丢弃。

4、丢失确认

在TCP的确认机制中,使用累计确认系统。每一个确认报文段证实了一直到由确认号指明的字节为止的所有字节都已经收到。TCP发送方使用超时机制来恢复报文段丢失问题。TCP使用累计确认系统。

五、定时器管理

1、重传定时器

为了实现TCP协议,对每个连接TCP管理4个不同的定时器。重传定时器是用于处理重传时间的。重传时间是指等待某个报文段确认的时间。重传时间的确定与TCP连接的往返时间RTT有关。重传时间可基于往返时间实现动态化调整。TCP不能对所有连接使用相同的重传时间。如重传时间太短,会导致对正在传输途中报文段的重传,增加网络负荷。如设置太长,一旦分组丢失,会使网络传输效率降低。TCP采用动态重传时间策略。

TCP每发送一个报文段后就启动重传定时器。如果在定时器超时前收到确认报文,定时器被停止。如果超时还没有收到确认报文,则报文重传,定时器复位。用于下一个报文段重传时间计算的RTT值修正:

RTT=α×(前一个RTT)+(1- α) ×(当前的RTT)α:修正因子(0 ≤ α < 1)

Karn修正算法:重传时间=βRTT

Karn提出的解决方法是:当一个超时和重传发生时,在重传数据段的确认报文最后到达前,不更新RTT,且每重传一次,超时时间加倍。决定了以前估计的RTT所占的权重。每次进行新测量时,RTT将得到更新。每个新RTT的90%来自前一个RTT,10%取自当前。

2、持续定时器

为了防止死锁情况发生,TCP对每一个连接使用一个持续定时器,当发送端TCP收到窗口大小为0的确认报文段时就启动它。如果持续定时器超时,发送端就给接收端发送一个只有一个字节数据的探测报文段。接收端对探测报文段的响应必须重传确认报文段,以将窗口大小告诉发送方。如果窗口大小非0,就可以发送数据了;如果还为0,则持续定时器再次设置,直至收到窗口大小非0的确认报文。

3、保活定时器

保活定时器用来防止一个连接较长时期的空闲。保活功能就是试图让服务器端能检测到这种半开放的连接。在大多数的实现中,都是为服务器设置保活计时器。 每当服务器收到客户端的信息,将定时器复位。超时常设为2h。如在连接空闲2h后,服务器发送探测报文段,查看客户端是否仍存在。保活功能主要为服务器应用进程提供,服务器可以获知客户是否崩溃、关机或重启了。

4、时间等待定时器

每个连接使用的最后一个定时器是时间等待定时器。在关闭连接时该连接处于Timed_Wait状态中。时间等待定时器的值通常设置为一个报文段预计的最大生存时间的两倍。

六、结语

综上所述,TCP通过下列方式来提供可靠性:

1、应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。

2、当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

3、当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒 。

4、 TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

5、既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。

6、既然IP数据报会发生重复,TCP的接收端必须丢弃重复的数据。

7、TCP还能提供流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

顶一下 ()  踩一下 () 

 

本文标签:

[!--temp.ykpl--]


友情链接: