TCP与UDP有哪些区别?各自应用场景?
TCP协议的主要特点
(1)TCP是面向连接的运输层协议;所谓面向连接就是双方传输数据之前,必须先建立一条通道,例如三次握手就是建议通道的一个过程,而四次挥手则是结束销毁通道的一个其中过程。
(2)每一条TCP连接只能有两个端点(即两个套接字),只能是点对点的;
(3)TCP提供可靠的传输服务。传送的数据无差错、不丢失、不重复、按序到达;
(4)TCP提供全双工通信。允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存和接受缓存;
(5)面向字节流。虽然应用程序与TCP交互是一次一个大小不等的数据块,但TCP把这些数据看成一连串无结构的字节流,它不保证接收方收到的数据块和发送方发送的数据块具有对应大小关系,例如,发送方应用程序交给发送方的TCP10个数据块,但就受访的TCP可能只用了4个数据块久保收到的字节流交付给上层的应用程序,但字节流完全一样。
TCP的可靠性原理
可靠传输有如下两个特点:
a.传输信道无差错,保证传输数据正确;
b.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据;
(1)首先,采用三次握手来建立TCP连接,四次挥手来释放TCP连接,从而保证建立的传输信道是可靠的。
(2)其次,TCP采用了连续ARQ协议(回退N,Go-back-N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。
(3)最后,TCP使用慢开始、拥塞避免、快重传和快恢复来进行拥塞控制,避免网络拥塞。
UDP协议特点
(1)UDP是无连接的传输层协议;
(2)UDP使用尽最大努力交付,不保证可靠交付;
(3)UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;
(4)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;
(5)UDP支持一对一 一对多 多对多的交互通信;
(6)UDP的首部开销小,只有8字节.
TCP和UDP的区别
(1)TCP是可靠传输,UDP是不可靠传输;
(2)TCP面向连接,UDP无连接;
(3)TCP传输数据有序,UDP不保证数据的有序性;
(4)TCP不保存数据边界,UDP保留数据边界;
(5)TCP传输速度相对UDP较慢;
(6)TCP有流量控制和拥塞控制,UDP没有;
(7)TCP是重量级协议,UDP是轻量级协议;
(8)TCP首部较长20字节,UDP首部较短8字节;
基于TCP和UDP的常用协议
HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议
TCP 和 UDP 应用场景
TCP应用场景:
效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。
UDP应用场景:
效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)
评论(14)
自动重传请求ARQ(Automatic Repeat reQuest)意思是重传的请求时自动进行的,接收方不需要请求发送方重传某个出错的分组。
TFTP打了2次
已更新
TCP是端对端的吧,ip才是点对点
TCP的可靠性原理第一点,四次挥手打成握手了
已改
可以补充下,tcp和udp各自的实际应用场景吗
已经补充
我看见有面试问到UDP如何实现可靠的传输。
已补上
您补充的是TCP可靠传输的原理,没有补充UDP的,应该聊QUIC吧
最后一个问题,QQ通话用到的协议,我觉得,凡是涉及到实时性的东西应该都用udp协议,因为比如QQ通话中,某句话卡了就是卡了,利用tcp纠错也没有意义,难不成还将说过的话倒回去重新放出来。个人感觉,不知道对不对O(∩_∩)O
UDP有一个重要的应用场景就是音频和视频的传输。
已补充,谢谢大佬