浅谈UDP与TCP(上)

UDP

UDP是传输层的一种重要协议,UDP本身不提供什么复杂的控制机制,(如果需要可以将部分控制交给应用程序处理)就是利用IP提供面向无连接的通信服务。将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上,这样可以实现即时通信,传输数据非常快,但是也有很多缺陷,当出现网络拥塞的情况下,UDP无法完成流量控制等避免网络拥塞的行为

  • 优点:无连接,快,即时通信
  • 缺点:数据传输不可靠,会出现丢包、无法避免网络拥塞

因为UDP的传输是无需连接的,可以随时发送数据,而且UDP本身简单又高效,所以在一些场景下还是非常适合用UDP的

UDP的应用场景
  1. 包总量较少的通信(DNS、SNMP等)
  2. 视频、音频等多媒体通信(即时通信)
  3. 限定于LAN等特定网络中的应用通信
  4. 广播通信(广播、多播)

TCP

TCP与UDP不同,它是一个面向有连接的协议,它提供了很多机制来实现数据的可靠传输,不会出现像UDP中出现的一些问题,但这种有连接的通信,在数据发送之前先建立两端的连接和发送完数据后的连接释放是非常耗时的(TCP的连接与释放

  • 优点:可靠传输
  • 缺点:传输前先进性连接,不能即时通信,耗时

TCP如何实现可靠传输

我们刚刚说到TCP可以实现可靠的数据传输,那么具体是TCP的哪些机制实现了可靠传输?

1、序列号、确认应答和超时重发

先来说说这三个词,
1)序列号:按顺序给发送数据的每一个字节编了一个序号,接收端通过查询接收数据TCP首部中的序列号和数据的长度,就可以知道下一个应该接收数据的序列号
这里写图片描述
2)确认应答:就是接收端在接收到数据后,给发送端的一个反馈,告诉发送端自己确实已经收到了数据,并告诉发送端下一个发送数据的序列号
这里写图片描述
3)超时重发
重发重发,为什么要重新发送数据,那肯定是数据没有发送成功才要进行重新发送,
在发送端没有收到接收端的确认应答之前它都会认为数据没有发送成功,在等待一定时间,没有收到消息,他就会再次发送消息。
一次数据发送的完整过程需要“一去”“一回”两个过程,这两个过程中都有可能出现丢包的现象,下面两幅图分别表示两种丢包情况

  • 情况一:

数据还未发送到接收主机,就丢包了,数据没有发送成功,当然就要进行数据重新发送了
这里写图片描述

  • 情况二:
    这种情况是在回来的路上丢包了,导致发送端没有收到接收端的反馈信息,以为发送端并未接收到数据,所以会再一次进行数据重发,但之前发送的数据接收端其实已经有了,对于再次发送的相同数据,接收端会对相同的数据进行放弃

这里写图片描述

上面三种机制实现了数据传输的准确性,和基本的可靠性,序列号、确认应答、超时重发三个机制协同合作使得数据不会漏传,或存在相同的数据,使数据冗余,并保证数据是真的传输到了接收端,实现了传输的可靠性

2、连接管理

TCP之所以叫面向连接的数据通信,就是它在数据传输前,先要在数据两端建立起一个连接,让数据在这个为他们搭建的桥梁里进行数据的传输,实现数据传输的可靠性(TCP连接与释放的详细过程)而UDP不进行发送数据前的确认,不管接收端是否存在或者是否可以通信就直接进行数据传输,这要风险很大,所以才说UDP的传输是不可靠的
这里写图片描述

注:图片摘自《图解TCP/IP》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值