wuweixiong 2020-03-17 13:32 原文
- 区别:
- 面向连接vs无连接:tcp三次握手四次挥手建立连接 udp无需建立连接,可以直接发起
- 可靠vs不可靠 tcp采用握手、ack和重传机制,实现可靠传输
- 面向字节流vs面向报文
- UDP面向报文:应用程序交给运输层的每一个数据,直接把它交给传输层,加上UDP首部,无论数据大还是小,然后交给网络层加上IP首部,于是,IP数据包的长度如果超过网络的MTU,则需要对IP数据包进行分片
- TCP面向字节流:TCP对应用程序交给他的数据会判断大小,然后进行组装交给网络层,应用程序产生的整体数据与真正发送的单个IP数据报没有什么联系
- TCP首部20bytes,udp首部8bytes TCP有流量控制(滑动窗口) 拥塞控制(慢开始、拥塞避免、快重传、快恢复)
- TCP应用场景
- 效率要求相对低,但对准确性要求相对高的场景,因为传输中需要对数据进行确认,重发,排序等操作,效率没有udp高
- 文件传输:FTP\HTTP对数据的准确性要求高,速度可以相对慢
- 发送或接收邮件:POP3\IMAP\SMTP对数据准确性要求高,非紧急应用
- 远程登陆:TELNET\SSH对数据准确性有一定要求,有连接概念
- UCP应用场景
- 即时通信:QQ聊天,对数据准确性和丢包要求比较低,但速度必须快
- 在线视频:RTSP速度一定要快,保证视频连续,但是偶尔花了一个图像帧,还是可以接受的
- 网络语音电话:VoIP数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题
推荐阅读