标签:img size 错误 简单 百度搜索 解码 nginx配置问题 解决 epg
1、问题描述:
接到开发工程说,图片时而好,时而坏。怀疑是网络三角传输模式问题,或者是Nginx配置问题。
2、环境拓扑图:
3、这是Nginx处抓报文信息:HTTP和Porttable Network Graphics
Malformed Packet PNG
百度搜索翻译软件翻译的意思:“格式错误的数据包PNG”
4、抓包反映出来的问题
机顶盒端请求jpeg图片,服务端收到jpeg请求后,响应png图片,经由Nginx将图片发送到客户端,完成屏幕图片加载。当PNG图片传输完成后,Nginx的TCP发送TCP的Flag:Fin ack结束TCP连接,客户端直接SYN:RST,直接报数据包格式错误。然后丢弃数据包,再次与Nginx建立新TCP连接,获取图片数据。。。。。。。导致电视屏幕图片加载失败。
5、问题分析:
PNG图片编码和解码过程:下图
6、PNG国际标准
PNG签名
PNG数据流的前八个字节始终包含以下(十进制)值:
137 80 78 71 13 10 26 10
这个签名表示该数据流的剩余部分包含一个PNG图像,由一系列与开始区块的IHDR块,并结束IEND块。
根据组块中前面的字节计算的四字节CRC(循环冗余码),包括组块类型字段和组块数据字段,但不包括长度字段。CRC可用于检查数据是否损坏。CRC始终存在,即使对于不包含数据的块也是如此。
PNG签名不匹配,CRC不匹配或意外的流结束,都表示数据流已损坏,可能被视为致命错误。
7、那么造成机顶盒发送RST错误原因,就是PNG收到所有PNG数据流后,进行CRC校验时,并未收到IEND结束块,请求图片格式收到的格式不匹配,致使应用程序发送异常错误信息RST。
8、解决方法:将服务器的图片格式改成请求图片格式就行,比如:请求PNG就就响应PNG图片,请求JPEG就响应JEPG图片等等
Malformed Packet PNG排查分析
标签:img size 错误 简单 百度搜索 解码 nginx配置问题 解决 epg
原文地址:https://www.cnblogs.com/slyy/p/11774341.html