3장. LAN (Local Area Network)
1. 패킷, 프레임, 오류제어 프레임 : 패킷 전송을 위한 해당 물리망의 데이터 블록 오류제어 : 패리티 방식, CRC 등 1. 패킷, 프레임, 오류제어 패킷 : 데이터 작게 나눈 작은 블록. 왜 작은 블록으로 나눌까? 프레임 : 패킷 전송을 위한 해당 물리망의 데이터 블록 오류제어 : 패리티 방식, CRC 등
1.1 패킷의 개념 컴퓨터 네트워크 = 패킷 네트워크(packet network) = 패킷 스위칭 네트워크(packet switching network) 패킷: 데이터를 작게 나눈 작은 블록 ◑ 오류 발생시 재전송 오버헤드를 줄임 ◑ 공유자원의 독점 방지
질문: 파일 단위의 전송이 아닌 패킷 단위의 전송을 하는 이유 ? 예제1) 파일 크기가 5 MB이고, 통신시스템의 전송속도가 56Kbps라면, 파일전송에 소요되는 시간은? 전송시간 = 5MB * 8(비트/바이트) / 56000(비트/초) = 714초 즉, 다른 컴퓨터는 전송을 위해 거의 12분을 기다려야 함. 예제2) 파일을 1000 바이트 크기의 패킷으로 나누어 전송하는 경우, 다른 컴퓨터는 얼마나 기다린 후 전송이 가능한가? 전송시간 = 1000B * 8(비트/바이트) / 56000(비트/초) = 0.143초 즉, 다른 컴퓨터는 전송을 위해 0.143초만 기다리면 됨.
1.2 패킷과 시분할 멀티플렉싱 TDM으로 인해 실제 물리적인 채널은 하나이나, 여러 개의 논리적 채널을 통해 동시 통신이 가능한 것으로 보인다.
1.3 패킷과 하드웨어 프레임 프레임: 네트워크에서 패킷을 전송하기 위해 정해진 형식 프레임의 시작과 끝을 표시하는 방법 ◑ 데이타로 사용되지 않는 두개의 문자를 사용 soh(16진수 01), eot(16진수 04) ◑ 단점: 오버헤드(overhead) ◑ 문제점: soh 혹은 eot 소실로 인한 문제발생
1.4 바이트 채우기(byte stuffing) ◑ 전송 데이터와 프레임 구분자와 같은 제어정보를 구별하기 위함 ◑ 네트워크 시스템은 결코 제어정보와 자료를 혼동하지 않음 ◑ anmtions/anim05_2.htm
1.5 오류의 발견과 처리 1) 오류발견 방법: 자료에 오류발견 정보 추가 2) 오류발견 방법의 비교 3) 오류수정 방법 ◑ 자료 + 자료 ◑ 자료 + 패리티 비트 (1차원, 2차원) ◑ 자료 + 첵섬 (16, 32비트) ◑ 자료 + CRC (16, 32비트) 2) 오류발견 방법의 비교 ◑ 추가정보의 크기, 복잡도, 오류발견 범위 3) 오류수정 방법 ◑ 프로토콜에 의한 재전송 (예: LLC, TCP)
1.6 패리티 비트(parity bit)를 이용한 오류발견 전송 시 오류발견을 위한 기법 패리티 검사: 패리티 비트를 계산하여 덧붙인다. ◑ 짝수 패리티: “1”의 비트수가 짝수가 되도록 설정 (패리티 비트포함) ◑ 홀수 패리티: “1”의 비트수가 홀수가 되도록 설정 문제점: 전송 중 하나(홀수 개)의 비트에 오류가 발생하면 수신측의 오류발견이 가능하나 짝수 개 비트에 오류가 발생하면 이를 감지하 지 못함.
1.7 첵섬(checksum)을 이용한 오류발견 ◑ 문자들의 각 쌍을 16비트 정수로 취급하여 그들의 합계를 계산함
1.8 첵섬(checksum)을 이용한 오류발견의 문제점
1.9 순환중복검사(cyclic redundancy check)를 이용한 오류발견 - 블록의 대단위 데이터 전송 시의 오류발견 - 전송 데이터를 2진 정수로 표시되는 다항식으로 취급. 고정된 이진 정수의 다항식으로 나눈 후, 나머지 값을 오류발견을 위한 부가정보로 전송. Modulo-2 연산 예) 데이터가 1010001101이고, 생성 다항식이 110101인 경우에 송신자는 CRC를 어떻게 구하나? ANS) 교과서 P65 예제 참조
♦ CRC 계산방법 생성 다항식에 의한 나머지는 항상 생성 다항식보다 한 차수가 낮다. 즉, 생성 다항식이 n비트인 경우에 나머지는 항상 n-1비트가 된다. 따라서, 이를 위하여 나누기 이전에 전송할 데이터에 생성 다항식의 비트 수보다 한 비트적은 개수의 0을 추가한 후에 이를 생성 다항식인 110101로 나누어(modula 2 연산) 그 나머지인(101000110100000 / 110101 = 1101010110 --- 01110) 01110을 구한 후에 01110을 CRC로 사용한다.