통신 방식 (Communication Method)
LAN에서 통신하는 방식
LAN에서 통신하는 방식으로는 유니캐스트, 브로드캐스트, 멀티캐스트가 있다.
유니캐스트(Unicast)
유니캐스트 방식은 서버와 클라이언트의 일대일 통신 기법으로, 통신할 때 송신지와 수신지의 주소(MAC 주소)를 사용한다. 통신 시 프레임을 전송하면 네트워크의 모든 컴퓨터는 프레임을 전송받아 LAN 카드에서 자신의 MAC 주소와 비교한다. 이때, 자신의 MAC 주소와 수신지의 MAC 주소가 동일하면 전송된 데이터를 수신하고 그렇지 않으면 해당 프레임을 버린다. 유니캐스트 방식은 컴퓨터의 CPU에 영향을 주지 않으며 따라서 컴퓨터의 성능을 저하시키지 않는다.
브로드캐스트(Broadcast)
브로드캐스트 방식은 로컬 LAN에 있는 모든 네트워크 단말기에 데이터를 보내는 방식으로, 서버와 클라이언트가 “일 대 다(1:N)”로 통신하는 기법이다. 브로드캐스트 주소가 오게 되면 LAN 카드는 자신의 MAC 주소와 같든 다르든 패킷을 CPU에 보낸다. 네트워크의 모든 장치는 패킷을 수신하게 되고 필요한 장치만 데이터를 처리하고 나머지는 무시한다.
처음 컴퓨터 사용 시, 상대방의 컴퓨터의 MAC 주소를 알 수 없기에 상대방 컴퓨터의 MAC 주소를 알아내기 위해 ARP로 동작한다. ARP는 Address Resolution Protocol 의 약어로 IP 주소를 MAC 주소로 변환하기 위한 요청 메세지다. ARP 요청을 통해서 MAC 주소를 알아낼 수 있는데, 브로드캐스트 방식은 ARP 요청을 모든 네트워크의 장치에 보낸다는 것이다. 결국, 이로 인해서 불필요한 트래픽이 증가하고 네트워크 성능 저하가 발생할 수 있으며 보안 측면에서의 위험이 증가한다.
멀티캐스트(Multicast)
멀티캐스트 방식은 특정 그룹의 여러 장치에 한 번에 데이터를 전송하는 통신 방식으로, 필요한 장치들에만 데이터를 전송할 수 있다. 일 대 다 방식이지만 특정 그룹에만 전송하기에 네트워크 트래픽이 줄어든다. 다만 멀티캐스트 방식은 스위치나 라우터가 지원될 때만 사용할 수 있기에 제한적이다.
전송 방향에 따른 통신 방식
두 장치 간 데이터를 전송할 때, 데이터 전송 방향에 따라 단방향 통신과 양방향 통신으로 분류된다.
단방향 통신(Simplex)
: 송신 측과 수신 측이 고정되고, 통신 채널을 통해 접속된 두 단말기 사이에서 데이터가 한 방향으로만 전송되는 통신 방식양방향 통신(Duplex)
: 통신 채널을 통해 접속된 두 단말기 사이에서 데이터의 송수신이 모두 가능한 통신 방식
또 양방향 통신은 반이중 통신과 전이중 통신 방식으로 분류된다.
반이중 통신
: 통신 채널에 접속된 단말기 두 대 중 어느 한 쪽이 데이터를 송신하면 상대방은 수신만 할 수 있는 방식, 대표적인 예시로 무전기가 있다.전이중 통신
: 통신 채널에 접속된 단말기 두 대가 동신에 데이터를 송수신할 수 있는 방식
직렬 전송과 병렬 전송
데이터 전송은 이진 데이터를 전압이나 전류의 변화로 표현한 신호에 실어 보내는 것을 만한다. 데이터 비트를 전송하는 방법에 따라 직렬 전송과 병렬 전송으로 나뉜다.
직렬 전송 (Serial Transmission)
하나의 정보를 나타내는 각 데이터 비트를 직렬로 나열한 후, 하나의 통신 회선을 사용하여 순차적으로 1비트씩 송신하는 방식이다. 하나의 통신 회선을 사용하기에 송신 측에서는 데이터를 1비트씩 송신하고 수신 측에서는 수신되는 비트를 일정 단위로 모아 수신한다.
동기화 (Synchronization)
컴퓨터 등 장치 내부에서는 병렬 입출력을 사용하기에 송신 측에서 외부로 데이터를 보내려면 병렬 데이터를 직렬 데이터로 변환해야 하고 수신 측에서는 변환될 직렬 데이터를 다시 병렬 데이터로 변환한다.
직렬 전송 방식에서는 신호를 연속으로 전송하기에 정확히 송수신하려면 데이터의 시작과 끝을 수신 측이 알아야 한다. 두 시스템 간 컴퓨터의 속도 차이(클록 오차)로 인해서 송신 비트 시간 간격(TS)와 수신 비트 시간 간격(TR)은 일치하지 않는데 송식 측이 전송한 데이터의 각 비트를 수신 측이 정확히 수신할 수 있도록 “동기화”시켜야 한다.
따라서 송수신 측이 약속한 패턴을 이용하여 데이터의 송수신 타이밍을 일치시키는 것을 “동기식 전송”이라고 한다. 반면 송수신 간 동기를 맞추지 않고 문자 단위로 구분하여 전송하는 방식을 “비동기식 전송”이라고 한다.
동기식 전송
: 송신기와 수신기가 동일한 클록을 사용하여 데이터를 송수신하는 방식이다. 동기식 전송의 대표적인 예로 “파일 업로드”와 “다운로드”가 있다.비동기식 전송
: 긴 데이터 비트열을 연속으로 전송하지 않고 한 번에 한 문자씩 전송하여 수신기가 새로운 문자의 시작점에서 재동기하도록 하는 방식이다. 대표적인 예시로는 “메세지 전송”이 있다.
병렬 전송 (Parallel Transmission)
부호를 구성하는 비트 수와 같은 양의 통신 회선을 사용하여 여러 데이터 비트를 동시에 전송하는 방식이다. 비트 개를 전송하기 위해 회선 개를 사용한다. 일반적인 컴퓨터와 같은 단말기가 사용하는 병렬 데이터를 그대로 송수신하기에 직렬 전송보다 입출력 구조가 단순하고 동일 조건의 직렬 전송에 비해 배 빠르다.
다만, 병렬 전송은 거리에 비례해서 선로 비용이 많이 들게 된다. 따라서 전송 속도가 빨라야 하는 짧은 거리의 데이터 전송에 주로 이용된다.
통신 오류 검출 (Error Detection in Communication)
통신 오류 (Communication Error)
수신 측으로 전송한 데이터는 송신 측의 데이터와 동일해야 한다. 그러나 다양한 원인들로 인해 데이터 오류가 발생할 수 있다. 오류의 종류로는 다음이 있다.
단일 비트 오류(Single-Bit Error)
: 데이터 단위 중 하나의 비트만 변경하는 오류다중 비트 오류(Multiple-Bit Error)
: 데이터 단위 중 2개 이상의 비연속적인 비트를 변경하는 오류집단 오류(Burst Error)
: 데이터 단위 중 2개 이상의 연속적인 비트를 변경하는 변경하는 오류
송신 측이 보내는 데이터 외에 잉여 데이터를 추가하면 수신 측에서 잉여 데이터를 검사하여 오류를 검출할 수 있다.
패리티 비트 검사
패리티 비트 검사 방식은 전송하는 데이터마다 패리티 비트를 하나씩 추가하여 홀수 또는 짝수 검사 방법으로 오류를 검사한다. 이때 추가로 전송되는 1비트를 패리티 비트라고 한다.
홀수 패리티 방식
전체 비트에서 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방식이다. 데이터 비트에서 1의 개수가 짝수이면 패리티 비트를 1로 정하여 전체 데이터에 있는 1의 개수를 홀수로 만들고, 데이터 비트에서의 1의 개수가 홀수이면 패리티 비트를 0으로 정하여 전체 데이터에 있는 1의 개수를 홀수로 유지한다.
짝수 패리티 방식
전체 비트에서 1의 개수가 짝수가 되도록 패리티 비트를 정하는 방식이다. 데이터 비트에서 1의 개수가 홀수이면 패리티 비트를 1로 정하여 전체 데이터에 있는 1의 개수를 짝수로 만들고, 데이터 비트에서의 1의 개수가 짝수이면 패리티 비트를 0으로 정하여 전체 데이터에 있는 1의 개수를 짝수로 유지한다.
패리티 방식의 오류 검출 과정
- 송신 측에서 데이터에 패리티 비트를 추가하여 전송한다.
- 수신 측에서 받은 데이터의 1의 개수를 확인한다.
- 전송 중 데이터 비트의 수가 변한 경우, 오류를 검출한다.
패리티 방식은 간단한 오류를 검출하기 쉽지만, 한 개의 비트 오류만 검출 가능하고 수정은 불가능하다. 그리고 두 개 이상 비트의 오류가 발생 시 검출이 불가능하다.
블록 합 검사
블록 합 검사는 오류 검출 능력을 향상시키기 위해 수평 패리티와 수직 패리티를 적용하여 문자 블록을 이차원적으로 검사하는 방식이다. 즉, 여러 개의 데이터 블록을 행렬 형태로 배열한 후, 행과 열의 합을 구해 오류를 감지한다.
블록 합 검사 방식의 오류 검출 과정
- 데이터를 일정 크기의 블록으로 나눈다.
- 각 행의 합과 각 열의 합을 계산하여 검사합(checksum) 블록을 추가한다.
- 데이터 전송 후, 수신 측에서 동일한 방식으로 합을 계산하여 비교한다. (계산된 합과 전송된 검사합이 다르면 오류 발생을 감지할 수 있음.)
블록 합 검사 방식은 데이터에 짝수 개의 오류가 발생해도 오류를 검출할 수 있다. 그러나, 사용자 데이터를 전송한 후 검사 데이터를 추가로 전송하기에 많은 오버헤드가 발생한다. 그리고 연석된 문자에서 같은 위치의 2비트가 오류일 때는 오류 검출이 불가능하다.
순환 중복 검사 (Cyclic Redundancy Check)
순환 중복 검사는 정확히 오류를 검출하기 위해서 다항식 코드를 사용하는 방식이다.
순환 중복 검사의 오류 검출 과정
- 송신 측이 데이터를 전송하기 전, 송수신 측은 동일한 생성 다항식을 결정한다.
- 송신 측은 비트의 전송 데이터를 생성 다항식으로 나눈 비트의 나머지 값을 구한다.
- 비트의 전송 데이터에 비트의 나머지 값을 추가하여 비트의 데이터를 수신 측에 전송한다.
- 수신 측은 수신된 비트의 데이터를 생성 다항식으로 나눈다. 나머지가 0이면 오류가 없고, 0이 아니면 오류가 발생한다.