TCP协议和UDP协议的对比

TCP与UDP区别和应用场景,基于TCP的协议有哪些,基于UDP的有哪些

类型特点性能应用过场景首部字节
TCP面向连接、可靠、字节流传输效率慢、所需资源多文件、邮件传输20-60
UDP无连接、不可靠、数据报文段传输效率快、所需资源少语音、视频、直播8个字节

TCPUDP是TCP/IP体系结构的运输层中最重要的两个协议:
在这里插入图片描述
TCP和UDP协议的使用频率,仅次于网际层的IP协议。
TCP/IP体系结构应用层中的某些服务(如HTTP、SMTP等)需要使用TCP提供的服务:
在这里插入图片描述
而另一些应用层的服务(如DNS、RTP等),需要使用UDP提供的服务:
在这里插入图片描述
UDP(User Datagram Protocol)是用户数据报协议的英文缩写词。
TCP(Transmission Control Protocol)是传输控制协议的英文缩写词。
接下来,将从几个方面对这两个协议进行比较:
如图,下面是因特网上面的两台主机:
在这里插入图片描述

它们在运输层使用UDP协议进行通信,纵坐标为时间t,使用UDP协议的通信双方可以随时发送数据:
在这里插入图片描述
再来看使用TCP时的情况:
使用TCP协议的通信双方,在进行数据传输之前,必须使用三报文握手来建立TCP连接,TCP连接建立成功之后才能进行数据传输,数据传输结束之后,必须使用四报文挥手来释放TCP连接。
在这里插入图片描述
这里使用的三报文握手和四报文挥手可以参考如下文章:
https://blog.csdn.net/sunqi568/article/details/106671419
https://blog.csdn.net/weixin_43207025/article/details/106886738
需要注意的是,这里说的TCP连接是指逻辑连接,而不是物理连接。
综上所述,UDP是无连接的,TCP是面向连接的。
这是某个通信网上,使用UDP协议的四台主机:
在这里插入图片描述
其中,任何一台主机都可以向其他任意三台主机发送广播:
在这里插入图片描述
也可以向某个多播组发送多播:
在这里插入图片描述
还可以向某台主机发送单播:
在这里插入图片描述
也就是说,UDP支持单播、多播以及广播,换句话说,UDP支持一对一、一对多、一对全的通信。
再来看使用TCP协议的情况:
使用TCP协议的通信双方,在使用数据传输之前,必须使用三报文握手来建立TCP连接:
在这里插入图片描述
TCP连接建立成功之后,通信双方就好像有一条可靠的通信信道:
在这里插入图片描述
通信双方使用这条可靠信道进行通信,很显然,TCP仅仅支持单播,也就是一对一的通信。
接下来对比这两个协议对应用报文的处理:
先看使用UDP协议的情况:
在这里插入图片描述
在这里插入图片描述
发送方的应用进程将应用层报文交付给运输层的UDP:
在这里插入图片描述
UDP直接给应用报文添加一个UDP首部:
在这里插入图片描述
使之成为UDP用户数据报,然后进行发送:
在这里插入图片描述
这里忽略运输层下面的各层处理
在这里插入图片描述
接收方的UDP接收到用户数据报后:
在这里插入图片描述
去掉UDP的首部,将应用层报文交付给应用进程:
在这里插入图片描述
也就是说,UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,换句话说,UDP是面向应用报文的。
再来看使用TCP协议的情况:
在这里插入图片描述

发送方的TCP把应用进程交付下来的数据块仅仅看作是一连串的无结构的字节流:
在这里插入图片描述
TCP并不知道这些字节流的含义,仅将它们编号并放入发送缓存中:
在这里插入图片描述
TCP根据发送策略,从发送缓存中的提取一定数量的字节来构建TCP报文段来发送:
在这里插入图片描述
接收方的TCP 一方面从所接收到的TCP报文段中取出数据载荷部分并存储在接收缓存中:
在这里插入图片描述
一方面把接收缓存的字节交付给应用进程:
在这里插入图片描述
TCP不保证接收方应用进程所收到的数据块与发送方应用进程所发出的数据块具有对应大小的关系。
例如,发送方的应用进程交给发送方的TCP共10个数据块,但接收方的TCP可能只用了4个数据块就把收到的字节流交付给了上层的应用进程,但接收方收到的应用进程收到的字节流必须和发送方的应用进程发送的字节流完全一致,当然接收方的应用进程必须有能力识别收到的字节流,把它还原成有意义的应用层数据。
也就是说TCP是面向字节流的,这正是TCP实现可靠传输、流量控制以及拥塞控制的基础。
需要说明的是,上面的图只说明了一个方向的字节流,在实际网络中,基于TCP连接的两端,可以同时进行TCP报文段的发送和接收,也就是全双工通信。
另外,图中的TCP报文段的数据部分,只包含了几个字节,实际当中,一个TCP报文段包含上千个字节是很常见的。
再来看下一个对比:
我们知道TCP/IP体系结构的网际层向上层提供无连接不可靠的传输服务:
在这里插入图片描述
当运输层使用UDP协议时,向其上层页提供无连接不可靠的传输服务:
在这里插入图片描述
发送方给接收方发送用户数据报,若传输过程中,用户数据报受到干扰而产生误码,接收方UDP可以通时该数据报首部中的校验和字段的值,检测出产生误码的情况,但是仅仅丢弃该数据报,其他什么也不做:
在这里插入图片描述
发送方给接收方发送UDP数据报,如果该数据报被因特网上面的某个路由器丢弃了,发送方UDP不做任何的处理:
在这里插入图片描述
因为UDP向上层提供的是无连接不可靠的传输服务。
因此,对于UDP数据报出现了误码和丢失等问题,UDP并不关心,基于UDP的这个特点,UDP适用于实时应用,例如IP电话、视频会议等。
再来看使用TCP协议的情况:
尽管网际层向上层提供的是无连接不可靠的传输服务,也就是说,IP数据报可能在传输过程中出现丢失和误码:
在这里插入图片描述
但只要运输层使用TCP协议,就可向其上层提供面向连接的可靠传输服务:

在这里插入图片描述
我们可以将其想象成基于TCP协议的收发双方,基于TCP连接的可靠信道进行数据传输:
在这里插入图片描述
不会出现传输差错(误码、丢失、乱序、重复等):
在这里插入图片描述
TCP向上层提供面向连接的可靠传输服务,例如文件传输。
下面来对比一下TCP和UDP报文段的首部:
一个UDP用户数据报由首部和数据载荷两部分构成:
UDP的首部格式如图所示:
在这里插入图片描述
其仅有四个字段,每个字段长度为两个字节,由于UDP不提供可靠传输服务,它仅仅在文件网际层的基础上,添加了用于区分应用进程的端口。
一个TCP用户数据报由首部和数据载荷两部分构成:
其首部格式如如图所示:
在这里插入图片描述
这比UDP数据报的格式复杂得多,其最小长度为20字节,最大长度为60字节,这是因为TCP要实现可靠传输、流量控制、拥塞控制等服务,其首部自然比较复杂。首部的字段比较多,首部的长度比较长。
UDP和TCP的对比图如下所示:
在这里插入图片描述
教学视频链接如下:
https://www.bilibili.com/video/BV1c4411d7jb?p=59

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值