为什么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指令的自己找手册,上面应该有写
相关文章推荐
- redis如何修改登录密码?设置的密码为什么无效?以及如何更改端口?
- TCP三次握手和四次挥手过程以及连接为什么使用三次连接,释放使用四次
- Struts2中为什么要使用拦截器?拦截器的使用原理以及如何配置拦截器。
- 转:TCP为什么要3次握手和4次挥手时等待2MSL、 TCP如何保证消息顺序以及可靠性到达
- 微信测试帐号如何设置URL和Token,以及相关验证的原理
- jdbc连接原理以及过程,如何jdbc连接
- saiku查询出错如何debug(saiku查询过程的本质),以及相关workbench的schema设置
- saiku查询出错如何debug(saiku查询过程的本质),以及相关workbench的schema设置
- TCP为什么三次握手以及服务端如何知道客服端异常断开
- 如何获取当前数据库名称及在存储过程中临时设置数据库兼容级别
- TCP的三次握手和四次挥手以及为什么
- border-radius该如何去设置以及怪异盒模型
- 数据库以及线程发生死锁的原理及必要条件,如何避免死锁。
- Notepad++自定义工具栏以及如何设置多行工具栏
- vue 如何添加全局函数或全局变量以及单页面的title设置总结
- 开发项目时,提示 找不到类的解决方法,以及如何设置编译源目录
- [转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- Flex中如何利用dataDescriptor和labelFunction属性,以及hasChildren()和getChildren()函数设置Tree中包含子节点个数
- Android Studio在SVN上为什么要创建分支、如何创建分支跟合并分支、以及报错处理
- Linux TC的ifb原理以及ingress流控