OSI 7계층 중 2계층(데이터 링크 계층)을 알아보자.
데이터 링크 계층(DataLink Layer)
2계층인 데이터 링크 계층은 네트워크에서 데이터를 관리하고 전달하는 계층으로
- 데이터를 작은 프레임 단위로 분할하고
- MAC 주소를 활용해 장비를 식별하며
- 신호 충돌 등의 오류를 탐지하고 수정한다.
이에 대해 알아보자.
MAC 주소
MAC(Media Access Control) 주소는 랜 카드에 할당된 값이며 전 세계에서 유일하다.
MAC 주소는 48bit로 표현되며
상위 24bit는 OUI(Organizational Unique Identifier),
하위 24bit는 UAA(Universally Administered Address), NIC Specific or Extended dentifier라고 한다.
OUI는 랜 카드 제조사에 부여된 코드이며 UAA는 각 제조사가 랜 카드에 부여한 코드이다.
표기는 1B-2C-B5-04-A5-24 혹은 1B:2C:B5:04:A5:24와 같이 한다.
프레임
2계층에선 데이터에 MAC 주소, 유형, 트레일러를 추가해 프레임을 생성한다.
프레임에 담기는 MAC 주소는 송신자와 수신자의 MAC 주소를 모두 넣기 때문에
송신할 때 수신자의 MAC 주소를 알고 있어야 한다.
유형은 프로토콜을 나타내는 것으로 IPv4, IPv6, ARP 등이 있다.
- IPv4는 현재 우리가 흔히 알고 있는 IP 주소로 32bit를 활용한다.
- IPv6는 IPv4의 부족 문제로 등장한 128bit의 IP 주소이다.
- ARP는 IP 주소와 MAC 주소를 매핑하는 프로토콜이다.
트레일러는 오류를 검출하여 손실, 손상이 없는 데이터 전송을 보장한다.
그렇다면 송신자는 어떻게 수신자의 MAC 주소를 알 수 있을까? 이때 ARP를 이용한다.
ARP(Address Resolution Protocol)는 IP 주소와 MAC 주소를 매핑하는 프로토콜로 과정은 아래와 같다.
컴퓨터 A(192.168.0.2)가 컴퓨터 B(192.168.0.3)의 MAC 주소를 알아낸다고 가정해 보자.
- 송신 컴퓨터 A는 같은 허브(스위치)에 있는 모든 컴퓨터에게 192.168.0.3의 MAC 주소를 물어본다.(브로드캐스트)
- 모든 컴퓨터는 192.168.0.3과 자신의 IP 주소를 비교하고 주소가 일치하는 B가 A에게 MAC 주소를 전달하며 응답한다.
- 이후 컴퓨터 A는 컴퓨터 B의 IP와 MAC 주소를 메모리에 저장한다.
- 통신한다.
단, 이는 동일한 LAN에 연결된 경우이며 WAN으로 넘어가면 라우터 장비를 거쳐야 한다.
LAN에 없으면 라우터에 질문하고 라우터가 다른 LAN에게 질문한다. 과정은 거의 유사하다.
스위치(Switch)
물리 계층에 허브(Hub)가 있다면 데이터 링크 계층엔 스위치(Switch)가 있다.
스위치는 소규모 네트워크 안에서 컴퓨터, 프린터 등 모든 장치를 서로 연결해 데이터를 쉽게 공유할 수 있도록 하는 장비이다.
스위치는 허브와 다르게 1:1로 데이터 소통이 가능하다. 따라서 브로드캐스트를 하는 허브에 비해 효율적이다.
다음으로 스위치는 MAC 주소를 관리하는 기능을 가지고 있다.
이는 표(Table)의 형태로 관리하는데, 이를 MAC Table이라고 한다.
처음엔 MAC Table이 비어있는 상태고 이를 채워나가는 방식은 아래와 같다.
- 컴퓨터 A가 컴퓨터 B와 통신을 시도한다.
- 스위치는 MAC Table에서 B의 MAC주소가 없는 것을 확인하고 연결된 다른 모든 컴퓨터들에게 데이터를 보낸다.(Flooding)
- 각 컴퓨터들은 스위치에 응답하면서 자신의 MAC 주소를 알려준다. 스위치는 MAC Table을 업데이트한다.
- 스위치가 컴퓨터 B의 주소를 컴퓨터 A에게 알려주고 A, B가 통신한다.
업데이트된 MAC Table은 아래의 과정에서 사용된다.
- 컴퓨터 A와 컴퓨터 B가 통신하고자 할 때 컴퓨터 A는 먼저 ARP Table에서 컴퓨터 B의 MAC 주소를 찾는다.
- MAC 주소가 없으면 스위치에게 이를 물어보고 스위치는 MAC Table에서 B의 주소를 확인 후 A에게 전달한다.
- 이제 A, B가 통신하면 되므로 컴퓨터 A의 질의는 C에게 전달되지 않는다.(Filtering)
이더넷(Ethernet)
이더넷은 다수의 컴퓨터, 허브, 스위치 등을 하나의 인터넷 케이블에 연결한 네트워크 구조이다.
이더넷은 CSMA/CD(Carrier Sense Multiple Access/Collision Detection) 프로토콜을 사용한다.
아래와 같이 2대 이상의 컴퓨터가 하나의 컴퓨터에 동시에 데이터를 보내는 경우
충돌(Collision)이 발생한다.
CSMA/CD는 이를 방지하는 프로토콜로 전류의 강도를 확인해 케이블이 사용 중인지 확인하는 방식이다.
전류의 강도를 확인하고 강도 세기가 낮아질 때까지 기다렸다가 데이터를 송신한다.
즉,
- 송신 전에 케이블이 사용 가능한지 확인(Carrier Sense)하고
- 사용 가능하면 데이터를 전송(Multiple Access)하고
- 전송 후에도 여전히 발생할 수 있는 충돌을 확인(Collision Detection)한다.
각 컴퓨터는 데이터를 보내기 위해 눈치 게임을 하는 것이다.
충돌 방지 방식
케이블이 사용 가능한지 확인함으로써 충돌을 방지하는 방식은 아래 3가지가 있다.
1. 1-persistent
케이블이 사용 중인지 상태를 계속 확인하다가 사용하지 않는 상태면 바로 데이터를 전송한다. 충돌 위험 높음
2. nonpersistent
케이블을 사용하지 않고 있다면 데이터를 바로 보내고 그렇지 않다면 임의의 시간을 기다렸다가 상태를 다시 확인한다. 1번 방식에 비해 충돌 위험이 낮음
3. p-persistent
1번, 2번 방식의 결합으로 케이블이 사용 중이면 기다렸다가 다시 상태를 확인하고 사용 중이지 않다면 일정 확률로 데이터를 전송한다.
현재는 CSMA/CD를 잘 사용하지 않는데, 스위치가 이 역할을 대신하고 있기 때문이다.
전송 방향에 따른 통신 방식
충돌이 발생하는 이유는 컴퓨터 간 단방향 통신을 하고 있기 때문이다.
단방향 통신(Simplex Transmission)은 채널이 하나만 있어서 일방통행만 가능한 경우로 TV, 라디오 등에 사용한다. 이는 양방향 통신이 이루어지는 컴퓨터의 경우엔 비효율적이다.
따라서 보다 효율적인 양방향 통신(Duplex Transmission)을 활용한다.
반이중(Half Duplex) 방식은 양쪽 방향에서 통신이 가능하지만 동시에 통신할 수는 없다.
주로 허브에서 사용하는 방식으로, 하나의 채널만 사용하므로 여전히 충돌 가능성이 있다.
(충돌 도메인(Collision Domain): 충돌이 발생할 때 그 영향이 미치는 범위)
전이중(Full Duplex) 방식은 2개의 채널을 활용해 양 방향에서 동시에 데이터를 주고받을 수 있는 형태이다.
주로 스위치에서 사용하는 방식으로 충돌 문제를 해결할 수 있다.
오류 탐지 및 수정
데이터 링크 계층의 마지막 역할인 오류 감지 및 수정 방식은
- 회선 제어
- 오류 제어
- 흐름 제어
가 있다.
회선 제어
회선 제어는 오류를 회피하는 방법으로 신호 간 충돌 현상이 발생하지 않도록 제어한다.
시작을 의미하는 ENQ(Enquiry), 끝을 의미하는 EOT(End Of Transmission) 신호를 활용하며 수신자는 신호에 대해 ACK를 보내 정상적으로 신호를 받았음을 알린다.
오류 제어
오류 제어는 오류를 검출하고 정정해 통신에 대한 신뢰성을 확보하는 방법이다.
데이터가 외부 간섭, 시간 지연 등으로 인해 변형되거나 순서가 바뀌는 등의 장애를 검출한다.
방법 중 하나인 패리티 검사(Parity Check)는 최종 데이터의 1에 대해 짝수 혹은 홀수의 개수를 미리 약속한 후 Parity bit에 알맞은 값을 담아 보내는 방식이다.
예를 들어 위의 최종 데이터가 있고 1의 개수를 짝수로 약속한 경우 Parity bit는 0이다.
이외에도 CRC, CheckSum 등이 있다.
흐름 제어
흐름 제어는 송, 수신자 간 데이터 처리 속도 차이를 해결하기 위해 수신자의 상황에 맞게 송신자의 데이터 전송량을 조정하는 방법이다.
아래는 흐름 제어 방법 중 하나인 정지 - 대기(Stop & Wait)로 송신자가 데이터를 전송한 후 ACK를 받을 때까지 기다린다. ACK를 받으면 다음 데이터를 보낸다.
'Network' 카테고리의 다른 글
Network - OSI 7 Layer: 전송 계층(4 Layer) (0) | 2024.04.01 |
---|---|
Network - OSI 7 Layer: 네트워크 계층(3 Layer) (0) | 2024.03.25 |
Network - OSI 7 Layer: 물리 계층(1 Layer) (1) | 2024.03.14 |
Network - 네트워크 통신 규약(OSI 7계층, TCP/IP 4계층) (2) | 2024.03.12 |
Network - 네트워크란? (0) | 2024.03.07 |