2022. 1. 14. 18:44ㆍMajor`/컴퓨터 네트워크
데이터 링크 계층 (Data Link Layer)
- 직접 연결된 서로 다른 2개의 네트워킹 장치 간의 데이터 전송을 담당
- Network 장비 간에 신호를 주고받는 규칙을 정하는 계층
- 대표적으로 Ethernet 프로토콜이 존재
- Network 기기 간에 Data를 전송 + 물리 주소를 결정
- 장치 간 신호를 전달하는 물리 계층을 이용해서, 네트워크 상의 주변 장치들 간 Data를 전송
- Data들을 Nework 전송 방식에 맞게 단위화(Framing)해서, 해당 단위를 전송
- 전송되는 Data를 프레임(Frame)이라고 한다
- Data Link Layer에서 최종적으로 이더넷 헤더/트레일러가 붙는다
주요 기능
▶ 프레이밍 (Framing)
- 물리 계층으로부터 받은 신호들을 조합해서 프레임(Frame) 단위의 정해진 크기의 Data Unit으로 만들어서 처리
▶ 오류 제어 (Error Control)
- Frame 전송 시, 발생하는 오류들을 복원하거나 재전송
▶ 흐름 제어 (Flow Control)
- 송수신 측 간에 Data를 주고받을 때, 적당한 양의 Data를 송수신할 수 있도록 Data의 흐름을 제어
▶ 접근 제어 (Access Control)
- 매체 상에 기기가 여러개 존재할 때, 데이터 전송 여부를 결정
▶ 동기화 (Synchronization)
- Frame 구분자 (특별한 비트패턴)
이더넷 (Ethernet)
- LAN 환경에서 Data를 정상적으로 주고받기 위한 규칙
- Data 충돌을 막기 위해서 CSMA/CD 프로토콜을 사용한다
- 현재 UTP 케이블 및 광케이블을 사용
- 프리앰블/이더넷 헤더/Layer 3 패킷/FCS를 추가해서 프레임 생성
이더넷 규격
규격 이름 | 통신 속도 | 케이블 | 케이블 최대 길이 | 표준화 연도 |
10BASE5 | 10Mbps | 동축 케이블 | 500m | 1982년 |
10BASE2 | 10Mbps | 동축 케이블 | 185m | 1988년 |
10BASE-T | 10Mbps | UTP케이블(Cat3이상) | 100m | 1990년 |
100BASE-TX | 100Mbps | UTP케이블(Cat5이상) | 100m | 1995년 |
1000BASE-T | 1000Mbps | UTP케이블(Cat5이상) | 100m | 1999년 |
10GBASE-T | 10Gbps | UTP케이블(Cat6a이상) | 100m | 2006년 |
CSMA/CD (Carrier Sense Multiple Access/Collision Detection)
▶ CS (Carrier Sense) - 회선의 상태에 따라
- 캐리어가 있는지 검사 (캐리어 : Network 상에 나타나는 신호)
Carrier가 감지되면(Network 사용 중)
- Data를 보내지 못하고 기다린다
Carrier가 감지되지 않으면
- Data를 Network상에 보낸다
▶ MA (Multiple Access) - 누구나 동시에 접근 가능
- 케이블에 Data(신호)가 흐르고 있지 않으면 Data를 보내도 된다는 규칙
- 2개 이상의 PC/서버가 Data를 보내려고 하고 있고, Carrier가 감지되지 않는다는 것을 알아낸 순간, 바로 Data를 Network상에 보낸다
- 이 때, 두 PC/서버가 동시에 Data를 보낸경우를 Multiple Access라고 부른다
▶ CD (Collision Detection) - Collision을 검사해서 제어
- 충돌이 발생하고 있는지 확인하는 규칙
- 만약, 캐리어가 감지되지 않고, 두 PC/서버에서 Data를 동시에 보내게 되면 충돌이 일어날 수 있다
- 충돌이 발생하면, Data를 전송한 두 PC/서버는 Random한 시간동안 기다린 다음 다시 Data를 전송
- 재충돌을 최소화 하기 위해서 Backoff 알고리즘을 사용
- 너무 많은 Collision이 발생하면, 통신이 더 이상 불가능해진다.
이더넷 헤더 (Ethernet Header)
목적지 MAC 주소 (Destination MAC Address) |
출발지 MAC 주소 (Source MAC Address) |
유형 (Ethernet Type) |
6바이트 | 6바이트 | 2바이트 |
- 총 14바이트로 구성되어 있다
▶ 유형 (Ethernet Type)
- 이더넷으로 전송되는 상위 계층 프로토콜의 종류
- L3 패킷의 타입을 명시
유형 번호 | 프로토콜 |
0x0800 | IPv4 |
0x0806 | ARP |
0x0835 | RARP |
0x814C | SNMP over Ethernet |
0x86DD | IPv6 |
이더넷 프레임 (Ethernet Frame)
- 데이터 링크 계층에서 프레임을 만들고
- 물리 계층에서 이 프레임 비트열을 전기 신호로 변환해서 Network를 통해서 전송
프리앰블 (Preamble) |
시작프레임 지시기 (SFD) |
이더넷 헤더 | Data(Packet) | FCS(CRC) | ||
목적지 MAC 주소 | 출발지 MAC 주소 | 유형 | ||||
7byte | 1byte | 6byte | 6byte | 2byte | 46 ~ 1500byte | 4byte |
▶ 프리앰블 (Preamble)
- 실제 이더넷에 포함되지는 않지만, 이더넷 프레임의 시작/동기화를 담당
- 수신 측에게 Frame이 도착하는 것을 알려준다
- 10101010이 반복되는 7바이트 길이의 필드이고, 수신 측에게 0, 1을 제대로 구분할 수 있도록 동기화 신호 제공
▶ 시작프레임 지시기 (Start of Frame Delimeter)
- 마지막 비트가 1인 10101011의 값을 가지고, Frame의 시작을 알린다
▶ 목적지 MAC 주소 (Destination MAC Address)
- Frame을 수신하는 목적지의 MAC 주소
▶ 출발지 MAC 주소 (Source MAC Address)
- Frame을 송신하는 송신자의 MAC 주소
▶ 유형 (Ethernet Type (길이/종류))
- 이더넷 프레임의 Data 필드 길이 / 상위 계층에서 사용하는 프로토콜의 종류 표시
▶ Data (Packet)
- 상위 계층의 프로토콜로부터 캡슐화된 Data가 들어있다
- 최소 46byte ~ 최대 1500byte의 Data가 존재
- 46byte 이하이면, 의미없는 비트를 Padding해서 최소한 46비트까지는 만들어서 전송
▶ FCS(CRC)
- 이더넷 헤더 ~ Data 영역을 계산해서 Error발생 여부 판별
- 송신측에서 CRC를 추가해서 보내고, 수신측은 CRC를 체크해서 에러프레임을 버린다
※ CRC
- 송신측의 Data로부터 수학적 연산을 통해서 추출된 결과를 FCS(오류 검사 필드)에 붙여서 보낸다
- 수신측에서는 동일한 방법으로 추출된 결과와 일치하는지 확인
MAC 주소
- 랜 카드를 제조할 때 정해지는 물리적 주소이다
- 전 세계에서 유일한 번호로 할당된다
- 총 48비트의 숫자로 구성되어 있다
- 앞 24비트 : 랜카드 제조사 번호
- 뒤 24비트 : 제조사가 랜 카드에 붙인 일련번호
스위치 (Switch)
- 계층 2 (데이터 링크)에서 동작
- Layer 2 Switch / Switching Hub라고 불린다
- 스위치 내부에는 MAC 주소 테이블이 존재
MAC 주소 테이블 (MAC Address Table)
스위치의 포트 번호 + 포트에 연결된 컴퓨터의 MAC 주소가 등록되는 DB
- MAC 주소 학습을 통해서 MAC 주소 테이블에 해당 포트+MAC주소를 저장
- 초기 상태에는 아무것도 등록되어 있지 않다
스위치 기능
▶ MAC 주소 학습 (Learning)
1. 목적지 MAC 주소가 추가된 Frame 전송
2. Frame이 스위치를 지나칠 때, MAC 주소 테이블에 출발지 MAC 주소가 등록
▶ 플러딩 (Flooding)
- 목적지 MAC 주소가 MAC 주소 테이블에 등록되지 않은 경우
- >> 출발지를 제외한 포트에 연결된 모든 컴퓨터에 Frame이 전송
- 이를 플러딩(Flooding)이라고 부른다
▶ 포워딩 (Forwarding)
- 스위치가 목적지 MAC 주소를 보유하고 있어서 그대로 목적지 포트로 Frame을 전송
- 나머지 포트는 필터링되어서 Frame 전송 X
▶ 필터링 (Filtering)
- 스위치가 목적지 MAC 주소를 보유하고 있어서, 해당 주소가 아닌 포트로는 Frame 전송 X
▶ 에이징 (Aging)
- 스위치는 MAC 주소를 학습해서 MAC 테이블에 저장
- MAC 주소는 기본적으로 300초 동안 MAC 테이블에 저장
- 300초 내에 Frame이 들어오지 않으면 해당 MAC 주소는 지워진다
- 시간은 조정 가능
단방향 통신 (Simplex)
- 송신측, 수신측이 미리 정해져 있어서 한쪽으로만 전송 가능하다
반이중 통신 (Half Duplex)
- 회선 하나로 송수신을 번갈아가면서 통신
- 송수신을 동시에 할 수 없다
- Data를 동시에 전송하면 충돌(Collision) 발생
- 허브는 반이중 통신 방식을 사용한다
전이중 통신 (Full Duplex)
- 송수신을 동시에 할 수 있다
- 송수신이 서로 다른 채널(회선)을 통해서 이루어지기 때문에, 충돌 발생 염려가 없고, 충돌 감지도 하지 않는다
- Half Duplex보다 속도가 2배 더 빠르고, 10Base-T 이상의 모든 상위 전송속도 Ethernet에서는 Full Duplex를 지원
- 스위치는 전이중 통신 방식을 사용한다
충돌 도메인 (Collision Domain)
- 충돌(Collision)이 발생할 때 그 영향이 미치는 범위
- 충돌 도메인의 범위가 넓을수록 Network가 지연된다
- 허브는 연결된 모든 PC가 동일한 Collision Domain상에 있다
- 허브는 Collision Domain을 나눠주지 못한다
- 스위치는 Collision Domain을 포트별로 나눠준다
ARP (Address Resolution Protocol)
- IP 주소를 이용해서 MAC 주소를 찾기 위한 프로토콜
- IP 주소(논리적 주소) → MAC 주소(물리적 주소)로 변환하는데 사용
- 이더넷 프레임을 전송하려면 목적지 컴퓨터의 MAC 주소를 지정해야 한다
- IP 주소, MAC 주소를 1:1 매칭해서 LAN(Layer 2)에서 목적지를 제대로 찾아갈 수 있도록 도와준다
- arp -a : ARP 캐시 내용 확인 명령어
- arp -d : ARP 캐시 강제 삭제 명령어
ARP 요청 (ARP Request)
- 목적지 주소를 모르면 MAC 주소를 알아내기 위해 Network에 BroadCast를 한다
- IP 주소를 대치할 수 있는 MAC 주소를 찾아내기 위해 보내는 BroadCast 패킷 요청
- 이것을 ARP Request라고 한다
BroadCast : LAN에 붙어있는 모든 Network 장비들에게 보내는 통신
ARP 응답 (ARP Reply)
- ARP 요청에 대해, 지정된 IP주소를 가진 컴퓨터가 MAC 주소를 응답으로 보낸다
- 이것을 ARP Reply라고 한다
ARP 테이블 (ARP Table)
- 출발지에서 MAC 주소를 얻은 후, MAC 주소와 IP 주소의 매핑 정보를 메모리에 보관
- 이 정보를 ARP Table이라고 한다
ARP 캐시 (ARP Cache)
- IP 주소를 MAC 주소에 연결하는 데 사용되는 Data의 저장소