码迷,mamicode.com
首页 > 其他好文 > 详细

TCP和UDP的区别及应用场景

时间:2019-10-06 20:28:28      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:结构   状态   信道   端口   设置   进入   seq   系统设置   要求   

 

    • 区别

      1. 面向连接VS无连接
        TCP建立一个连接需要3次握手IP数据包,断开连接需要4次握手。另外断开连接时发起方可能进入TIME_WAIT状态长达数分钟(视系统设置,windows一般为120秒),在此状态下连接(端口)无法被释放。
        UDP不需要建立连接,可以直接发起。
      2. 可靠VS不可靠
        TCP利用握手、ACK和重传机制,udp没有。
        1,校验和(校验数据是否损坏);
        2,定时器(分组丢失则重传);
        3,序列号(用于检测丢失的分组和重复的分组);
        4,确认应答ACK(接收方告知发送方正确接收分组以及期望的下一个分组);
        5,否定确认(接收方通知发送方未被正确接收的分组);
        6,窗口和流水线(用于增加信道的吞吐量)。(窗口大小:无需等待确认应答而可以继续发送数据的最大值)
      3. 有序性
        TCP利用seq序列号对包进行排序,udp没有。
      4. 面向字节流vs面向报文
        • 面向报文
          面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,则IP层需要分片。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。(一个upd的最大报文长度2^16-1-20-8,20是ip报文头,8是udp报文头)
        • 面向字节流
          面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送。如果应用程序一次只发送一个字节,TCP也可以等待积累有足够多的字节后再构成报文段发送出去。
      5. tcp有流量控制,udp没有
      6. tcp的头部比20bytes,udp8byres
    • TCP应用场景:
      效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。

    • UDP应用场景:
      效率要求相对高,对准确性要求相对低的场景。举几个例子:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

TCP和UDP的区别及应用场景

标签:结构   状态   信道   端口   设置   进入   seq   系统设置   要求   

原文地址:https://www.cnblogs.com/liangyc/p/11628208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!