조작 된 패킷 PNG 조사 및 분석

문제 1. 설명 :
그는 때때로 나쁜, 때로는 좋은 사진 개발 프로젝트를 받았다. 의심 전송 모드 네트워크 삼각 측량 문제, 또는 Nginx의 구성 문제.
2, 환경 토폴로지 :

 

  HTTP 및 Porttable 네트워크 그래픽 : Nginx의 메시지 정보에 잡힌 3,

 

 조작 된 패킷 PNG

바이두 검색 번역 소프트웨어 번역의 의미 : "잘못된 패킷 PNG를"
4, 미묘한 문제에 반영
셋톱 박스 클라이언트 요청 JPEG 이미지는 서버 후 JPEG는 클라이언트, 전체 화면 이미지 로딩에 사진을 보내 Nginx에를 통해 이미지를 PNG로 요청, 응답을받습니다. PNG 이미지 전송이 완료되면, Nginx와의 TCP는 TCP 플래그를 보냅니다 직접 패킷 포맷 오류보고 RST : 핀 ACK 끝 TCP 연결, 클라이언트 직접 SYN합니다. 다시, 패킷을 폐기 사진 데이터를 얻기 위해, Nginx와 가진 새로운 TCP 연결을 설정합니다. . . . . . . TV 화면 이미지 로딩 실패의 원인이됩니다.
5, 문제 분석 :
PNG 이미지 인코딩 및 디코딩 과정 다음 차트

 

 


 

 6, PNG 국제 표준

자세한 기사 : https://www.w3.org/TR/PNG/
PNG 서명
데이터 스트림의 PNG 첫 8 바이트는 항상 (십진수)이 포함됩니다 :
137 80 78 71 13 10 26 10
이 서명은 상기 데이터 스트림의 잔여 부분은 PNG 이미지 시작 블록의 시리즈 포함 나타내는 IHDR의 블록과 끝나는 IEND의 블록.
 
상기 청크 바이트 4 바이트 CRC (순환 중복 코드)에 따라 계산하고, 블록 형 전계 청크 데이터 필드를 포함하지만 않는 길이 필드를 포함한다. CRC는 데이터 손상 여부를 확인하는 데 사용할 수 있습니다. 블록뿐만 아니라 데이터를 포함하지 않더라도 위해 CRC는 항상 존재합니다.

 

       有效的PNG数据流应以PNG签名开头,紧随其后的是IHDR块,然后是一个或多个IDAT块,并应以IEND 块结束。PNG数据流中仅允许一个IHDR块和一个IEND

已知块,其中必须包括此国际标准中定义的所有关键块(IHDRPLTEIDATIEND
PNG签名不匹配,CRC不匹配或意外的流结束,都表示数据流已损坏,可能被视为致命错误。
简单一句话:“PNG数据流校验时,需要PNG信令,关键块(IHDRPLTEIDATIEND)”
7、那么造成机顶盒发送RST错误原因,就是PNG收到所有PNG数据流后,进行CRC校验时,并未收到IEND结束块,请求图片格式收到的格式不匹配,致使应用程序发送异常错误信息RST。

 

 

8、解决方法:将服务器的图片格式改成请求图片格式就行,比如:请求PNG就就响应PNG图片,请求JPEG就响应JEPG图片等等

 

 

추천

출처www.cnblogs.com/slyy/p/11774341.html