UDP的TCP的区别

一、 UDP基础

UDP不提供复杂的控制协议,依靠IP协议提供无连接的通信服务。
UDP的头部非常简单只有8个字节:
在这里插入图片描述

  • 源端口和目标端口:主要是告诉UDP协议要把数据发给哪个进程
  • 包长度:该字段保存了UDP首部长度和数据长度总和
  • 校验和:是为了提供可靠的UDP 首部和数据而设计的

二、 TCP和UDP的区别:

1. 连接

  • TCP是面向连接的传输层协议,即传输数据前需要先建立连接。
  • UDP是面向无连接的传输层协议,即刻传输数据。

2. 服务对象

  • TCP是一对一的两点服务,即一条连接只有两个端点。
  • UDP可以实现一对一、一对多、多对多的交互通信。

3. 可靠性

  • TCP是可靠的传输协议,可以保证数据传输的无差错、不丢失、不重复、按需到达。
  • UDP是尽最大努力,但是保证不了数据的可靠性交付。

4. 拥塞控制和流量控制

  • TCP有拥塞和流量控制机制保证数据传输的安全性。
  • UDP没有,即使网络非常拥堵了也不影响UDP的发送速率

5. 首部开销

  • TCP的首部开销较大,在没有使用选项字段的时候是20个字节,如果使用了就会变得更长。
  • UDP的首部开销较小只有8个字节。并且是固定不变的。

6. 传输方式

  • TCP是流式传输,没有边界,但保证顺序和可靠。
  • UDP是一个包一个包的发送,是有边界的,但是可能会丢包还有乱序。

7. 分片不同

  • TCP发送数据如果大于MSS,那么会在传输层进行分片,接收端同样会在传输层进行数据片重组,如果丢失了某个分片那么只需要重发丢失的分片即可。
  • UDP的数据大小如果大于MTU大小,就会在IP层进行分片。接收端在收到数据时同样会在IP层进行组装数据,接着再传给传输层,但是如果中途丢失一个分片,实现可靠的UDP传输就需要重传所有的数据包,这样传输效率非常差,所有UDP的报文应该小于MTU大小。

三、TCP和UDP的应用场景

由于TCP是面向连接的,能保证数据的可靠性交付,因此常用于:

  • FTP传输
  • HTTP/HTTPS
    由于UDP是面向无连接的,随时都可以发送数据,再加上UDP本身就处理既简单就高效,因此常用于:
  • 包含较少的通信的,如DNS、SNMP等
  • 视频、音频等多媒体通信
  • 广播通信

四、首部差异解释

为什么UDP头部没有首部长度字段,而TCP有呢?
因为TCP的头部有可变长度的选项字段,UDP头部没有可变长度的字段。所有TCP头部有首部长度字段UDP没有。

为什么UDP头部有包长度字段,而TCP头部没有呢?
TCP计算负载数据长度的方式:

TCP数据的长度 = IP总长度 - IP首部长度 - TCP首部长度

IP总长度 、 IP首部长度 、TCP首部长度都是已知的,IP总长度和IP首部长度在IP首部的格式中。TCP首部长度在TCP首部中。这样就可以计算出RCP数据的长度。
然而对于UDP来说,似乎也可以通过类似的公式计算出来,为什么还需要头部长度字段呢?如此说来UDP首部的包长度字段岂不是冗余的。**因为为了网络设备硬件处理和设计的方便,首部长度需要是4字节的整数倍。**所有有一种说法是UDP首部的包长度字段是为了字节补全设计的,使得首部的字节长度是4的整数倍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值