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

原创 2016年05月31日 22:35:44

TCP和UDP都是TCP/IP里传输层的协议,但是两者却有明显区别。

首先,我们来看看TCP和UDP的报文结构
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和UDP的区别(在面试中的回答)

TCP和UDP的区别(在面试中的回答) TCP(传输控制协议):1)提供IP环境下的数据可靠传输,主要有:超时重传机制(发送端在RTO时间内未收到接收端的ack确认信息);拥塞控制(慢启动和拥塞避免...

TCP协议与UDP协议之间的九个区别-JAVA网络面试题

TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据。对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的。这就是为什么TCP和UDP是一个流行的Java编程面试问题。我曾经在...

Linux网络编程面试--tcp和udp的区别

Linux的网络编程面试--tcp和udp的区别 (1)TCP是基于连接的,UDP是基于无连接的. (2)TCP的数据是可靠的,UDP的数据是不可靠的. (3)TCP的数据是有序的,UDP的数据是...

TCP 和 UDP区别

  • 2015年04月16日 22:11
  • 387KB
  • 下载

TCP与UDP的区别

  • 2017年08月15日 11:25
  • 269KB
  • 下载

面试热门题C与C++的区别-------指针和引用

在面试过程中,C语言和C++的区别总是面试官的侧重点,而指针和引用更是容易被问到,指针和引用的区别很简单,但很少有人能有全面的,有层次有条理的回答这个问题,所以有条理的总结归纳就显得尤为重要。 先来了...

UDP和TCP区别详解

  • 2011年07月31日 19:06
  • 118KB
  • 下载

tcp和udp的区别测试实例

  • 2011年06月02日 15:38
  • 12KB
  • 下载

再谈tcp流式传输和udp数据报传输------大家顺便来做做这两个题目!

我的书算是白读了, 这个问题居然是我在工作后才明白的。 我不能怪老师没有讲清楚, 我只能认为自己没有好好学习。 计算机网络这门课, 真是个枯燥无比的东西, 至少我是这么觉得的。 当...
  • stpeace
  • stpeace
  • 2017年06月25日 10:49
  • 648

TCP与UDP的区别、用途、例子

  • 2012年08月03日 10:29
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP和UDP的区别(热门面试题目)
举报原因:
原因补充:

(最多只允许输入30个字)