IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【网络协议】LWIP使用中的问题以及解决办法 -> 正文阅读

[网络协议]【网络协议】LWIP使用中的问题以及解决办法


前言

在做IOT设备的时候经常会用到LWIP开源TCP/IP协议库,特此问题记录以及解决办法


1. LWIP-HTTP无法保持长连接

1.1 问题

???????在开发http服务器给前端提供数据的时候,网页加载会失败,在http_accepet函数中打桩会看到,浏览器会总是发起请求,造成协议栈溢出。
???????前端发起一个js请求的时候没有问题,但是发起十几个请求是连续的不同的js请求,每次都是重新连接,而且几乎中间无时间等待,这样会造成http服务器繁忙,资源消耗殆尽然后宕机。

  1. 解决保持http长连接,http_accept只进一次即可
  2. 解决浏览器在接到完整的静态页面数据之后再请求下一次

1.2 分析

  1. 了解http协议以及前端浏览器的工作方式,以下两篇文章记录了服务器端和浏览器端的工作方式,是我想要的。

HTTP协议请求头和响应头
浅谈Http长连接和Keep-Alive以及Tcp的Keepalive

  1. 根据1中的说法 ,了解到浏览器是需要知道一次的传输文本是多少,来判断本次的连接是否结束。
  2. 要想保持长连接,响应头中必须要有connetion:persistant,貌似我的没有

1.3 知识

记一次Content-Length引发的血案

2. 大量的TIMEWAIT造成资源耗尽

2.1 问题

在使用LWIP开发IOTdev时,我分配了10个PCB,但是因为TIMEWAIT在LWIP中要等待60秒,时间太长了,因为我的设备可能要在16秒内快速使用16个不同PCB块,这样总是造成资源不够,连接不到程序。
在这里插入图片描述

2.2 原因

  1. 发现网页没有建立长连接,因为有RTC每1s轮询每次消耗掉PCB,在TIMEWIAT中等待60s,显然时间太长,资源不够用的。
  2. TIMEOUT的时间太长了,我觉得在局域网内10s足矣。
    在这里插入图片描述

2.3 解决方案

  1. 将TCP_MSL 改成100000UL/10s/
  2. 增加MEMP_NUM_TCP_PCB 到30个

2.4 知识

2.4.1 TCP/IP详解–TCP连接中TIME_WAIT状态过多

TCP/IP详解–TCP连接中TIME_WAIT状态过多

2.4.2 TCP在FIN_WAIT1状态到底能持续多久以及TCP假连接问题

TCP在FIN_WAIT1状态到底能持续多久以及TCP假连接问题

2.4.3 TCP协议RST:RST介绍、什么时候发送RST包

TCP协议RST:RST介绍、什么时候发送RST包

2.4.4 为什么服务器突然回复RST——小心网络中的安全设备

为什么服务器突然回复RST——小心网络中的安全设备

2.4.5 图解网络|收到 RST,就一定会断开 TCP 连接吗?

图解网络|收到 RST,就一定会断开 TCP 连接吗?

总结

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:59:55  更:2022-02-28 16:00:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:22:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码