Ga naar inhoud
HexaTransfer
Terug naar blog
Bestandsoverdracht

Onderbroken overdrachten hervatten: nooit opnieuw beginnen

Leer hoe hervatbare bestandsoverdrachten werken. Verlies nooit meer voortgang bij grote uploads met diensten die hervatting ondersteunen.

Hervatbare overdrachten splitsen een bestand in chunks en volgen welke chunks succesvol zijn ontvangen; wanneer de verbinding wegvalt, pakt de client op vanaf de volgende niet-verzonden chunk in plaats van opnieuw te beginnen bij byte nul. De webstandaard hiervoor is tus.io (een open, hervatbaar uploadprotocol), geïmplementeerd door SwissTransfer, HexaTransfer, Vimeo, Cloudinary en veel moderne overdrachtsdiensten. Voor downloads laten HTTP Range-verzoeken (RFC 7233) browsers en tools zoals curl of aria2 onderbroken downloads hervatten. Zonder hervatbaarheid kost een upload van 9,8 GB die faalt bij 9,5 GB je het geheel — met hervatbaarheid verlies je misschien 50 MB.

Het probleem met niet-hervatbare uploads

Een naïeve bestandsupload verstuurt het hele bestand als één HTTP POST-verzoek. Als iets de verbinding onderbreekt — Wi-Fi-uitval, VPN-timeout, laptop-slaap, ISP-hapering — sluit de TCP-verbinding en gooit de server weg wat hij aan gedeeltelijke data had. De client begint opnieuw bij byte nul.

Voor een upload van 5 GB op een 50 Mbps-verbinding zijn dat 13 minuten werk die weggegooid worden. Voor een upload van 50 GB is het ruim twee uur. Het faalpercentage van niet-hervatbare uploads op mobiele verbindingen is hard — een upload van 30 minuten op een 4G-verbinding slaagt zelden bij de eerste poging.

Hoe hervatbare protocollen werken

Moderne hervatbare uploads werken ongeveer zo:

  1. Create: De client stuurt een POST naar de server met de totale grootte van het bestand en metadata. De server retourneert een unieke URL voor deze specifieke upload en reserveert opslag.
  2. Chunk: De client snijdt het bestand in chunks (vaak 5-64 MB per stuk).
  3. Upload: De client stuurt elke chunk als een PATCH-verzoek met een Content-Range- of Upload-Offset-header die de positie van de chunk aangeeft.
  4. Bevestigen: De server schrijft de chunk naar opslag en bevestigt de nieuwe offset.
  5. Hervatten: Als de verbinding wegvalt, stuurt de client een HEAD-verzoek naar de upload-URL. De server antwoordt met de huidige offset (hoeveel bytes hij heeft). De client hervat vanaf die offset.
  6. Voltooien: Wanneer de laatste chunk is bevestigd, is de upload klaar.

Dit model wordt gedefinieerd door de tus.io-specificatie (versie 1.0.0 is breed uitgerold). Andere varianten zijn S3 Multipart Upload (voor directe S3-uploads) en Google Cloud Storage Resumable Uploads.

Tus.io: de open standaard

Tus ("transloadit upload server") is een gratis, open protocol onderhouden door Transloadit. De specificatie staat op tus.io en wordt geïmplementeerd door:

  • Client-bibliotheken: tus-js-client (browser + Node.js), TUSKit (iOS), tus-android-client, tus-java-client
  • Serverimplementaties: tusd (Go-referentieserver), tus-node-server en veel framework-integraties
  • Commerciële diensten: SwissTransfer, HexaTransfer, Vimeo, Cloudinary, Transloadit, Uppy's companion-servers

Het protocol is bewust minimaal: vier HTTP-verbs (POST, HEAD, PATCH, OPTIONS), een handvol headers (Upload-Offset, Upload-Length, Tus-Resumable). Dit houdt implementaties eenvoudig en interoperabel.

Chunk-grootte-beslissingen

Chunk-grootte ruilt hervatgranulariteit tegen HTTP-overhead.

| Chunk-grootte | Herstelkosten bij fout | Overhead | |---|---|---| | 1 MB | Verlies ≤ 1 MB | Hoog (veel verzoeken) | | 5 MB | Verlies ≤ 5 MB | Gemiddeld | | 16 MB | Verlies ≤ 16 MB | Laag | | 64 MB | Verlies ≤ 64 MB | Minimaal | | 256 MB | Verlies ≤ 256 MB | Verwaarloosbare overhead, pijnlijk bij fout |

Voor stabiele verbindingen maximaliseren chunks van 32-64 MB de doorvoer. Voor mobiel of wankele Wi-Fi herstellen chunks van 2-5 MB sneller van elke fout. Diensten kiezen meestal een standaard in het 5-10 MB-bereik als compromis.

Wat overdrachten daadwerkelijk onderbreekt

De faalmodi begrijpen helpt om te beoordelen of de hervatimplementatie van een dienst robuust is:

  • Wi-Fi-uitval: overschakelen tussen netwerken, signaalverlies, router-reboot. Heel gebruikelijk.
  • Laptop-slaap: de deksel sluiten op macOS/Windows. Het OS pauzeert netwerk; bij wakker worden moeten verbindingen vaak opnieuw worden opgezet.
  • Tab-schorsing: moderne browsers schorsen achtergrondtabs om geheugen te besparen. Uploads in een geschorst tabblad kunnen stilvallen.
  • ISP/backhaul-problemen: kortstondige routingwijzigingen, TLS-re-handshake vereist.
  • VPN-herverbinding: VPN-clients heronderhandelen periodiek; de TCP-verbinding sterft.
  • Server-side herstarts: de overdrachtsdienst rolt een nieuwe versie uit; in-flight verzoeken falen.
  • Cross-origin beleidswijzigingen: bedrijfsfirewalls die verkeer inspecteren doden soms langlopende verbindingen.

Een robuuste hervatbare implementatie handelt dit alles af met hetzelfde mechanisme: reconnect, HEAD om offset te controleren, hervat vanaf daar.

Hervatten voor downloads

HTTP Range-verzoeken (RFC 7233) maken hervatbare downloads mogelijk. Een server die Accept-Ranges: bytes in responseheaders adverteert, ondersteunt range-verzoeken. Clients kunnen dan Range: bytes=1000000- sturen om alleen bytes vanaf offset 1.000.000 op te halen.

Browsers gebruiken dit automatisch wanneer je "Hervatten" raakt in de downloadmanager. Chrome, Firefox en Safari ondersteunen allemaal hervatten voor downloads van conforme servers. De meeste CDN's (Cloudflare, Fastly, CloudFront) ondersteunen ranges.

Commandoregel-tools bieden meer controle:

  • curl -C - -O url hervat een download vanaf waar hij stopte.
  • wget -c url doet hetzelfde.
  • aria2c -c -s 16 url downloadt met 16 parallelle range-request-streams voor snelheid.

Diensten die hervatten ondersteunen

Moderne overdrachtsdiensten verwerken upload-hervatten grotendeels:

| Dienst | Upload-hervat | Download-hervat | |---|---|---| | SwissTransfer | Ja (tus-gebaseerd) | Ja (HTTP-ranges) | | HexaTransfer | Ja (chunked + tus-compatibel) | Ja | | WeTransfer | Ja (chunked uploads) | Ja | | Dropbox Transfer | Ja | Ja | | Google Drive | Ja (hervatbare upload-API) | Ja | | OneDrive | Ja | Ja | | Box | Ja | Ja |

Gratis niveaus schakelen soms hervatten uit om betaalde upgrades aan te moedigen, maar dat is zeldzaam in 2026. Oudere diensten zonder hervatondersteuning verdwijnen uit aanbevelingslijsten omdat gebruikers de fouten zat zijn.

Wat niet automatisch hervat

Simpele HTTP POST-uploads in naïeve applicaties hervatten niet. FTP-overdrachten variëren historisch — sommige clients en servers ondersteunen REST-commando's (restart), andere niet. E-mailbijlagen kunnen niet worden hervat — als een Gmail-verzending op 90% faalt, begin je opnieuw.

Torrent-gebaseerde overdrachten hervatten inherent omdat het torrent-protocol volgt welke stukken zijn geverifieerd. Dit is deels waarom BitTorrent nuttig bleef voor zeer grote distributies, zelfs toen het web op andere metrieken inhaalde.

Hervatten met end-to-end encryptie

Hervatbare uploads gecombineerd met client-side encryptie vereisen zorgvuldige chunking. Het bestand wordt in chunks gesplitst, elke chunk wordt versleuteld met AES-256-GCM met een unieke IV (initialisatievector), en vervolgens geüpload. Bij hervatten moet de client weten welke chunks zijn voltooid en doorgaan vanaf de volgende.

Omdat elke chunk onafhankelijk versleuteld en geauthenticeerd is (GCM's AEAD-modus), kunnen gedeeltelijke uploads niet worden gemanipuleerd. Een kwaadwillige server die rommel invoegt op offset 5 GB zou falen bij authenticatie wanneer de ontvanger ontsleutelt — de GCM-tag-mismatch wordt opgevangen.

Implementaties zoals HexaTransfer gebruiken per-chunk IV's die deterministisch afgeleid zijn van een hoofdsleutel en chunk-index, zodat hervatten geen apart opslaan van IV's vereist. De ontsleutelzijde reconstrueert ze uit dezelfde afleiding.

Best practices aan de clientkant

Om hervatsucces te maximaliseren:

  • Houd het tabblad actief tijdens upload. Tab-schorsing in de browser doodt in-flight uploads. Een "sluit dit tabblad niet"-waarschuwing is standaard in UI's van overdrachtsdiensten.
  • Steek waar mogelijk een kabel in het bekabelde netwerk. Wi-Fi-uitval veroorzaakt de meeste fouten.
  • Schakel energiebesparende slaap uit tijdens lange uploads. macOS: caffeinate -i. Windows: het Powertoys Awake-hulpprogramma of wijzigingen in het energieschema.
  • Wissel niet van Wi-Fi-netwerk midden in een upload. De TCP-verbinding verandert van IP en sterft.
  • Laat de upload eindigen voor je de laptopklep sluit. Moderne macOS behoudt uploads soms door korte slaap, maar het is niet betrouwbaar.

Verifieer aan de serverkant

Sommige diensten tonen onvolledige voortgangsbalken die niet daadwerkelijk de serverstatus weerspiegelen. Na een upload die een of twee onderbrekingen heeft overleefd, vernieuw de pagina en verifieer dat de link werkt — open hem in incognito en download een klein deel. Als het hervatten werkte, wordt het hele bestand correct gedownload.

Voor paranoia-waardige scenario's bereken je een SHA-256-hash op de client, upload, en verifieer je door het gedownloade bestand te hashen en te vergelijken. Cryptografische bestandsintegriteitscontrole kost 10 seconden CPU per gigabyte en geeft absolute zekerheid.

Oordeel

Hervatbare overdracht is in 2026 een basisvereiste — elke dienst zonder deze functie is een directe dealbreaker voor bestanden boven een paar honderd megabyte. Zoek naar tus.io-conformiteit of vergelijkbaar chunked-uploadgedrag. Zorg dat de dienst die je kiest onderbrekingen gracieus afhandelt; test met een bewuste netwerkonderbreking op een klein bestand voordat je je aan een grote overdracht waagt.

Probeer het op hexatransfer.com — gratis, zonder account, tot 10 GB.

Verstuur grote bestanden veilig met end-to-end-versleuteling

Draag bestanden tot 10 GB gratis over met end-to-end-versleuteling. Geen account nodig. Uw bestanden worden in uw browser versleuteld voordat ze worden geüpload — niemand anders kan ze lezen.

Een bestand verzenden