[EXT-005][기초] KB와 KiB, Mbps와 MB/s 구분하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[EXT-005][기초] KB와 KiB, Mbps와 MB/s 구분하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 17회 작성일 26-09-07 18:34

본문

[이번 수업]
파일 크기와 네트워크 속도에 쓰는 단위를 구분합니다. 같은 바이트 수가 MB와 MiB에서 다르게 보이는 이유, 100 Mbps가 100 MB/s가 아닌 이유를 계산합니다. 외부 다운로드 없이 고정값을 사용하는 Python 실습으로 저장공간과 이론상 전송시간을 확인합니다.

[선수지식]
CORE-002의 비트·바이트와 PY-002의 숫자 계산을 알면 좋습니다. Python 파일을 만들고 실행할 수 있으면 충분합니다.

[학습목표]
1. SI 십진 접두어와 이진 접두어의 차이를 설명합니다.
2. bit/s와 byte/s를 8배 관계로 변환합니다.
3. 파일의 바이트 수와 회선 속도로 이론상 전송시간을 계산합니다.

[핵심개념]
비트(bit)는 0 또는 1 한 자리이고, 바이트(byte)는 8비트입니다. 단위 기호에서는 소문자 `b`가 비트, 대문자 `B`가 바이트입니다. 따라서 Mbps는 초당 메가비트, MB/s는 초당 메가바이트입니다. 100 Mbps를 8로 나누면 이론상 12.5 MB/s입니다. 대소문자를 무시하면 속도를 8배 잘못 해석할 수 있습니다.

SI 접두어는 10의 거듭제곱을 사용합니다. 표준 기호로 1 kB는 1,000 B, 1 MB는 1,000,000 B입니다. 이진 접두어는 2의 거듭제곱을 사용하여 1 KiB는 1,024 B, 1 MiB는 1,048,576 B입니다. 일상 화면에서 KB라는 표기가 1,000 또는 1,024를 뜻하는 경우가 섞여 있으므로 숫자만 보지 말고 해당 도구의 정의를 확인해야 합니다. 정확한 문서에는 kB와 KiB를 구분해 쓰는 편이 좋습니다.

전송시간의 기본식은 `파일 비트 수 ÷ 초당 비트 수`입니다. 바이트 크기에 8을 곱해 비트로 바꾼 뒤 Mbps의 M을 1,000,000으로 계산합니다. 이 결과는 이상적인 최소 시간입니다. 실제 전송에는 프로토콜 머리글, 재전송, 혼잡, 저장장치 속도 같은 영향이 있으므로 더 오래 걸립니다. 처리량은 실제로 전달된 데이터 양을 시간으로 나눈 값이며 회선의 표시 속도와 구분합니다.

운영체제와 파일 관리 도구가 같은 크기를 서로 다른 숫자나 기호로 표시할 수 있습니다. API, 로그, 데이터베이스에서는 모호한 `size: 50` 대신 `size_bytes: 52428800`처럼 기본 단위와 필드 이름을 명시하세요. 화면에서 사람이 읽기 좋은 단위로 바꾸더라도 원본 바이트 수는 유지해야 반올림 누적을 피할 수 있습니다.

[따라하기]
빈 폴더에 unit_check.py를 만들고 다음 코드를 저장합니다.

```python
size_bytes = 50 * 1024**2
speed_mbps = 100

decimal_mb = size_bytes / 1000**2
binary_mib = size_bytes / 1024**2
ideal_seconds = size_bytes * 8 / (speed_mbps * 1_000_000)

print(f"바이트: {size_bytes} B")
print(f"십진: {decimal_mb:.2f} MB")
print(f"이진: {binary_mib:.2f} MiB")
print(f"이론상 전송 시간: {ideal_seconds:.2f}초")
```

macOS와 Linux에서는 `python3 unit_check.py`, Windows에서는 `py unit_check.py`로 실행합니다. 예상 결과는 다음과 같습니다.

```text
바이트: 52428800 B
십진: 52.43 MB
이진: 50.00 MiB
이론상 전송 시간: 4.19초
```

코드는 모든 운영체제에서 같습니다. 50 MiB는 52.43 MB와 같은 바이트 수를 다른 기준으로 표시한 것입니다. 전송시간은 100 Mbps가 계속 유지되고 추가 비용이 없다고 가정한 이론값입니다.

[흔한 실수]
MB와 MiB를 섞어 합산하거나 Mbps를 MB/s로 읽지 마세요. 화면에 반올림된 값을 다시 원본처럼 계산하지 말고 정수 바이트를 기준으로 삼습니다. 속도 측정에서는 파일 크기와 걸린 시간의 단위를 먼저 맞추고, 순간 최고 속도와 전체 평균 처리량을 구분하세요. 파일 압축 전 크기와 압축 후 전송 크기도 별도로 기록해야 합니다.

[보안 주의]
외부 입력의 파일 크기 선언만 믿고 메모리를 할당하지 마세요. 업로드는 실제로 읽은 바이트를 세며 최대 크기, 시간, 저장공간 할당량을 함께 제한합니다. 압축 파일은 작은 전송 크기보다 훨씬 크게 풀릴 수 있으므로 압축 해제 후 총량과 파일 수도 제한하세요. 단위 변환은 큰 정수에서 넘침이 없는지 확인합니다. 실습은 본인 소유의 로컬 환경과 고정 숫자에서만 진행합니다.

[직접 해볼 과제]
2 GiB 파일을 25 Mbps로 보낼 때의 이론상 시간을 초와 분으로 계산하세요. 그다음 실제 처리량이 표시 속도의 80%라고 가정한 시간도 구하고, 결과에 사용한 단위와 가정을 함께 출력합니다.

[확인문제]
1. 1 MB와 1 MiB는 각각 몇 바이트인가요?
2. 100 Mbps가 이론상 12.5 MB/s인 이유는 무엇인가요?
3. 업로드 제한을 화면의 반올림된 MB가 아니라 실제 바이트로 검사해야 하는 이유는 무엇인가요?

[다음 학습]
다음 확장 수업에서는 SHA-256 체크섬으로 파일이 전송 중 바뀌었는지 확인합니다. 체크섬과 비밀번호 해시, 전자서명의 역할 차이도 구분합니다.

[공식 참고 자료]
BIPM SI 접두어
https://www.bipm.org/en/measurement-units/si-prefixes

BIPM SI Brochure
https://www.bipm.org/en/publications/si-brochure

NIST 이진 접두어 정의
https://physics.nist.gov/cuu/Units/binary.html

Python os.stat 파일 크기 문서
https://docs.python.org/3/library/os.html#os.stat_result.st_size

RFC 6349 TCP 처리량 측정 프레임워크
https://www.rfc-editor.org/rfc/rfc6349.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,232
어제
6,862
최대
16,772
전체
770,183
Copyright © 소유하신 도메인. All rights reserved.