To transfer data or (esp.) code from a far-away system (especially a larger `host' system) over a digital communications link to a nearby system (especially a smaller `client' system. Oppose upload.
Historical use of these terms was at one time associated with transfers from large timesharing machines to PCs or peripherals (download) and vice-versa (upload). The modern usage relative to the speaker (rather than as an indicator of the size and role of the machines) evolved as machine categories lost most of their former functional importance.