본문 바로가기

Kitri_NCS3기 보안과정/Network

170405 네트워크 기초 (MAC 계층 과 데이타링크 계층)

1. IEEE 802 시리즈

원거리 호스트를 연결하는 WAN과 달리 LAN은 근거리 지역에 분포된 호스트를 연결한다. LAN은 WAN보다 효율적인 전송관리를 통해 네트워크의 이용 효율을 극대화 하려 하는데 네트워크 전송 효율은 주로 전송 매체의 성능에 좌우 되지만 연결방식이나 전송방법에도 많은 영향을 받는다. IEEE802 시리즈는 LLC 계층 뿐 아니라 MAC 계층에 대한 다양한 표준안을 정의 하고 있다.


MAC계층가 LLC 계층 ?


LAN 환경에서 계층 2(데이터링크 계층)기능을 MAC과 LLC 계층으로 분리


- LLC : 계층 2 기능 수행 

- MAC : LAN의 물리적 특징을 반영하여 전송효율을 높이기 위함


1. MAC 계층

LAN 종류에 따라 특성이 구분됨 

 

 - 이더넷 

공유버스 구조 지원, 충돌현상 발생

충돌감지 기능 필요

충돌 현상 발생시 호스트는 이를 감지하고 일정 시점이 지난 후 재전송

CSMA/CD 방식 사용


 - 토큰링

토큰을 사용해서 데이터 전송 시점을 제어 → 충돌 발생 X


2. LLC 계층

LAN 환경의 데이터링크 계층 기능을 수행

LAN 종류에 따라 MAC 계층의 설계 형태가 영향을 받는것 처럼 LLC계층도 LAN 의 특성에 부분적으로 영향을 받음

이더넷의 LLC와 토큰링의 LLC는 약간 다를 수 있음



IEEE802 시리즈의 구조를 알아보고 MAC계층의 구성요소를 하나하나 짚어보자.




1. CSMA/CD 

: MA(Mulitiple Access) : 다수 호스트가 하나의 공유 매체에 연결됨

 CS(Carrier Sense) : 호스트는 공유매체의 사용가능 여부를 신호감지로 확인

 CD(Collsion Detection) : 공유 매체에서 데이터 충돌 여부 확인


데이터를 전송할 경우 충돌이 발생할 경우 다시 보내야 한다. 무언가 보내 고자 할때 전송로를 누군가 사용하고 있는지 확인해 보고 없으면 데이터를 보낸다. 혹시나 다른 곳에서도 동시에 데이터를 전송할 경우에는 충돌이 발생한다. 데이터를 보내고 나면 항상 확인을 하고 충돌이 났을경우 random 한 시간간격을 두고 재전송을 한다. 



기능 

- 충돌 감지 기능이 필수요구

- 충돌 감지 후, 재전송 기능으로 오류 복구

- 공유 매체의 길이가 길수록 전송 지연이 증가, 충돌 가능성 ↑


공유 매체에서의 충돌 해결 

- 충돌 허용 방식 : CSMA/CD

- 충돌 회피 방식 : 전송 시간대를 달리하는 타임 슬롯 방식


2. 토큰버스

: 이더넷과 토큰링의 특징을 합친 형태, 물리적으로는 버스형태지만 논리적으로는 링형태

 물리적으로 연결된구조는 버스형태이지만 토큰을 전달하는 순서는 링형을 띄고 있다.


프레임 구조



3. 토큰링 

: 물리적으로 링 구조 지원 


동작방식 - 대기모드, 전송모드


대기모드

- 입력단으로 들어온 데이터를 바로 출력단으로 보냄

- 호스트가 다운되거나 기타 장애가 발생하도 네트워크에 영향을 주지않기 위함

전송모드 

- 토큰을 확보해 데이터를 전송 할 수 있는 권한을 보유한 상태

- 호스트가 중계기능을 수행하며, 출력단을 통해 데이터를 전송 할 수 있음



2. 이더넷(IEEE 802.3x)

CSMA/CD : 반송파 감지 다중 접속 및 충돌 탐지
유선 방식의 경우 충돌이 날 수 있기 때문에 충돌을 대처 할 수 있는 Collision Detection 방식을 추가 한다.

프레임을 전송함 과 동시에 두개의 다른 포트를 이용하여 충돌이 발생하는지 감시한다. 
프레임이 목적지에 도착할 시간이전에 다른 프레임의 비트가 발견되면 충돌이 일어날 것으로 판단한다.
충돌이 감지되면 진행중인 프레임의 전송을 중지한다.

CSMA는 매체가 빈 (free) 직후 어떤 행동양식을 취하는가 ?

1-persistent CSMA
 - 낙천형
      : 충돌되지 않으리라는 확률 1 을 갖고 사용중이지 않은 것을 감지하자마자 즉시 매체에 접근해서 프레임을 송출

- 충돌 발생 가능성이 가장 크므로 채널 사용율이 낮은대신에 대기시간은 짧은
- 유선 LAN 이더넷에서는 이렇게 행동함

nonpersistent CSMA
- 비관형
: 반드시 충돌될 것이라고 비관하여 비록 사용중이지 않은 것을 감지하여도, 확률 분포에서 얻어진 임의시간만큼 무조건 기다린 후 매체 접근
- 충돌이 적어 채널사용율은 좋아지나 , 대기시간이 길어짐

p-persistent CSMA
- 의심염려형
: 사용중이지 않은 것을 감지하면, 전체중 확률 P가 충돌되지않을것으로 판단되어 매체에 접근하고
 의심을 갖는 나머지 확률 q(=1-p)는 한 단위시간 만큼 기다린 후 매체에 접근
- nonpersistent 처럼 충돌을 줄이고, 1-persistent처럼 대기시간을 줄이고자 하는 위 두가지에 대한 타협안.



고전적인 연결방식 

 - 트랜시버 : 데이터 송수신장치. 신호 감지/충돌 감지 기능을 수행

 - 리피터 : 두 케이블을 연결하는 장치로 증폭 기능을 수행



케이블의 최대 길이를 일정하게 제한 하는데 , 이는 케이블의 거리가 너무 길면 신호 감쇄 현상에 의해 오류가 발생할 가능성이 높아지기 때문이다. 케이블이 연결되는 호스트간의 거리 간격도 일정범위 이내로는 연결 할 수 없도록 되어 있다.


프레임 ?


데이터 링크 계층에서는 전송 데이터를 프레임이라는 작은 단위로 나누어 처리함.

전송 프레임에는 상위 계층에서 보낸 전송 데이터에 오류 확인을 위한 체크섬+ 송수신호스트의 주소+ 제어코드 포함

프레임은 내부 정보를 표현하는 방식에 따라 '문자프레임'과 '비트프레임'으로 구분


문자프레임

: 프레임의 내용이 문자로만 구성됨 

프레임의 시작과 끝에 특수문자 사용 (시작 DLE/STX , 끝 DLE/ETX )

DLE 문자가 포함되면 혼선이 발생한다. 거기서 사용하는게 문자 스터핑 


문자스터핑 : 프레임의 전송 데이터 중 DLE 문자가 포함되면서 발생하는 혼란을 예방하는 방법

송신호스트측에서는 데이터에 DLE 문자가 있으면 강제로 DLE 문자를 추가한다. 한번더 DLE 문자를 생성

수신호스트측에서는 DEL 문자가 두번있으면 DEL 문자를 삭제한다.


비트프레임

: 프레임의 시작과 끝을 구분하기 위하여 플래그(01111110) 사용 

비트 스터핑 : 데이터에 1이 연속5번 나오면 0을 추가해 구분

송신호스트 측에서는 데이터에 1이 연속해서 5번 발생하면 0을추가

수신호스트는 데이터에 1이 연속해서 5번이어지면 0을 제거


이더넷 프레임

: IEEE 표준화에 맞게 프레임도 표준화덴 프레임을 발표함. 


MAC 프레임 = MAC 헤더 + LLC 프레임 + MAC 트레일러

LLC 프레임 : LLC 계층이 MAC 계층에게 전송하도록 요청한 데이터


구조 

 MAC 헤더

Preamble : 수신 호스트가 송신 호스트의 클록 동기를 맞추는 용도

start Delimiter : 프레임의 시작위치

Destination Address : 수신호스트의 MAC 주소

Source Address :  송신호스트의 MAC 주소

Length : data 필드에 포함된 가변길이의 전송 데이터 크기

 LLC 프레임

DATA : LLC 계층에서 보내진 LLC 프레임을 보관

LLC 트레일러 

 Pad

 Checksum : 데이터 변형 오류를 감지하는 기능



IEEE 802.3 표준안의 문제점은 트래픽이 심할때 특정 호스트가 오랫동안 프레임을 전송하지 못할 염려가 있다는것과 프레임의 우선순위가 규정되어 있지않아 중요도를 표현하기 어렵다는 점이다. 이러한 문제점을 해결하기 위해 호스트가 순서를 정해 차례로 프레임을 전송하는 기능이 필요한데, 링구조의 통신망이 이를 지원한다.


토큰버스 프레임


LLC 프레임을 물리계층을 통해 수신호스트에 전달하려면 토큰버스 프로토콜에서 정의한 프레임에 맞게 토큰버스 프레임을 만들어줘야함.

MAC 프레임 = MAC헤더 + LLC프레임 + MAC트레일러


 MAC 헤더

 Preamble : 수신호스트가 송신호스트의 클록 동기를 맞추는 용도

 Start Delimiter : 프레임의 시작 위치 구분

 Frame Control : 데이터 프레임과 제어프레임 구분 

 Destination Address : 수신호스트의 MAC 주소

 Source Address : 송신호스트의 MAC 주소

 LLC 프레임

 DATA = LLC 프레임 보관 (캡슐화)

 좌우에 토큰버스 프레임의 헤더와 트레일러의 정보

 수신호스트는 헤더를 떼어내고 LLC 프레임의 정보만 보내줌

LLC 트레일러 

 Checksum : 데이터 변형 오류 감지

 End Delimiter : 프레임의 끝 위치 구분




3. 오류검출


수신측에서 받은 데이터는 송신측에서 보낸 데이터와 동일해야 정상이다. 하지만 다양한 원인으로 데이터에 오류가 발생 할 수 있다. 때문에 신뢰 할 수 있는 네트워크 통신을 하기위해 오류의 검출과 수정이 필요하다. 

오류 복구방법에는 오류 복구 코드를 이용해 수신호스트 스스로 오류를 복구하는 순방향 오류 복구 방법과 오류 검출 코드를 이용해 수신 호스트가 송신 호스트에게 오류를 통지하는 역방향 오류 복구가 있다.


단일 비트오류 : 데이터 단위중 하나의 비트만 변경하는 오류

다중 비트오류 : 데이터 단위중 두개 이상비연속적인 비트를 변경하는 오류

집단 오류 : 데이터 단위중 두개 또는 그 이상연속적인 비트를 변경하는 오류


오류를 검출하는 방법중에는 데이터에 비트를 하나 붙여서 전송해 수신측에서 데이터 전송중 발생한 오류를 검출 할 수 있는 패리티 비트 검사 방식이 있다 .


패리티 비트 검사 방식 


전송 과정에서 홀수개의 비트가 깨지면 오류 검출 가능

전송 과정에서 짝수개의 비트가 깨지면 오류 검출 불가능


패리티 비트의 값은 데이터 코드 내에 있는 1의 수를 계산함으로써 결정된다. 검출률이 50%정도 밖에 안되지만 방법이 간단하고 1차적인 검사정도의 효과는 있기 때문에 사용함.


홀수 패리티 방식 (Odd parity)

전체 비트에서 1의 갯수가 홀수가 되게, 데이터비트에서는 1의 갯수가 짝수

짝수 패리티 방식 (Even parity) 

전체 비트에서 1의 갯수가 짝수가 되게, 데이터 비트에서는 1의 갯수가 홀수



문자를 블록으로 전송하면 오류 확률이 높아지는데 오류 검출 능력을 향상 시키려 문자 블록에 수평, 수직으로 패리티 검사를 하는 방법이 있다. 이것이 블록 합 검사이다. 


블록 합 검사 

수평, 수직방향 모두에 패리티 비트를 지정 

행 단위 패리티에 열 단위의 오류 검사를 수행하는 열 패리티 문자를 추가 하여 이중으로 오류 검출

한 데이터에서 짝수개의 오류가 발생하더라도 오류를 검출 할 수 있다.



순환중복검사 

오류를 검출할때 다항식 코드를 사용한다. 

오류가 없을때는 계속 발생하지 않다가 오류가 발생하면 그 주위에 집중적으로 오류를 발생시키는 집단오류를 검출하는 능력이 탁월하고, 구현이 단순하다.


송신호스트에서 전송데이터 에 체크섬을 붙여 수신자에게 전송한다

수신호스트는 전송데이터+체크섬을 다항식으로 나누어 결과를 확인한다 . 

(나머지= 0 → 오류 x , 나머지 != 0 → 오류)


[ 데이터 + 체크섬 ] % (xor로 다항식을 나눠준다)


체크섬 값을 구하기 위해서는 

데이터 + (다항식-1자리수) 만큼 0을 붙여준다.


붙여준 0의 개수만큼의 자리에 나머지가 나온값이 checksum 값이다. 


checksum을 산출하면 데이터에 뒤에 붙여 다항식과 나눠준다. 나누어 떨어지면 오류가 없는것

프로토콜 프레임


- 정보 프레임 : I 프레임

상위 계층이 전송 요구한 데이터를 송신하는 용도

- 긍정 응답 프레임 : ACK 프레임 

전송 데이터가 올바르게 도착했음을 알리는 용도

- 부정응답 프레임 : NAK 프레임

전송 데이터가 깨져서 도착했음을 알리는 용도

데이터를 송신한 호스트는 원래의 데이털르 재전송 하여 오류 복구


긍정응답 프레임의 분실 경우 : 순서번호를 입력하여 구분 

부정응답 프레임의 분실 경우 : 타임아웃기능으로 오류 복구



슬라이딩 윈도우 프로토콜

흐름제어 기법중 정지-대기 흐름제어 기법의 비효율 적인 부분을 개선 ACK프레임을 수신하지 않더라도 여러개의 프레임을 연속적으로 전송

 (정지-대기 흐름제어 기법의 비효율성 : 한 데이터프레임을 전송 → ACK프레임을 받으면 다음 프레임 전송 → EOT 프레임 전송되면 종료 )


- 양방향 통신지원 

- 오류 제어와 흐름제어 기능을 모두 지원

- 윈도우라는 프레임 관리 

- 전송된 데이터는 영역 해제

- ACK 프레임이 반송되는 만큼 영역 확장 


1. 전송측은 프레임 관리를 위해 각 프레임의 모듈러에 의한 번호체계가 부여된다.

0 1 2 3 4 5 6 7 8 9 


2. 전송측 윈도우 준비  

[0 1 2 3 4] 5 6 7 8 9


3. 전송한 만큼 윈도우 프레임이 줄어듬 

0 1 [2 3 4] 5 6 7 8 9  → 0과 1을 전송했을 경우


4. ACK 프레임을 수신측으로 부터 전달받게 되면 받은 만큼 확장된다.

 0 1 [2 3 4 5 6] 7 8 9 


예 ) 




GBn(Go-Back-n)ARQ 기법 

: 전송된 프레임이 손상되면 확인된 마지막 프레임 이후로 보내진 프레임을 재전송 하는기법이다.


재전송의 경우

1. NAK 프레임이 왔을경우

2. 전송데이터 프레임의 분실

3. 지정된 타임아웃내의 ACK 프레임 분실 


재전송을 하게 되면 n 번째 데이터만 재전송 하는것이 아니고 n부터 그 이후의 모든 데이터를 재전송 하게 된다.






선택적 재전송 기법 

: GBn 방식과는 다르게 마지막프레임 후 전송되있던 프레임을 버리지않고 손상된 프레임만 선택적으로 재전송 한후 전송 진행.

피기배킹

: 정보 프레임이 응답프레임까지 수행 

 - 정보프레임 = 정보프레임 + 응답프레임

 - 2개의 순서번호 : 전송 데이터용 순서번호 , 응답용 순서번호


장점 : 응답프레임의 전송횟수가 줄어서 효율 개선


표기방법 I(m, n) 

     - m : 정보 프레임에서 사용하는 전송 데이터의 순서번호

     - n : 응답 프레임에서 사용하는 응답 순서번호