常用的网络传输协议
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用的网络传输协议
网络0901 周骏达
TCP/IP协议族中最常用的两种传输协议是传输控制协议(TCP)和用户数据
报协议(UDP)。这两种协议都用于管理多个应用程序的通信,其不同点在于每个
协议执行各自特定的功能。
一、TCP:可靠通信
TCP协议通常被称为面向连接的协议,这一协议保证可靠有效地将数据从发
送者传送到接受者。
TCP通信的可靠性在于使用了面向连接的会话。主机使用TCP协议发送数据
到另一主机前,传输层会启动一个进程,用于创建与目的主机之间的链接。通过
该链接,可以跟踪主机之间的会话或者通信数据流。同时,该进程还确保每台主
机都知道并做好了通信准备。完整的TCP会话要求在主机之间创建双向会话。
会话创建后,目的主机针对收到的数据段向源主机发送确认信息。在TCP
会话中,这些确认信息构成了可靠性的基础。源主机收到确认信息时,即表明数
据成功发送,且可以退出数据跟踪。如果源主机未在规定时间内收到确认信息,它将向目的主机重新发送数据。
在TCP连接中,充当客户端的主机将向服务器发起会话。TCP连接创建具体
的过程分为以下三个步骤,即“三次握手”。
1.客户端向服务器发送包含初始序列值的数据段,开启通信会话。
2.服务器发送包含确认值的数据段,其值等于收到的序列值加1,并加上自
身的同步序列值。该值比序列号大1,因为确认字段(ACK)总是下一个预期字
节或二进制八位数。通过此确认值,客户端可以将响应和上一次发送到服务器的
数据段连接起来。
3.发送带确认值的客户端响应,其值等于接受序列值加1。这边完成了整个
连接过程。图1显示了建立一个TCP连接的步骤:
1.发送SYN消息
(SQE=100 CTL=SYN)
收到SYN消息
2.发送SYN,ACK消息
(SEQ=300 ACK=101 CTL=SYN,ACK)收到SYN消息
3.连接已建立
(SEQ=101 ACK=301 CTL=ACK)
图1 TCP连接的建立
为了理解“三次握手”的过程,必须考察两台主机交换的不同值。在TCP 数据段报头中,有6个包含控制信息的1比特字段用于管理TCP进程。分别为:UGR紧急指针,ACK确认字段,PSH推送功能,RST重置连接,SYN同步序列号,FIN发送方已传输完所有数据。这些字段用作标志,由于他们只有1比特大小,所以他们都只有两个值:1或0。当值设置为一时表示数据中包含控制信息。
此外,使用TCP协议的额外系统开销部分源自确认信息和重新发送信息所产生的网络流量。建立会话产生的其他数据段交换也构成系统开销。并且,主机在跟踪待确认的数据和重新发送过程中也会产生额外开销。
二、UDP协议:低开销通信
UDP是一种简单协议,提供了基本的传输层功能。与TCP相比,UDP的开销极低,因为UDP是无连接的,并且不提供复杂的重新传输、排序和流量控制。
由于UDP的开销极地,不像TCP那样提供可靠性的功能,所以选择UDP为传输协议的时候要小心。不过,这并不说明使用UDP的应用程序不可靠,而仅仅是说明,作为传输协议,UDP不提供上述功能,如果需要这些功能,必须通过其他方式来实现。
某些应用程序可以容许小部分数据丢失(如网络游戏或VoIP)。如果这些应用程序采用TCP,那么将面临巨大的网络延迟,因为TCP需要不停检测数据是否丢失并重传丢失的数据。与丢失小部分数据相比,网络延迟对这些应用程序早晨的负面影响更大。例如像DNS这样的应用,如果收不到回应,它就再次发出请求。因此,它不需要TCP来保证消息的可靠传输。
正是由于UDP的开销低,对此类应用程序就非常有吸引力。
与TCP的通信机制不同,由于UDP是无连接协议,因此通信发生之前不会建立会话。UDP是基于事务的,换言之,应用程序要发送数据时,它仅是发送数据而已。
很多使用UDP的应用程序发送的数据量很小,用一个数据段就够了。但是也有一些应用程序需要发送大量数据,因此需要多个数据段。UDP PDU的实际意义是数据报,尽管数据段和数据报可以互换使用来描述某个传输层PDU。
将多个数据报发送到目的主机时,它们可能使用了不同的路径,到达顺序也可能跟发送时的顺序不同。与TCP不同,UDP不跟踪序列号。UDP不会对数据报重组,因此也不会将数据恢复到传输时的顺序。
因此,UDP仅仅是将接收到的数据按照先来后到的顺序转发到应用程序。如果数据的顺序对应用程序很重要,那么应用程序只能自己标志数据的正确顺序,并决定如何处理这些数据。
以上是计算机网络传输层的两大传输协议的原理,以及各自的优缺点。在选择传输协议时,应根据应用程序的要求进行选择,扬长避短,发挥网络的最大功效。