비트 전송
1. NRZ 코딩으로 비트 전송 프로그램
문자열을 1비트씩 NRZ로 전송하기
파일을 이용하여 송신자와 수신자가 통신하기
송신자가 1비트 데이터를 보낼 때 signalFile 의 값이 1이면 다음 데이터를 파일에 씀. 0이면 아직 수신자가 파일을 읽어가지 않은 상태이므로 대기
수신자는 1비트 데이터를 읽을 때, signalFile의 값이 0이면 읽기 시작하고 읽은 후 1로 변경
송신자가 마지막 비트를 송신하면 signalFile 값을 2로 하여 종료 선언
2. 비트 디지털 전송과 아날로그 전송 이해하기
라인코딩: 0, 1 비트 스트림을 어떤 모양으로 보내는가에 대한 방법 (https://en.wikipedia.org/wiki/Line_code )
Manchester 예제 (https://github.com/siddharthasahu/manchester-encoding )
NRZ S 인코딩 파이썬 예제 (http://stackoverflow.com/questions/26725677/nrz-s-with-python )
아날로그 소리를 디지털로 변환하여 저장하는 기술: PCM
사람 목소리(아날로그)를 디지털로 변환하여 전송하는 기술
디지털 신호를 아날로그로 변환하는 기술: 모뎀!!!
실제 0, 1 디지털 신호는 아날로그 신호로 변환되어 전송됨 (modulation)
예를 들어, 0은 아주 작은 크기의 신호로 1은 아주 큰 신호로 전송하는 하기(ASK), 0은 낮은 주파수 음으로 1은 높은 주파수 음으로 보내기(FSK), 0은 원래 신호로 1은 뒤집은 모양의 신호로 보내기(PSK)
신호를 보낼 때 좀더 많은 신호를 보내기 위해서 크기(ASK)와 모양(각도, QSK)를 조합해서 변환해서 보내는 방법이 있음 --> QAM
QAM: Quadrature Amplitude Modulation
여러 개의 채널을 하나의 선에서 송수신하기 위한 기술: 멀티플렉싱
예: 하나의 선에서 전화기가 동시에 여러 대 사용될 경우
FDM, WDM, TDM
물리적인 매체
비트 오류 제어: 탐지 및 복구
해밍 거리(해밍距離 , Hamming distance): 문자열의 전송 도중 몇 글자에서 오류가 났는지 측정하는 방법 중 하나
'1011101'과 '1001001'사이의 해밍 거리는 2
'2143896'과 '2233796'사이의 해밍 거리는 3
"toned"와 "roses"사이의 해밍 거리는 3
나누는 과정에서 각 비트별로 XOR 수행함
CRC-1 : 패리티 비트
CRC-16-IBM: 블루투스, SD 카드
CRC-32: 이더넷, Gzip, Bzip2
IP 헤더, UDP, TCP 헤더에 사용되는 16비트 정수의 합에 대한 1의 보수값을 전송하여 비트 오류 탐지하는 기술임