파일 다운로더는 파일이 시작되는 위치를 어떻게 알 수 있나요?

파일 다운로더는 파일이 시작되는 위치를 어떻게 알 수 있나요?

HTTP 프로토콜을 통해 파일을 다운로드한다고 가정해 보겠습니다. 파일 조각이 포함된 패킷은 어떤 순서로든 도착할 수 있습니다. 그러면 다운로더는 어떤 패킷이 순서의 첫 번째인지 어떻게 알 수 있습니까? 나는 HTTP 패킷의 필드를 보고 있었습니다.여기"순서 번호" 필드를 찾지 못했습니다.

질문에 대해 조금 생각해 본 후 HTTP는 레이어 7 프로토콜이며 기본 레이어의 프로토콜에 따라 달라진다는 결론에 도달했습니다. 레이어 4 프로토콜인 TCP는 TCP 헤더에 시퀀스 번호(여기서 찾았어요).

그런데 이 이론이 맞는지는 잘 모르겠어서 전문가에게 물어보고 싶습니다. 이 문제를 처리할 수 있는 다른 메커니즘이 있습니까?

답변1

따라서 실제로 중단이 없으면 단일 TCP 연결을 통해 파일이 다운로드됩니다. 따라서 다운로더는 그것이 조각화되어 있다는 사실조차 알지 못합니다.

Wireshark를 사용하여 볼 수 있습니다.이 예는 여기

여기에 이미지 설명을 입력하세요

연결이 끊어지거나 다운로드 관리자가 예를 들어 4개의 연결을 사용할 수 있도록 다운로드를 분할하려는 경우RANGE 헤더:

GET /z4d4kWk.jpg HTTP/1.1
Host: i.imgur.com
Range: bytes=0-1023

이 경우 대답은 다음과 같습니다.

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024

답변2

당신은 그것을 짐작했다.RFC 2616 섹션 1.4 전체 작업에서, 강조 추가:

HTTP 통신일반적으로 TCP/IP 연결을 통해 발생합니다.기본 포트는 TCP 80[19]이지만 다른 포트도 사용할 수 있다. 이는 HTTP가 인터넷이나 다른 네트워크의 다른 프로토콜 위에 구현되는 것을 배제하지 않습니다.HTTP는 안정적인 전송만을 가정합니다.그러한 보장을 제공하는 모든 프로토콜을 사용할 수 있습니다. 문제의 프로토콜의 전송 데이터 단위에 대한 HTTP/1.1 요청 및 응답 구조의 매핑은 이 사양의 범위를 벗어납니다.

"신뢰할 수 있는 전송"은 "손실(신호가 전달되지 않는 한), 복제/재생, 변경 또는 잘못된 순서 없이 데이터를 전달함"을 의미하는 네트워킹 전문 용어입니다.

마찬가지로 HTTPS는 TCP를 기반으로 기본적으로 동일한 서비스(신뢰할 수 있는 바이트 스트림 전송)를 제공하지만 단순한 자연 공격이 아닌 지능형 공격자에 대해서도 기밀성 및 무결성(신호 오류가 없는 경우)이라는 추가 속성을 제공하는 TLS(이전의 SSL)를 통해 실행됩니다. 오류와 결점. 성능 차이가 있지만 AFAIK의 유일한 서비스 차이점은 TLS가 대역 외 TCP의 '긴급' 포인터를 제공하지 않거나 TCP의 '반 폐쇄' 상태와 같이 방향별로 별도의 닫기를 제공하지 않고 HTTP/HTTPS가 제공하지 않는다는 것입니다. 그런 건 필요 없어.

관련 정보