본문 바로가기

Programming/STUDY

[모두의 네트워크 기초] 4장 데이터 링크 계층 : MAC 주소로 통신하는 단계

데이터 링크 계층의 역할

: 네트워크에서 데이터를 관리하고 전달하는 계층

=> 데이터 전송의 신뢰성, 효율성에 중요한 역할을 함

 

데이터를 작은 프레임 단위로 분할

MAC 주소를 활용해 장비를 식별

 

여러 기기가 동시에 데이터 전송하려고 할 때 신호 충돌

오류 탐지, 수정 + 흐름, 충돌 관리

 

 

 

회선 제어

 

: 신호 간 충돌 현상이 발생하지 않도록 제어 (오류 회피)

 

 

2개의 스테이션이 묻고 답하며 충돌 피함

ENQ(Enquiry, 신호 시작), EOT(End of Transmission, 신호 종료) 신호 지정

수신자는 신호 받으면 ACK를 송신자에게 보내 정상 수신 알리며 신호 간 충돌 피함

 

 

 

오류 제어

 

: 통신 장애(데이터/순서 변형)가 발생하지 않도록 오류를 검출하고 정정해 통신에 대한 신뢰성 확보하는 방법

 

 

  • 오류 감지 방법

1. 패리티 검사

수신자에게 보내는 최종 데이터의 1의 개수를 짝수로 보낼지 홀수로 보낼지 사전에 약속하고

여분 비트(패리티 비트)를 채워 보내는 방법 (0 또는 1 추가)

 

2. CRC(Cyclic Redundancy Check)

데이터에 CRC 코드 추가해 오류 감지

=> 송수신자 계산 수행, 일치 여부 확인

 

3. 검사합(Checksum)

데이터 각 바이트 값을 더하거나 연산해 생성되는 값

=> 송수신자 계산 수행, 일치 여부 확인

 

 

  • 오류 정정 방법

해밍 코드(Hamming Code)

오류 데이터에 추가 패리티 비트 포함 → 패리티 비트 분석해 오류가 발생한 비트 식별, 수정

 

 

 

흐름 제어

 

: 수신자 상황에 따라 송신자의 데이터 전송량을 조정하는 방법

=> 송수신자의 데이터 처리 속도 차를 해결함

 

 

  • 정지-대기 (Stop&Wait)

송신자는 ACK를 수받은 후에야 데이터 전송 가능

 

 

 

이더넷

: 다수의 컴퓨터, 허브, 스위치 등을 하나의 인터넷 케이블에 연결한 네트워크 구조

 

 

  • CSMA/CD(Carrier Sense Multiple Access/Collision Detection) 프로토콜

충돌(2대 이상의 컴퓨터가 동시에 데이터(프레임)을 보내는 상황) 방지 위해 사용

 

송신 전에 케이블이 사용 가능한지 확인(Carrier Sense)

→ 사용 가능하면 데이터 전송 (Multiple Access)

→ 전송 후에도 발생 가능한 충돌을 확인 (Collision Detection)

 

방법 :

1-persistent

케이블이 사용 중인지 상태 확인하다가 아무도 사용하지 않으면 바로 데이터 전송

=> 충돌 위험성 가장 높은 방법

 

nonpersistent

케이블 사용 중이면 임의의 시간 대기 후 다시 상태 확인, 미사용 시 바로 데이터 전송

 

p-persistent

1+non의 결합

케이블이 사용 중이면 대기 후 다시 상태 확인, 미사용 시 일정 확률로 데이터 전송

 

 

=> 현재 2계층의 스위치 장비가 역할을 대신하고 있음

 

 

 

MAC 주소

: Media Access Control

: 랜카드에 할당된 고유한 값

 

 

1C-1B-B4-08-A4-26

 

48bit로 표현됨

상위 24bit => OUI (Organizational Unique Identifier)

이후 24bit => UAA (Universally Administered Address)

 

콜론(:) 또는 하이픈(-)으로 16진수 표기

 

 

데이터 전송 시 2계층에서

=> 헤더에 송·수신자 Mac 주소를 넣어 프레임 생성

=> 헤더에 유형 추가해 프로토콜( ARP, IPv4, IPv6 ) 표시

 

 

  • ARP(Address Resolution Protocol)

: IP 주소와 MAC 주소를 매핑해주는 프로토콜

 

=> IP 주소에 해당하는 MAC 주소 찾아줌

=> 수신자(목적지)의 MAC 주소를 알 수 있는 방법

 

 

  • (LAN) ARP로 MAC 주소 알아내는 과정
컴퓨터 A (192.168.0.2) -> 컴퓨터 B (192.168.0.3)

 

1. 컴퓨터 A => 같은 허브에 묶인 모든 컴퓨터에 192.168.0.3이라는 IP 주소를 가진 MAC 주소 질의함 (=브로드캐스트, ARP 요청)

2. 모든 컴퓨터는 자신의 IP를 질의한 주소와 비교

3. 192.168.0.3 IP를 가진 컴퓨터 B => 본인 MAC 주소 전달해 응답 (=ARP  응답)

4. 컴퓨터 A => 메모리에 컴퓨터 B의 IP, MAC 주소 저장 (=ARP 테이블)

 

※ arp -a 명령어로  ARP 테이블 확인 가능

 

 

  • (WAN) ARP로 MAC 주소 알아내는 과정

 

WAN 환경에서는 라우터 장비를 거쳐야만 MAC 주소 확인 가능함

 

1. 서버1 => 서버 4의 MAC 주소 확인 시 스위치 1에 먼저 질의

2. 스위치 1 => 라우터에 해당 주소 질의

3. 라우터 => 스위치 2에 주소 질의 후 응답 받음

 

 

 

스위치의 구조

스위치 : 소규모 네트워크 안에서 컴퓨터, 프린터 등 모든 장치를 서로 연결 → 데이터를 쉽게 공유할 수 있도록 하는 장비

=> 대상 컴퓨터에만 데이터 전송

 

cf) 허브 : 물리 계층 / 컴퓨터에서 데이터 전송할 때 허브와 연결된 모든 컴퓨터에 해당 데이터가 전송됨

 

 

 

MAC 테이블



스위치 => MAC 테이블(MAC 주소 - 포트 번호 매핑)을 이용해 스위치 포트에 연결된 컴퓨터의 MAC 주소를 관리함 

 

  • 통신 과정 : MAC 테이블에 대상 컴퓨터 주소 없을 때

1 컴퓨터 A => 컴퓨터 C와 통신 시도

2 스위치 => MAC 테이블에 컴퓨터 C의 MAC 주소 없음을 확인 → 나머지 컴퓨터 B, C, D에 모두 데이터 전송 (Flooding)

3 컴퓨터 B, C, D => 스위치에 응답하며 MAC 주소 알려줌

4 스위치 => MAC 주소들을 MAC 테이블에 저장함

5 스위치 => 컴퓨터 C의 MAC 주소를 컴퓨터 A에 알려줌 (통신 시작)

 

 

  • 통신 과정 : MAC 테이블에 대상 컴퓨터 주소 있 때

1 컴퓨터 A => 컴퓨터 C와 통신 시도 (A의 ARP 테이블에 C의 MAC 주소 있으면 이용 / 없으면 스위치에 질의)

2 스위치 => MAC 테이블에서 C의 MAC 주소 확인, A에 전달

3 A-C 통신 => A의 질의는 B, D에 전달되지 않음 (MAC 주소 필터링)

 

 

 

전송 방향에 따른 통신 방식
단방향 통신 (Simplex Transmission)

 

선로(=채널)가 하나만 있어 일방 통행함

ex) TV, 라디오

 

 

 

양방향 통신

 

하나의 통신 채널에서 송수신 모두 가능한 방식

 

  • 반이중 방식 (Half Duplex)

: 양방향 통신 가능하지만 동시에 통신할 수는 없음

=> 한 쪽에서 데이터 송신하면 다른 쪽에서는 수신만 가능

 

허브에서 주로 사용하는 방식

송신, 수신 번갈아가며 통신해서 데이터 전송 속도가 빠름

충돌 문제 남음

 

(※ 충돌 도메인 : 충돌이 발생할 때 그 영향이 미치는 범위)

 

 

  • 전이중 방식 (Full Duplex)

: 채널을 2개 두어 양방향에서 동시에 데이터 주고받음

 

스위치에서 사용하는 방식

충돌 문제 해결됨

 

 

 

참고