首页 > 技术文章 > TCP和UDP的区别及应用场景

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数据包一般比较小,需要高速发送,偶尔断音或串音也没有问题

推荐阅读