Скорость передачи данных

Скорость канала, объём данных и время связаны одной короткой формулой V = v · t — научимся применять её и не путать биты с байтами.

Когда вы скачиваете фильм, отправляете фото в мессенджере или ждёте загрузки страницы, всё упирается в один вопрос: насколько быстро байты пробегают по каналу связи. Этот «темп» называют скоростью передачи данных, и почти все школьные и экзаменационные задачи на эту тему решаются одной формулой плюс аккуратным переводом единиц.

Скорость передачи данных v — это количество информации, передаваемое по каналу связи за единицу времени. Измеряется в битах в секунду (бит/с). Объём переданных данных равен произведению скорости на время: V = v · t.

Главная формула и три задачи из неё

Формула V = v · t — это та же логика, что «путь = скорость · время» в физике. Из неё получаются три типа задач, в зависимости от того, что неизвестно:

  • Объём: V = v · t — сколько данных пройдёт за время t.
  • Время: t = V / v — сколько секунд займёт передача файла объёмом V.
  • Скорость: v = V / t — какова пропускная способность канала.

Всё просто, пока единицы согласованы. И именно здесь спотыкается большинство — поэтому сначала разберёмся с единицами.

Единицы скорости и опасная буква «Б»

Скорость канала измеряют в битах в секунду и кратных единицах. Обратите внимание: при переходе к большим единицам множитель 1024 (это 2¹⁰), а не 1000.

ЕдиницаСколько это бит/сГде встречается
1 бит/с1теоретическая база
1 Кбит/с1024старые модемы, медленные сети
1 Мбит/с1024 · 1024 = 1 048 576домашний интернет, тарифы
1 Гбит/с1024³ ≈ 1,07 млрдоптика, дата-центры

А теперь ловушка. Тарифы провайдеров пишут в Мбит/с (мегабит), а размер файла на диске — в Мбайт (мегабайт). В одном байте 8 бит, поэтому «100 Мбит/с» — это всего около 12,5 Мбайт/с. Когда вы видите, что файл на 100 Мбайт качается дольше, чем за секунду на «стомегабитном» канале, виновата именно эта восьмёрка.

Запомните перевод: 1 байт = 8 бит. Чтобы перевести байты в биты — умножаем на 8, биты в байты — делим на 8.

Пример 1. Сколько времени качается файл

Файл размером 3 Мбайта передают по каналу со скоростью 512 Кбит/с. Сколько секунд займёт передача?

Приведём всё к битам. Объём: 3 Мбайта = 3 · 1024 · 1024 байт · 8 = 25 165 824 бит. Скорость: 512 Кбит/с = 512 · 1024 = 524 288 бит/с. Тогда t = V / v = 25 165 824 / 524 288 = 48 секунд.

Пример 2. Какой объём пройдёт за время

Канал работает на скорости 2 Мбит/с. Сколько мегабайт передастся за 1 минуту (60 секунд)?

Объём в битах: V = v · t = 2 · 1024 · 1024 · 60 = 125 829 120 бит. Переведём в байты (делим на 8): 15 728 640 байт, и в мегабайты (делим на 1024 дважды): 15 728 640 / 1024 / 1024 = 15 Мбайт.

Пример 3. Найти скорость канала

За 4 секунды передали файл размером 256 Кбайт. Какова скорость канала в Кбит/с?

V = 256 · 1024 · 8 = 2 097 152 бит, отсюда v = V / t = 2 097 152 / 4 = 524 288 бит/с = 524 288 / 1024 = 512 Кбит/с.

Калькулятор времени передачи

Ниже — калькулятор на Python. Он принимает объём файла в мегабайтах и скорость канала в мегабитах в секунду, аккуратно переводит всё в биты и печатает время передачи. Запустите его и поменяйте числа: попробуйте посчитать, сколько качается фильм на 1400 Мбайт при скорости 50 Мбит/с.

def transfer_time(file_mb, speed_mbit):
    # переводим объём файла в биты: Мбайт -> байты -> биты
    volume_bits = file_mb * 1024 * 1024 * 8
    # переводим скорость в биты в секунду: Мбит/с -> бит/с
    speed_bits = speed_mbit * 1024 * 1024
    # время = объём / скорость
    seconds = volume_bits / speed_bits
    return seconds

for file_mb, speed_mbit in [(3, 4), (700, 100), (1400, 50)]:
    t = transfer_time(file_mb, speed_mbit)
    print(f"Файл {file_mb} Мбайт при {speed_mbit} Мбит/с: {t:.1f} с")

Заметьте, как формула t = V / v работает одинаково на любых числах: важно лишь, чтобы и объём, и скорость были в одних базовых единицах — битах и битах в секунду.

Ожидаемый вывод:

Файл 3 Мбайт при 4 Мбит/с: 6.0 с
Файл 700 Мбайт при 100 Мбит/с: 56.0 с
Файл 1400 Мбайт при 50 Мбит/с: 224.0 с

Алгоритм решения любой задачи

Чтобы не запутаться, держите в голове чёткий порядок действий: сначала переводим всё в биты, потом применяем формулу, и только в конце переводим ответ в нужные единицы.

file_mb = float(input())
speed_mbit = float(input())
volume_bits = file_mb * 1024 * 1024 * 8
speed_bits = speed_mbit * 1024 * 1024
if speed_bits > 0:
    seconds = volume_bits / speed_bits
    print(seconds)
else:
    print(0)

Схема показывает суть: два перевода единиц, проверка, что скорость не ноль, и одно деление. Тот же скелет годится для любой из трёх задач — меняется лишь то, какую величину мы оставляем неизвестной.

Частые ошибки
  • Путают биты и байты: складывают мегабиты тарифа с мегабайтами файла без деления (или умножения) на 8.
  • Берут множитель 1000 вместо 1024 при переводе Кбит → бит и Мбит → Кбит.
  • Забывают перевести минуты в секунды (или часы в секунды) перед подстановкой в формулу.
  • Сравнивают «Кбит/с» и «Кбайт/с» как одно и то же — это отличается в 8 раз.

Коротко

  • Скорость канала v измеряется в бит/с; объём, скорость и время связаны как V = v · t.
  • Три задачи: время t = V / v, объём V = v · t, скорость v = V / t.
  • 1 байт = 8 бит; большие единицы растут множителем 1024.
  • Алгоритм: всё в биты → формула → перевод ответа в нужные единицы.
  • Главная ловушка — путаница бит/байт и Кбит/с против Кбайт/с.
Проверьте себя
1. Какая формула связывает объём данных V, скорость канала v и время t?
AV = v / t
BV = v · t
CV = t / v
DV = v + t
2. Сколько бит в одном байте?
A4
B8
C16
D1024
3. Канал даёт 8 Мбит/с. Сколько примерно мегабайт в секунду это даёт?
A1 Мбайт/с
B8 Мбайт/с
C64 Мбайт/с
D0,8 Мбайт/с
4. Файл 256 Кбайт передали за 4 секунды. Какова скорость канала в битах в секунду?
A64 000 бит/с
B524 288 бит/с
C262 144 бит/с
D2 097 152 бит/с
5. Чтобы найти время передачи файла, какую формулу нужно применить?
At = V · v
Bt = v / V
Ct = V / v
Dt = V + v
6. Чему равна скорость 1 Мбит/с в битах в секунду?
A1000 бит/с
B1 000 000 бит/с
C1 048 576 бит/с
D8 388 608 бит/с
Поддержать проект