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

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 状态,它们之间便可以正式传输数据了。
当传输数据结束后,通信双方都可以释放连接,这个释放连接过程被称为 释放连接(具体过程略) 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值