ESP32 UDP通信bind idf esp32 udp广播_数据


1. 网络传输方式

网络通信中根据数据发送方法进行多种分类. 分类方法主要分为两种:

  • 面向有连接型.
  • 面向无连接型.

面向无连接型

面向无连接型不要求建立和断开连接. 发送端可于任何时候自由发送数据. 反之, 接收端也永远不知道自己会在何时从那里接收到数据. 因此, 面向无连接的情况下, 接收端需要时常确认是否收到了数据.


ESP32 UDP通信bind idf esp32 udp广播_数据_02


在面向无连接的通信中, 不需要确认对端是否存在. 即使接收端不存在或无法接受数据, 发送端也能将数据发送出去.


ESP32 UDP通信bind idf esp32 udp广播_ESP32 UDP通信bind idf_03


UDP (User Datagram Protocol )不提供复杂的控制机制, 如果传输过程中出现丢包, UDP 也不负责重发. 甚至当出现包到达顺序乱掉时候也没有纠正的功能. 由于 UDP 面向无连接, 它可以随时发送数据. 再加上 UDP 本身的处理既简单又高效, 因此常用于以下几个方面:

  • 包总量较少的通信(DNS).
  • 视频、音频等多媒体通信(即时通信).
  • 限定于 LAN 等特定网络中的应用通信.
  • 广播通信(广播、多播)

面向有连接型:

面向有连接型中, 在发送数据之前, 需要在收发主机之间建立一条连接通信线路. 面向连接就好像我们平时打电话, 输入完对方的电话号码拨出之后, 只有对方拿起电话确认连接才能进行真正的通话, 通话结束后将电话机扣上就如同切断电源。因此在面向有连接的方式下, 必须在通信传输前后, 专门进行建立和断开连接的处理.


ESP32 UDP通信bind idf esp32 udp广播_ESP32 UDP通信bind idf_04


TCP 提供一种面向连接的通信服务, 只有在确认通信对端存在时才会收发数据, 从而可以控制通信流量的浪费. TCP 提供了数据传输时的各种控制功能, 丢包时可以进行重发控制, 还可以将次序乱掉的分包进行顺序控制.


ESP32 UDP通信bind idf esp32 udp广播_esp8266 接收udp广播_05


TCP 协议, 传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议.

2. UDP传输方式

UDP 协议全称是用户数据报协议, 在网络中它与TCP协议一样用于处理数据包, 是一种无连接的协议.

选择 UDP 必须要谨慎, 在网络质量令人十分不满意的环境下, UDP协议数据包丢失会比较严重. 但是由于UDP的特性: 它不属于连接型协议, 因而具有资源消耗小, 处理速度快的优点. 所以通常音频、视频和普通数据在传送时使用 UDP 较多,因为它们即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响.

udp通信模型


ESP32 UDP通信bind idf esp32 udp广播_ESP32 UDP通信bind idf_06


3.TCP传输方式

1)TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

3)错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

4) 流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

tcp通信模型


ESP32 UDP通信bind idf esp32 udp广播_ESP32 UDP通信bind idf_07