第 10 卷第 4 期
2008 年 8 月
安顺学院学报
JOURNAL OF ANSHUN UNIVERSITY
Vol. 10
剖析 TCP 和 UDP 协议
赵毅
(安顺学院计算机中心,贵州 安顺 561000)
摘 要:可靠性是计算机系统的基础,应用程序信赖于底层计算机系统数据的可靠传输,系
统保证数据传送到底层后不会丢失和重复。保证端对端数据传输的可靠性,是通过传输层来
实现的。在 TCP/IP 网络体系结构中. TCP 和 UDP 作为传输层最重要的两种协议,为上层
用户提供了可靠的通信。文章探析了 TCP 协议、 UDP 协议以及他们之间的区别和应用。
关键词 TCP (传输控制协议. Transport Control Protocol); UDP (用户数据报协议. User
Data ProtocoI) ;面向连接;面向无连接;三次握手
中固分类号 文献标识码 A 文章编号 1673-9507 (2008) 04 一 0093 - 02
可靠性是计算机系统的基础,应用程序信赖于底层计
算机系统数据的可靠传输,系统保证数据传送到底层后不
会丢失和重复。保证端对端数据传输的可靠性,是通过传
输层来实现的 o
在 TCP/IP 网络体系结构中, TCP (传输控制协议,
Transport Control Protocol) 、 UDP (用户数据报协议, User
Data Protocol)是传输层最重要的两种协议,为上层用户提
供级别的通信可靠性。
双方的应用程序必须建立连接。采用客户机服务模式建立
这种连接,客户方应用程序主动打开请求,通知操作系统
要建立一个连接,服务方应用程序通知操作系统,希望建
立一个输入的连接,即被动打开的功能。连续建立好之后,
应用程序开始进行数据传输。
一、传输控制协议 (TCP)
1 、 TCP 的定义及特点:
TCP (传输控制协议)定义了两台计算机之间进行可
靠的传输而交换的数据和确认信息的格式,以及计算机为
了确保数据的正确到达而采取的措施。协议规定了 TCP 软
件怎样识别给定计算机上的多个吕的进程,如何对分组重
复这类差错进行恢复。协议还规定了两台计算机如何初始
化一个 TCP 数据流传输以及如何结束这一传输。 TCP 最大
的特点就是提供的是面向连接、可靠的字节流服务。
2、什么是面向连接?什么是面向无连接?
面向连接就是在正式通信前必须要与对方建立起连接。
比如你给别人打电话,必须等线路接通了、对方拿起话筒
才能相互通话。
面向元连接就是在正式通信前不必与对方先建立连接,
3 、 TCP 报文格式
在两台计算机上的 TCP 软件之间传输的数据单元称报
文段。通过报文段的交互来建立连接、传输数据、发出确
认、通知窗口大小以及关闭连接。
。 4 10 16 24 31
源端口 目的端口
顺序号
确认号
报头长度| 保留 | 码位 端口
校验和 紧急指针
任选项 填充
数据
…...
不管对方状态就直接发送 J 面向无连接是在每个中间节点 报文分为两个部分.即报头的数据。报头携带了所需
对非面向连接的包和数据包进行路由。比如发送手机短信: 的标识的控制信息。源端口和目的端口字段包含了标识连
你在发短信的时候,只需要输入对方予机号而不必在意对 接两端的应用程序的 TCP 端口号。序号字段指示该报文段
方是否确认接收。 发送方的数据字节流中的位置。确认号字段指示本机希望
TCP是一个面向连接的协议,它需要两个端点都同意 接收的下一个字节组的序号。序号字段的值是指该报文段
连接才能进行通信。在 TCP 进行五联网络通信之前,连接 流向上的数据流的位置,即发送序号。确认号指的是与该
收稿日期: 2008 - 05 - 20
作者简介:赵毅(1961. 12 - ),男,安顺学院计算机中心实验!fiIï o
. 93 .
安顺学院学报 2008 年第 4 期
报文段流相反方向上的数据流。
报头长度字段是一个以 32 位为单位的报头长度值,报
头长度值随着它所选择的选择而变化。
4、建立 TCP 连接的工作原理
一个 TCP 连接必须要经过三次"对话"才能建立起
来,这即是我们常说的三次握手。三次握手协议是连接两
端正确同步的充要条件。因为 TCP 建立在不可靠的分组传
输服务之上,报文可能丢失、延迟、重复和乱序。因此协
议必须使用超时和重传机制。如果重传的连接请求和原先
的连接在连接同时到达,或者当一个连接已经建立、使用
和结束之后某个延时的请求才到达,就会出现问题。采用
三次握手协议可以解决这个问题。
三次握手协议可以完成两个重要功能。它确保连接双
方做好传输准备,并使双方统一了初始序列号。在关闭连
接时, TCP通过修改三次握手协议来关闭连接,以结束会
话。
二、用户数据报协议 (UDP)
1 、 UDP 的定义及特点:
UDP (用户数据报协议),是一个简单的面向数据报的
传输层协议。提供的是非商向连接的、不可靠的数据流传
输。 UDP 不提供可靠性,也不提供报文到达确认、排序以
及流量控制等功能。它只是把应用程序传给 IP 层的数据报
发送出去,但是并不能保证它们能到达目的地。因此报文
可能会丢失、重复以及乱序等。但由于 UDP 在传输数据报
前不用在客户和服务器之间建立一个连接,且没有超时重
发等机制,故而传输速度很快。
2 、 UDP 报文格式
每一个 UDP 报文称为一个用户数据报,分 UDP 报头
和 UDP数据区两部分。报头由四个 16 位长的字段组成,
分别说明该报文的源端口、目的端口、报文长度以及校验
和。
源端口字段和目的字段包含了 16 位的 UDP 协议端口
号。长度字段记录该数据报的长度。以 8 位为组计算,包
括报头和用户数据区。校验和字段是可选择的,如该字段
值为 O 表明不进行校验。一般来说,使用校验和字段是必
要的 Q
三、 TCP 和 UDP 的比较
1 、 TCP 基于连接,而 UDP 基于元连接;
2 、 TCP 基于可靠的传输,而 UDP 基于不可靠的传输;
TCP 的可靠保证,是它的三次握手机制,这一机制保
证校验了数据,保证了他的可靠性。而 UDP 就没有了,
UDP 可能丢包、不能保证数据顺序,所以不可靠。
3、对系统资源的要求 (TCP 较多, UDP 少) ;
4 、 TCP 报文是流模式,而 UDP 报文是数据报模式:
5 、 TCP适用于传输大量的数据,而 UDP 适用于少量
数据的传输;
6、速度上的区别;
由于不对数据进行校验,且无需进行三次握手,因此
UDP 的速度是 TCP 比不了的。在我们日常的应用程序中老
版 QQ 就是用 UDP 协议传输的, HTTP 是用 TCP协议传输
的,它们在传输速度上的比较,读者自己体验一下就能发
现区别了。
四、 TCP 与 UDP 的选择
如果比较 UDP包和 TCP 包的结构,很明显 UDP 包不
具备 TCP包复杂的可靠性与控制机制。与 TCP 协议相同,
UDP 的源端口数和目的端口数也都支持一台主机上的多个
应用。一个 16 位的 UDP 包包含了一个字节长的头部和数
据的长度,校验码域使其可以进行整体校验。许多应用只
支持 UDP,如:多媒体数据流,不产生任何额外的数据,
即使知道有破坏的包也不进行重发。很明显,当数据传输
的性能必须让位于数据传输的完整性、可控制性和可靠性
时, TCP 协议是当然的选择。当强调传输性能而不是传输
的完整性时,如:音频和多媒体应用, UDP是最好的选择。
在数据传输时间很短,以至于此前的连续过程成为整个流
量主体的情况下, UDP 也是一个好的选择,如 DNS 交
换。把 SNMP 建立在 UDP 上的部分原因是设计者认为当发
生网络阻塞时, UDP较低的开销使其有更好的机会去传送
管理数据。 TCP 丰富的功能有时会导致不可预料的性能低
下,但是 TCP 可靠的点对点连接越来越被绝大多数的网络
应用系统所采用。
Analysing of TCP and UDP Protocol
Zhao Yi
(Anshun College , The Centre Of Computer , Anshun 561000 , Guizhou , China)
Abstract: Dependability is the basis of a computer system. Applied programs depend on the dependable
transmission of data. The system ensures the transmission of data without being lost or repeated after it is trans-
mitted to the bottom level. As the most important protocols , the TCP/IP and UDP network systems have provid-
ed the most dependable communication for the customers. This paper deals with the difference between TCP and
UDP protocols and their applications.
Key Words: Tcp (Transport Control Protocol) i UDP (User Data Protocol) ; Connection; Connectionlessi
three times shaking hands
(责任编辑:王德红}
• 94 .