通信网络小论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
采用动态重传时间策略。
6 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、保活定时器
保活定时器用来防止一个连接较长时期的空闲。保活功能就是试图让服务器端能检测到
这种半开放的连接。
在大多数的实现中,都是为服务器设置保活计时器。