본 자료 정리는 '쉽게 배우는 데이터 통신과 컴퓨터 네트워크(개정판)' 원서에 출처합니다.
Copyright © 한빛 아카데미.
컴퓨터 네트워크 효과
자원 공유
컴퓨터 하드웨어, 소프트웨어 등 모든 종류의 물리적, 논리적 자원을 공유
자원 활용의 극대화
병렬 처리에 의한 성능 향상
하나의 공유 시스템 버스에 다수의 메인 프로세스를 장착
I/O 장치의 처리 속도를 향상시키기 위해 I/O 전용 프로세서를 설치
네트워크 속도 상승에 따라 네트워크를 하나의 컴퓨터 시스템으로 활용
-> 클라우드 개념
중복 저장으로 신뢰성 향상
전송과 교환
교환(Swiching): 전달 경로가 둘 이상일 때 라우터에서 데이터를 어느 방향으로 전달할지를 선택하는 기능
전송(Transmission): 일대일(1:1)로 직접 연결된 두 시스템간의 신뢰성 있는 데이터 전송을 보장하기 위한 것
*전송 개념에는 교환 개념이 배제됨
*호스트 c에서는 3 방향으로의 교환이 가능함
호스트 a에서 호스트 d로 데이터를 전달
1) 호스트 a와 호스트 c간의 직접 연결에 의한 전송
2) 호스트 c에서의 올바른 경로 선택을 의미하는 교환
3) 호스트 c와 호스트 d 간의 직접 연결에 의한 전송
전송 방식의 종류
지리적 분포에 따른 분류 방식
데이터 전송, 교환 기술의 분류 방식
점대점 방식
브로드캐스팅 방식
점대점 방식
교환 호스트가 송신 호스트의 중간에 위치 (스타형, 링형, 완전형, 뷸규칙형)
연결 개수가 많아지면 성능은 유리하나 비용이 많이 소요, 연결 개수가 적어지면 전송 매체를 많이 공유해 네트워크 혼잡도 증가
*네트워크 트래픽이 많이 발생하는 구간에는 전송 매체를 늘려야 하고, 그렇지 않은 구간에서는 줄이는 것이 좋음
호스트의 연결이 순환 고리 구조
모든 호스트가 데이터 전송과 교환 기능을 동시에 수행
토큰 (token)
단점
완전형
불규칙형
브로드캐스팅(Broadcastin) 방식
전송 데이터를 모든 호스트에서 수신할 수 있음
충돌(Conllsion): 둘 이상의 호스트에서 데이터를 동시에 전달할 때 충돌 발생
충돌 해결 방법
호스트의 전송 권한을 제한함 -> 사전 충돌 예방 방법
-사전에 전송 권한을 확보하는 방법: 시간대를 다르게 지정하는 방법,
토큰으로 전송 권한을 순환적으로 이용하는 방법
충돌 허용 -> 사후 해결하는 방법
-둘 이상의 호스트가 데이터를 동시에 전송할 수 있도록 허용, 충돌 발생시에 해결 과정 필요 (e.g. 이더넷)
멀티포인트 통신
유니캐스팅 방식(Unicasting)
멀티포인트 방식(Multipoint)
하나의 송신 호스트를 기준으로
송신 호스트가 한 번의 전송으로
멀티포인트 유니캐스팅 (Multipoint Unicasting)
브로드캐스팅 (Broadcasting)
네트워크에 연결된 모든 호스트에 전송되는 방식
단점: 호스트 수가 많을수록 네트워크 트래픽이 급격히 증가
(따라서, 이 방법을 사용하여야 한다면 서브넷(subnet)내에서 이용하는 것이 좋음)
멀티캐스팅 (Multicasting)
일대다 전송 기능을 구현: 통신 환경을 연결 설정 요구 한 번으로 지원 가능: 멀티포인트 유니캐스팅에서 3번 설정 필요한 것과 대비됨 (유니캐스팅 설정)
송신호스트의 전송 요구 한 번으로 모든 수신 호스트에 데이터를 전달
(e.g. 비디오, 오디오 서비스, 화상회의 서비스, 인터넷 뉴스, 인터넷 주식)
멀티캐스팅 그룹을 생성하고 관리하는 기능 필요: 그룹 가입 탈되 등
오류 복구 기능
수신 호스트의 응답 프레임: 송신 호스트에 응답 프레임을 전송해 원래의 데이터 프레임을 재전송하도록 요구
송신 호스트의 타이머 기능
순서 번호 기능
수신 호스트가 보낸 긍정 응답 프레임을 분실하는 경우, 데이터가 수신 호스트에 제대로 전달되어도 송신 호스트는 모름 -> 따라서 송신 호스트는 타임아웃 기능에 의해 재전송함으로써 중복 수신 발생
수신 호스트가 중복 프레임을 구분할 수 있도록 지원
데이터 프레임 내에 프레임 구분을 위한 일련 번호 부여
정상적인 전송
프레임 변형
프레임 변형 오류를 인지한 수신 호스트는 송신 호스트에 부정 응답 프레임을 전송, 원래의 데이터 프레임을 재전송함
부정 응답 프레임을 사용하지 않는 프로토콜(핸드쉐이크 기능이 아닌 경우)에서는 송신 호스트의 타임아웃 기능에 따라 복구 과정을 시작
긍정 응답이나 부정 응답 프레임 전송시 오류 발생 가능
-> 세심한 주의
프레임 분실
순서 번호
중복 수신 문제를 해결하기 위해 데이터 프레임에게 부여되는 고유 번호
순서 번호의 필요성
순서 번호에 의한 프레임 구분
흐름 제어 (Flow Control)
수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 데이터 프레임을 전송
너무 빨리 전송하는 경우
기본 원리
데이터 링크 계층: 전송 데이터를 프레임(Frame)이라는 단위로 나누어 처리
전송프레임: 체크섬(Checksum), 송수신 호스트의 주소, 제어 코드 등 정보 포함
내부정보를 표현하는 방식에 따라 문자 프레임과 비트 프레임으로 구분
문자 프레임 (Character Frame)
프레임의 구조
문자 스터핑 (Character Stuffing)
비트 프레임 (Bit Frame)
프레임의 구조
비트 스터핑 (Bit Stuffing)
전송 데이터에 플래그 패턴이 포함되면 혼선이 발생
송신 호스트: 전송 데이터가 1이 연속해서 5번 발생하면 강제로 0을 추가 (플래그에 1이 6번 나오기 때문에 사전에 배제하는 알고리즘)
수신 호스트: 송신 과정에 추가된 0을 제거하여 원래의 데이터를 상위 계층 전달
오류를 극복하는 방법
전송 프레임에 오류 검출 코드(e.g. 해밍코드, 1비트의 오류를 검출하고 복구하는 기능)를 넣어 수신 호스트가 전송 과정의 오류를 검출
순방향 오류 복구(FEC, Forward Error Correction): 오류 복구 코드를 사용해 수신 호스트가 직접 오류 검출과 복꾸 기능을 수행하는 방식
오류 검출: 네트워크에서는 일반적으로 역방향 오류복구 방식을 사용
패리티 (Parity) 비트
1 바이트(8비트) = 7 비트 ASCII 코드 + 1 패리티 비트
짝수 패리티: 데이터 끝에 패리티 비트를 추가해 전체 1의 개수를 짝수로 만듦
홀수 패리티: 1의 개수를 홀수로 만드는 것
송신 호스트와 수신 호스트는 동일한 패리티 방식을 사용해야 함
블록 검사
짝수 개의 비트가 깨지는 오류 발생 시 패리티 비트 만으로는 오류 검출 불능 -> 이를 위해 수평/수직 패리티를 검사
수평, 수직 방향에 모두 패리티 비트를 지정
다항코드 (CRC): 가장 많이 사용
생성 다항식
전송 데이터: m비트의 M(x)
n+1 비트의 생성 다항식 G(x)를 사용해 오류 검출 코드를 생성, 오류 제어
전송 데이터 M(x)를 생성 다항식 G(x)로 나누어 체크섬 정보를 얻음
연산에서 얻은 나머지 값은 체크섬이라 함
체크섬 계산인 나누기 과정에서 발생하는 다항 연살은 모듈로-2 방식
덧셈과 뺄셈은 배타적 논리합 연산과 동일한 결과를 얻음
수신 호스트는 전송 오류가 발생했는지를 판단하기 위해 수신한 m+n 비트의 데이터를 생성 다항식 G(x)로 나누는 연산을 수행
체크섬의 예
생성 다항식 G(x) = x5 + x2 + 1
전송 데이터: 101101001
체크섬
송신데이터: 10110100100010
수정해야 될 부분이 있으면 댓글로 알려주세요 :)