所以总结一点:TCP 是面向连接的,它的数据传输前需要维护一条虚拟连接,数据传输需要在这条虚拟连接上进行,数据传输完毕后需要断开这条连接,而 UDP 传输不是面向连接的,UDP 发送数据不会建立连接,也不会关心接收端的状态 。
可靠性的差异TCP 和 UDP 一个主要拿来作对比的就是可靠性,TCP 是一种可靠性的传输层协议,UDP 是一种不可靠的传输层协议 。TCP 的这种可靠性主要由下面这些特征来保证:
通过序列号和应答号实现可靠性
计算机网络主机之间的相互通信非常类似于我们日常生活中两个人之间打电话,这种对话通常是一问一答形式,如果你讲了一句话并没有收到任何回应,你通常需要再说一次来确保对方是否听到,如果对方给你回应了一句话,就说明他已经听到你的讲话了,这就是一个完整的通话流程(抛开建立连接不谈,我们着重点放在建立连接之后) 。
"对方给你的响应" 在计算机网络中被称为确认应答(ACK),TCP 就是通过 ACK 来实现可靠的数据传输,也就是说,发送方在发出请求之后会等待目标主机的响应,如果没有收到响应,发送方在经过一段时间后就会重传请求 。所以,即使在发送过程中产生丢包,TCP 仍然能够通过重传来实现可靠性 。
上面描述的情况属于发送方请求丢失,还有一种情况属于响应丢失,也就是说请求发送到目标主机后,目标主机会回发 ACK 给请求方,这个 ACK 也有可能丢失,如果 ACK 在链路中丢失,一段时间后请求方没有收到目标主机的 ACK ,仍然会选择重传未收到 ACK 的这个请求 。
除了消息丢失之外,还存在一种延迟到达的现象,延迟到达指的是发送方发送一个报文段之后,这个报文也许是由于网络抖动或者网络拥堵导致一个报文段迟迟没有到达目标主机,或者目标主机的响应 ACK 迟迟没有到达发送方的现象 。这个一段时间判断的标准就是重传时间,一旦过了重传时间发送方会重传报文段,很可能存在重传报文段到达之后,第一次发送的报文段才刚到的情况,这就存在一个问题:目标主机收到了两个相同的报文段 。必须选择一个报文段进行丢弃,但是应该选择哪个报文段呢?
推荐阅读
- 通过手机端修改WiFi名称和密码的步骤 改无线网密码用手机怎么改
- 诺基亚E63和E72:传奇之作的黄金时代
- 用手机做电脑的摄像头和麦克风方法 手机怎么当电脑摄像头使用
- iPhone 12/12 Pro真机评测 12和12pro大小一样吗
- 华为手机同时打开wifi和热点方法 华为热点怎么打开热点
- OPPO手机实现屏幕共享和远程协助方法 怎么屏幕共享给另一个手机
- 如何识别天然酵母和人工酵母
- 2023年高性价比手机推荐 红米和荣耀哪个性价比高
- Win11和Win10安装建议 windows11和win10哪个好用
- 路由器查看宽带密码方法 怎么查询宽带账号和密码