Como um downloader de arquivo sabe onde o arquivo começa?

-1

Suponha que eu esteja baixando um arquivo pelo protocolo HTTP. Os pacotes contendo os fragmentos do arquivo podem chegar em qualquer ordem. Então, como o downloader sabe qual pacote é o primeiro na ordem? Eu estava olhando para os campos de um pacote HTTP aqui e não encontrei nenhum campo "Sequence Number".

Depois de refletir um pouco sobre a questão, cheguei à conclusão de que o HTTP é um protocolo da camada 7 e depende dos protocolos das camadas subjacentes. O TCP, sendo um protocolo da camada 4, fornece ao HTTP esse serviço de sequenciamento dos dados, pois o cabeçalho TCP possui um número de Sequência ( Encontrado aqui ).

Mas não tenho certeza se essa teoria está correta, então quero perguntar aos especialistas sobre isso. Existe algum outro mecanismo para lidar com este problema?

    
por 7_R3X 12.04.2018 / 09:27

2 respostas

2

Então, na verdade, se não houver interrupção, o arquivo está sendo baixado com uma única conexão TCP. Então, seu downloader nem sabe que está fragmentado.

Você pode usar o wireshark e ver este exemplo aqui

Seaconexãocairouseogerenciadordedownloadsquiserdividirodownloadparapoderusar4conexões,porexemplo,eledevedefiniro Cabeçalho RANGE :

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

Nesse caso, a resposta seria

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024
    
por 12.04.2018 / 10:05
1

Você adivinhou. Da RFC 2616 seção 1.4 Operação Geral , ênfase adicionada:

HTTP communication usually takes place over TCP/IP connections. The default port is TCP 80 [19], but other ports can be used. This does not preclude HTTP from being implemented on top of any other protocol on the Internet, or on other networks. HTTP only presumes a reliable transport; any protocol that provides such guarantees can be used; the mapping of the HTTP/1.1 request and response structures onto the transport data units of the protocol in question is outside the scope of this specification.

"transporte confiável" é o jargão de rede para "entrega os dados sem perda (a menos que sinalizado), duplicação / reprodução, alteração ou desordem".

E da mesma forma, o HTTPS é executado sobre TLS (anteriormente SSL), que se baseia no TCP e fornece essencialmente o mesmo serviço (transporte confiável de fluxo de byte), mas com as propriedades adicionais de confidencialidade e integridade (a menos que seja sinalizado), mesmo contra invasores inteligentes que meramente erros e falhas naturais. Existem diferenças de desempenho, mas o AFAIK, as únicas diferenças de serviço, é que o TLS não fornece o ponteiro 'urgente' do TCP, conhecido como out-of-band, ou fechamento separado por direção, como o 'meio fechado' do TCP, e HTTP / HTTPS doesn ' Não preciso disso.

    
por 12.04.2018 / 13:11

Tags