您的位置:首页 > 理论基础 > 计算机网络

TCP和UDP的区别(热门面试题目)

2016-05-31 22:35 645 查看
TCP和UDP都是TCP/IP里传输层的协议,但是两者却有明显区别。

首先,我们来看看TCP和UDP的报文结构





从两张图,我们不难看出,TCP的报文要比UDP的报文复杂得多。但是复杂是有好处的,因此我们得出如下结论:

**1、TCP的报文头比UDP的报文头长;

2、TCP的可靠性要比UDP的可靠性要强;

3、TCP的效率要比UDP的效率低。**

再来看看标准的说法:

一、UDP(User Datagram protocol)用户数据报协议,它只是在网络层IP协议的基础上增加了一点功能,其特点有:

(1)UDP是无连接的,发送数据之前不需要建立连接(而TCP需要,这是最重要的区别!),减少了开销和延时。

(2)UDP尽最大努力交付,所以不能保证数据传输的可靠性。这也就是牺牲了可靠性而换区了实时性

(3)UDP是面向报文的,对于应用层传输下来的数据进行简单的报文头(8字节)封装,首部开销小。

(4)UDP**没有拥塞控制**,出现网络拥塞时,发送方也不会减缓发送的速度,这种特性,对某些实时性要求较高的应用是很重要的,比如IP电话,视频会议等,他们允许拥塞时丢弃掉一些数据,以避免造成延时的积累。

(5)UDP支持一对一、一对多、多对一、多对多的通信模式。



二、TCP(Transmisson Control Protocol)传输控制协议。

(1)TCP提供可靠的数据传输服务,TCP是面向连接的(很重要)。应用程序在使用使用TCP协议传输数据之前,需要建立连接,就类似于打电话一样,需要接通,最后还需要挂电话。

(2)TCP连接是点对点的,一条TCP连接只能连接两个点。

(3)TCP提供可靠传输,无差错、不丢失、不重复、按顺序。

(4)TCP提供全双工通信,允许通信双方在任何时候都能发送数据和接受数据。因为TCP连接的两端都设有发送缓存和接收缓存。

(5)TCP面向字节流,TCP并不知道传输的数据的具体含义,仅把数据看错一连串的字节进行传输,而且也不保证发送的数据快和接受的数据块具有大小对应的关系。

TCP的三次握手连接

(1) 客户端发出请求连接报文段,其中报头控制位 SYN=1,初始序号 seq=x。客户端进入 SYN-SENT(同步已发送)状态。

(2) 服务端收到请求报文段后,向客户端发送确认报文段。确认报文段的首部中 SYN=1,ACK=1,确认号是 ack=x+1,同时为自己选择一个初始序号 seq=y。服务端进入 SYN-RCVD(同步收到)状态。

(3) 客户端收到服务端的确认报文段后,还要给服务端发送一个确认报文段。这个报文段中 ACK=1,确认号 ack=y+1,而自己的序号 seq=x+1。这个报文段已经可以携带数据,如果不携带数据则不消耗序号,则下一个报文段序号仍为 seq=x+1。

至此 TCP 连接已经建立,客户端进入 ESTABLISHED(已建立连接)状态,当服务端收到确认后,也进入 ESTABLISHED 状态,它们之间便可以正式传输数据了。

当传输数据结束后,通信双方都可以释放连接,这个释放连接过程被称为 释放连接(具体过程略) 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCP-IP linux