您的位置:首页 > 理论基础 > 计算机网络

为什么ESP8266 TCP透传过程会丢包?8266流控原理以及如何设置

2017-08-19 14:02 471 查看

1.为什么ESP8266 TCP透传过程会丢包?

因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。透传功能使用的是 TCP 协议,每包数据是 1460 (取决于协议栈),只要网络良好,buffer 空间没有被消耗完,就可以不停地传输数据。对于透传,串口接收数据间隔超过约 20 ms,就会认为数据接收结束,将已经接受的数据传输到网络。如果网络不好,就可能会丢弃一些数据,因此,为避免这种情况,可以将串口设置为流控模式。

2.8266流控原理



A和C之间可能只是因为距离远,无法收到对方的无线电波。从A的角度来看,C属于隐藏节点。如果使用简单的transmit-and-pray 协议,A与C有可能在同一时间传送数据,这会造成节点B无法辨识任何信息。此外,A与C将无从得知错误发生,因为只有节点B才知道有冲突发生。在无线网络中,由隐藏节点所导致的碰撞问题相当难以监听,因为无线收发器通常是半双工工作模式,即无法同时收发数据。为了防止碰撞发生,802.11 允许工作站使用请求发送(RTS)和允许发送(CTS)帧来清空传送区域。由于RTS 与CTS 帧会延长数据交易过程,因此RTS帧、CTS 帧、数据帧以及最后的应答帧均被视为相同基本连接的一部分。(通俗地说,就是存在AC同时访问中间的B,B无法正确接收他们的信息。所以就多了个请求和允许,让B决定谁先说话,然后就没有冲突了)

RTS/CTS机制的使用是可选的,每个802.11节点必须实现该功能。通过RTS/CTS机制,明确预留信道。其原理如下:

n 发送者发送RTS(请求发送),包括接收者地址,发送数据帧时间,发送ACK时间。

n 接收者用CTS回应,CTS为发送者预留带宽同时通告所有站点(包括隐藏的)保持静默。

n 由于RTS和CTS长度很短,其本身冲突的概率减少,因此RTS/CTS机制可以有效运行。



3.如何设置8266流控



如果不是AT指令的自己找手册,上面应该有写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐