TCP和UDP都是传输层协议,但是两者具有不同的特性和应用场景
TCP | UDP | |
---|---|---|
可靠性 | 可靠 | 不可靠 |
连接性 | 面向连接 | 面向无连接 |
报文 | 面向字节流 | 面向报文 |
效率 | 低 | 高 |
双工性 | 全双工 | 一对一、一对多、多对一、多对多 |
流量控制 | 滑动窗口 | 无 |
拥塞控制 | 慢开始、拥塞避免、快重传、快恢复 | 无 |
传输速度 | 慢 | 快 |
应用场景 | 对效率要求低,对准确度要求高或者要求有连接的场景。比如:电子邮件(SMTP)、万维网(HTTP)、文件传输(FTP) | 对效率要求高,对准确度要求低的场景。比如:域名转换(DNS)、远程文件服务器(NFS) |
名词解释:
1 面向报文和面向字节流
面向报文的传输方式是应用层交给UDP多长的报文,UDP就发送多长的报文,即一次发送一个报文。因此应用程序必须选择大小合适的报文。报文太长,则IP层需要分片,降低效率。
面向字节流的传输方式是应用程序和TCP的交互是一次一个数据块(大小不等),TCP把这些数据块看成是一连串无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就会把它分割成多块传送。
2 双工性
全双工:是指在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。
半双工:所谓半双工就是指一个时间段内只有一个动作发生,举个简单例子,一条窄窄的马路,同时只能有一辆车通过,当目前有两量车对开,这种情况下就只能一辆先过,等到头儿后另一辆再开,这个例子就形象的说明了半双工的原理。
参考:
双工性的概念摘自百度知道:https://zhidao.baidu.com/question/21855854.html
https://github.com/LRH1993/android_interview/blob/master/computer-networks/tcpip.md