공부하는 스누피

[네트워크] 데이터 링크 계층 본문

CS/네트워크

[네트워크] 데이터 링크 계층

커피맛스누피 2020. 11. 3. 01:33

데이터 링크 계층(Data Link layer, DL layer)은 OSI 7계층의 2계층으로, 인접한 두 노드 사이의 통신을 담당한다. 이때 각 노드는 호스트, 라우터, 스위치, WIFI AC가 될 수 있다. 한 링크에서 전송 노드는 데이터그램(패킷)을 링크 계층 프레임으로 캡슐화해서 링크로 전송한다.

 

DL 계층이 하는 일 5가지

1) Hop to Hop/Node to Node Delivery (노드 간 통신)

DL의 기본 서비스는 단일 링크상으로 데이터그램을 이동시키는 것이지만, 세부 작동은 특정 링크 계층 프로토콜을 따른다. 

 

2) Flow Control (흐름 제어)

각 링크마다 속도가 다르기 때문에 병목 현상을 해결하기 위한 흐름 제어 프로토콜을 사용한다.

트랜스포트 계층(TP)은 출발지-목적지 간의 흐름제어를 수행하지만, DL은 각 노드간의 흐름제어를 담당한다.

- Stop & Wait

- Go-Back-N

- Selective Repeat

snoop-study.tistory.com/65

 

[네트워크] Go-Back-N, Selective Repeat

데이터 전송 프로토콜은 손실된 패킷과 손상된 패킷 등에 대해 응답하는 방법을 정해두는데, 이 방법에 따라 버퍼링 조건이 달라진다. 파이프라인 오류 회복의 기본적인 접근법으로 Go-Back-N(N부

snoop-study.tistory.com

 

3) Error Control (오류 검출/제어)

DL은 라우터에서 에러체크를 하기 때문에 시간면에서 효율적이다. 약한 신호나 전자기기의 잡음 때문에 비트 오류가 발생할 경우를 대비해 송신 노드에서 프레임에 오류 검출 비트를 설정하게 하고, 수신 노드에서는 오류 검사를 수행하게 한다. 

 

- 패리티 검사 Parity check 

단일 패리티 비트를 사용할 경우 사용자가 원래 정보에서 비트를 하나 더해서 1의 총 개수가 짝수나 홀수가 되도록 한다. 수신자는 수신된 비트들에서 1을 개수로 계산한다. 예를 들어, 짝수 패리티 기법에서 수신자가 받은 비트 중 1 개수가 홀수라면 오류가 있음을 알게 된다. 이 방법은 짝수/홀수 패리티 기법에서 짝수/홀수의 비트 오류가 발생할 경우 검출하지 못한다. 

2차원 패리티 기법에서는 단일 패리티 기법을 2차원으로 일반화했다. 비트들을 2차원 배열 안에 하나씩 넣어서 각각의 행과 열에 대한 패리티 값이 계산된다. i열의 1의 개수가 홀수일때, i열의 패리티 비트는 1이고, j행의 1의 개수가 짝수일때, j행의 패리티 비트는 0이다. 이를 통해 수신자는 단일 비트 오류 발생을 검출할 수 있다. 단일 패리티 검사에서 임의의 비트 오류만 잡아냈던 것과 큰 차이가 있다.

이렇게 수신자가 오류를 검출하는 것을 순방향 오류 정정(forward error correction, FEC)이라고 한다. 

 

- 체크섬 Checksum

체크섬 기술은 비트들을 일련의 정수처럼 다룬다. 인터넷 체크섬(Internet checksum)에서는 더한 값의 1의 보수를 체크섬으로 해서 세그먼트 헤더에 넣어준다. 수신자는 체크섬을 포함한 데이터 합의 1의 보수를 취한 후, 결과가 모두 1인 비트로 되어있는지 확인한다. TCP와 UDP는 모든 필드에 대해서 검사를 수행하지만, IP는 헤더에 대해서만 검사한다 (IP 패킷에 TCP 데이터가 들어 있으니 TCP 데이터를 중복으로 검사할 필요가 없다). 체크섬 방법은 상대적으로 패킷 오버헤드가 적지만 오류 위험이 있다.

 

- 순환중복검사 CRC

CRC 코드는 다항식 코드로도 알려져 있다. 전송되는 비트열에 있는 0과 1 값을 계수로 갖는 다항식처럼 이해하기 때문이다. 송신자와 수신자는 생성자로 알려진 비트 패턴에 대해 합의한다. 생성자의 최상위 비트는 1이어야 한다. 주어진 데이터 D에 대해 송신자는 추가비트 R을 선택해서 D 뒤에 덧붙이며, 덧붙여진 패턴은 모듈로 -2 연산을 이용하면 생성자로 정확히 나누어진다. 정리하자면, 수신자는 데이터+추가비트를 생성자 비트로 나눈다. 나머지가 0이 아니면 오류가 발생한 것이다. -2 연산은 각 비트를 XOR한 것과 같다.

d * 2^r XOR R = nG 식은 데이터와 추가 비트를 XOR 연산한 비트가 G로 나누어진다(G의 배수)는 의미이다.

 

 

4) Access Control (접근 제어)

브로드캐스트 링크에서는 하나의 공유된 브로드캐스트 채널에 다수의 노드들이 연결되어 다중 접속 문제가 발생한다. 다중 접속 문제는 공유되는 브로드캐스트 채널로의 접속을 조정하는 문제인데, 다중 접속 프로토콜로 충돌(collide)를 막는다. 충돌은 2개 이상의 노드가 동시에 프레임을 전송해 수신자는 동시에 여러 개의 프레임을 받게 되어 의미를 파악할 수 없을 때 생긴다.

다중 접속 프로토콜은 채널 분할 프로토콜, 랜덤 접속 프로토콜, 순번 프로토콜 세 가지로 분류할 수 있다. 

 

- 코드 분할 다중 접속 (CDMA)

채널 분할 프로토콜의 한 종류로, 시분할 다중화(TDM)와 주파수분할 다중화(FDM)을 이용해 각 노드에게 시간 슬롯과 주파수를 할당한다. CDMA 네트워크에서는 TDM, FDM과는 달리 다른 코드를 각 노드에게 할당해 전송이 간섭되더라도 각 수신자들이 송신자를 구분할 수 있고, anti-jamming 특성을 가지고 있다.

 

- Aloha

랜덤 접속 프로토콜의 하나이다. 랜덤 접속 프로토콜에서 전송 노드는 항상 채널의 최대 전송률로 전송하는데, 충돌이 생기면 충돌이 없을 때까지 프레임을 재전송한다. 재전송할 때, 바로 전송하는 것이 아니라 랜덤 지연되는 시간 동안 기다려서 노드 간 충돌을 없앤다.

슬롯 알로하에서는 하나의 활성 노드가 채널의 최대 전송률로 프레임을 전송할 수 있도록 허용한다 (활성 노드: 전송할 프레임이 있는 노드). 또한 각 노드가 충돌을 감지하고 재전송할 시기를 각자 결정한다. 시간을 슬롯으로 나누고, 노드는 슬롯의 시작점에서만 프레임을 전송하는데, 한 슬롯에서 2개 이상의 프레임이 충돌하면 노드가 감지하는 방식이다. 

순수 알로하는 프레임 도착시 프레임 전체를 브로드캐스트 채널로 전송하는데, 충돌하면 확률 p로 즉시 재전송한다. 1-p로 재전송하지 않는 경우, 노드는 프레임 전송 시간 동안 기다린다. 슬롯의 동기화를 신경쓰지 않아도 되는 방법이다.

 

- CSMA/CD

랜덤 접속 프로토콜의 하나로, 알로하보다 예의바른 규칙을 사용한다. 캐리어 감지(carrier sensing)를 통해 다른 노드가 프레임을 전송하고 있으면 전송 중단이 있을 때 프레임을 전송한다. 충돌 검출(collision detection)으로 다른 노드가 방해 프레임을 전송하고 있음을 검출하면, 자신의 전송을 중단하고 랜덤 시간동안 기다린 후 반복한다.

 

- 폴링 프로토콜(polling protocol)

순번 프로토콜이다. 노드 중 하나를 마스터 노드로 지정하고, 마스터 노드는 각 노드를 라운드 로빈 방식으로 폴링한다. 각 노드들에게 최대로 보낼 수 잇는 프레임 수를 알려주어 빈 슬롯을 제거한다. 하지만 정보를 전송하는데 폴링 지연이 발생하고, 마스터 노드가 고장나면 전체 채널을 사용할 수 없게 된다.

 

5) Physical Addressing (MAC)

MAC 프로토콜은 링크상으로 프레임을 전송하는 규칙에 대해서 명시한다. Point-to-Point 링크의 경우 없어도 되지만, 하나의 링크를 여러 노드가 공유하는 경우, MAC 프로토콜은 여러 노드로부터의 프레임 전송을 조정한다.

 

MAC 주소는 호스트와 라우터들이 가진 링크 계층 주소이다. MAC 주소는 길이가 6바이트이며 16진수 표기법을 사용해 표시한다. 또한, 어떤 어댑터도 동일한 주소를 갖지 않는다는 특징이 있다. 2^24개의 주소를 제조사에게 할당하고, 나머지 2^24개의 주소를 기기에 할당할 수 있어서 가능하다. MAC 주소는 네트워크 계층과 링크 계층을 독립적으로 유지하는 목적을 가진다. LAN이 네트워크 계층의 IP 주소를 사용한다면, 다른 프로토콜을 사용하지 못하고 IP에 의존하게 된다.

 

송신 어댑터는 프레임에 목적지 어댑터의 MAC 주소를 넣고 전송한다. 스위치는 프레임을 자신의 모든 인터페이스로 브로드캐스트해 목적지 MAC 주소와 일치하는 어댑터가 프레임을 받게 한다 (이때 상관없는 어댑터가 프레임을 받아 폐기하기도 한다). 

 

- ARP (Address Resolution Protocol)

네트워크 계층의 IP 주소와 링크 계층의 MAC주소 사이의 변환을 담당하는 프로토콜이다. ARP는 IP 주소를 MAC 주소로 변환해준다. 동일한 서브넷상에 있는 호스트나 라우터 인터페이스의 IP 주소만 변환해준다는 특징이 있다.

각 호스트와 라우터는 ARP 테이블을 가지고 있는데, IP 주소와 MAC 주소 간의 매핑 정보를 포함한다. 각 매핑이 언제 삭제되는지에 대한 TTL값도 포함해 항상 모든 호스트에 대한 엔트리를 가지고 있지 않아도 된다. 

<작동 과정>

1) 송신 노드는 송수신 IP주소, MAC 주소를 담을 수 있는 ARP 패킷을 구성한다.

2) ARP 패킷을 어댑터에게 전달하며, 어댑터는 이를 캡슐화해 브로드캐스트 주소를 통해 서브넷으로 전송한다.

3) 각 어댑터는 브로드캐스트된 ARP 패킷을 자신의 ARP 모듈로 전달해 자신의 IP 주소가 패킷에 있는 목적지와 일치하는지 검사한다.

4) 일치하면 응답 ARP 패킷을 돌려보낸다. 이때는 브로드캐스트가 아니라 유니캐스트(표준 프레임)로 전송된다.

 

MAC 주소를 IP로 변환해주는 프로토콜은 RARP라고 부른다.

 

 

 

(참고) 

James F. Kurose. Computer networking a top-down approach. 7th edition

www.youtube.com/watch?v=JRgmPco0KWI

 

'CS > 네트워크' 카테고리의 다른 글

[네트워크] 가상 근거리 네트워크 VLAN  (0) 2020.11.03
[네트워크] 이더넷  (0) 2020.11.03
[정보처리기사] 네트워크 관련 장비  (0) 2020.11.02
[네트워크] IPv4, IPv6  (0) 2020.11.01
[네트워크] 혼잡 제어  (0) 2020.10.28
Comments