当前位置:   article > 正文

TCP/UDP_vs2010写udp广播

vs2010写udp广播

TCP与UDP

TCP: 一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

  UDP具有较好的实时性 适用场景:短消息,多客户端,对信息可靠性要求不高,对效率要求高。每一条TCP是点对点的,UDP支持更广泛 一对一,多对一,多对多。TCP对资源要求较高,UDP对资源要求较少。TCP面向数据流, UDP面向数据报。

区别:

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

TCP应用场景:
  效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、重发、排序等操作,相比之下效率没有UDP高。举几个例子:文件传输(准确高要求高、但是速度可以相对慢)、接受邮件、远程登录。

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

补充:视频使用TCP还是UDP
 1. 网页上的视频是基于HTTP/HTTPS,传输层是TCP
 2. QQ视频聊天等是基于UDP
 3. 甚至有的应用使用p2p协议,传输层应该也是TCP
 4. 通过http进行流化视频有很多种方法
 5. 传输视频还有很多其他的应用层协议

  一方面,在网页上看视频可以忍受缓冲5s看到更清楚的视频,所以用TCP问题不大,在网络情况较好的情况下更是如此。视频聊天时绝不能容忍等待5s才听到对方的回话,所以用UDP更合适。

TCP/IP 实现可靠传输的方式

TCP协议保证数据传输可靠性的方式主要有:
校验和
序列号
确认应答
超时重传

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/998852
推荐阅读
相关标签
  

闽ICP备14008679号