목차
데이터 링크 계층(Data Link Layer)이란?
데이터 링크 계층이 하는 일
기능 하나하나 설명
헤더
Ethernet
MAC(Media Access Control) 주소
Payload 페이로드
FCS (Frame Check Sequence)(꼬리)
Ethernet의 3가지 통신 형태
스위치, 스위칭 (Switch와 Switching)
데이터 링크 계층(Data Link Layer)이란?
데이터 링크 계층은 신뢰성 있는 데이터 전송을 위해 프레임 생성과 에러 검출/수정을 수행하는 OSI 7계층 중 2계층입니다.
데이터 링크 계층이 하는 일
1. 프레임화: 데이터를 패킷 단위로 묶음
송신중 : 바이트 스트림 -> 프래임
수신중 : 비트 스트림->프래임 (데이터 구조를 복원.)
2. 주소화: 맥(MAC) 주소를 사용해 인접 노드 간 통신
같은 네트워크 내의 인접한두 단말을 연결하는 것
3. 신뢰성을 확보: 에러 감지와 복구
1) 오류 검출과 수정
2) 재전송
3) 흐름 제어.
4) 혼잡 제어
기능 설명
1. 프레임화: 데이터를 패킷 단위로 묶음
예시) 게임 클라이언트가 Wi-Fi를 통해 서버에 패킷을 보낼 때, 데이터링크 계층은 "Wi-Fi 신호"와 "유선 네트워크" 사이의 변환을 담당.
예: (클라이언트 요청)플레이어 움직임 → 패킷 데이터로 변환 → 서버로 전달
데이터 링크 계층에서의 통신
같은 네트워크 내에 있는 인접한 두 단말기기(NIC)를 연결하여 데이터를 전송합니다.
여기서 같은 네트워크는 브로드캐스트 도메인(broadcast domain)안에 있는 단말을 의미합니다.
특정 네트워크 영역에 속한 어떤 단말이 ethernet broadcast frame을 통해, 자신이 속한 네트워크 영역에 있는 다른 모든 단말에게 닿을 수 있다면, 그 네트워크 영역을 브로드캐스트 도메인이라고 합니다. (LAN같음)
일반적으로 같은 subnet에 속하는 두 단말은 L2 protocol만을 이용해 소통할 수 있습니다.( = 같은 broadcast domain에 속한다)
같은 subnet안에서 VLAN을 이용해서 여러개의 broadcast domain을 만들수도 있습니다.
※ VLAN이란 브로드캐스트가 서로 미치지 않는 여러 개의 논리적인 LAN을 만드는 것
단말이란 컴퓨터, 스마트폰과 같이 네트워크를 통해 소통할수 있는 NIC(Network Interface Card)가 있는 모든 장치를 말한다.
각 장치는 데이터 링크 계층에서의 고유한 주소인MAC(Media Access Control) 주소를 가집니다.
LAN(Local Area Network) 환경에서 데이터링크 역할
로컬 환경에서 패킷을 송수신
데이터를 물리 계층으로 전달하거나 네트워크 계층으로 올림.
2. 신뢰성 확보 :
◆ 손실/손상된 프레임 검출, 복원/재전송요청, 흐름 제어, 혼잡 제어
데이터 링크 계층은 네트워크 통신에서 안정성과 신뢰성을 확보하기 위한 중요한 단계입니다. 특히, 실시간 멀티플레이 게임과 같은 응용 분야에서는 데이터 손실과 지연이 게임 플레이에 심각한 영향을 미칠 수 있습니다. 이를 방지하기 위해 다양한 기술과 방법이 데이터 링크 계층에서 적용됩니다.
예시) 게임 서버와 데이터링크 계층 연결
실시간 멀티플레이 게임에서 역할
1. 데이터 손실 최소화 : 패킷 손실은 게임 렉으로 연결됨
2. 근거리 네트워크 통신 : 로비 서버와 플레이어 간 안정적 연결
문제점
데이터링크 계층에서 발생하는 오류가 많으면, TCP/UDP의 재전송 과부하로 연결 속도가 느려짐.
게임 내 속도
패킷 충돌이 잦은 환경(Wi-Fi 혼잡)에서 데이터링크 계층이 에러를 줄여 안정성 제공.
예시) 도로와 교통 신호 비유
도로: 물리 계층(케이블, 신호)
차선과 신호등: 데이터링크 계층(MAC 주소와 에러 관리)
예: 신호등 없는 교차로는 충돌 위험 → 데이터링크 계층이 "신호등 역할"로 패킷 충돌 방지
◆ 데이터 링크 계층의 신뢰성 확보를 위한 주요 기술:
오류 검출과 수정
전진 오류 수정 (FEC, Forward Error Correction):
수신 측에서 오류를 스스로 검출하고 복원합니다.
예: 비디오 스트리밍처럼 재전송이 어려운 경우에 적합.
후진 오류 수정 (BEC, Backward Error Correction):
송신 측에 오류를 통보해 재전송을 요청하는 방식입니다.
예: 중요 데이터의 무결성을 보장해야 할 경우.
패킷 재전송
데이터 전송 중 발생한 오류나 손실을 복구하기 위해 송신 측에서 데이터를 재전송.
TCP 프로토콜과 협력해 데이터 신뢰성을 높임.
여기부터의 오류는 이런게 있다 정도만 알아둡시다. 필요하면 그때가서 찾아봅시다...
재전송 메커니즘: 손실된 데이터의 재전송 요청.
① 오류검출
오류검출은 목적지에서 오류를 검출하기 위해서 여분의 비트를 추가하는 중복(잉여) 개념을 이용한 방법
②오류정정
오류정정에는 수신자가 송신자에게 전체 데이터 재전송을 요구하거나, 수신자가 오류 교정 코드를 이용하여 자동으로 수행하는 방법
③재전송알고리즘(ARQ:AutomaticRepeatRequest)
오류가 발생할 경우 수신 측에서 송신 측으로 오류 발생 사실을 알리고, 송신 측은 오류가 발생한 프레임을 재전송하여 오류를 수정하는 알고리즘
◆ 송신속도 조절
1.흐름 제어:
수신측의 처리 속도를 고려하여 송신 속도를 조정해 수신 측이 처리할 수 없는 데이터가 넘치지 않도록 방지 합니다.
데이터 손실과 버퍼 오버플로를 방지해 안정적 통신을 유지.
2.혼잡 제어:
네트워크의 혼잡 상태를 모니터링하고, 패킷 손실을 방지하기 위해 송신 속도를 조절.
네트워크 병목 현상을 줄여 전체 성능 향상.
헤더Header
OSI 모델의 각 계층은 "특정 네트워크의 기능을 추상화한 모델"입니다.
데이터링크 계층에는 Ethernet이란 구현체 프로토콜이 존재합니다.
헤더(Header)는 네트워크 통신에서 각 계층의 프로토콜이 데이터를 처리하고 전달하는 데 필요한 정보를 담은 중요한 구성 요소입니다. 각 계층은 PDU(payload 포함)에 담긴 내용을 알지 못하므로, 헤더에 포함된 송수신 주소, 오류 검출, 흐름 제어 등의 메타데이터를 기반으로 동작합니다. 해더를 통해 데이터의 올바른 전송, 경로 지정, 오류 복구 등이 가능하며, 계층 간 독립성과 프로토콜 규칙 준수를 보장합니다.
◆ PDU (Protocol Data Unit)
각 계층에서 데이터는 일정한 규약과 포맷을 가지는PDU라는 메세지에 담겨서 전달됩니다.
PDU는 Header(헤더)와 Payload(페이로드)의 구조를 가집니다.
1. Header(헤더)
● 각 프로토콜(ex. Ethernet, IP)의 규칙들을 담고 있는 다양한 필드들의 모음
2. Payload(페이로드)
● PDU가 전달할 실제 데이터.
● 각 계층은 자신의 PDU의 payload에 뭐가 담겨있는지 모른채 위 계층에서 전달받은 데이터를 그대로 payload에 넣어줍니다.
● 계층을 내려갈 때 마다 길어지고(송신, 캡슐화) 올라갈 때 마다 짧아집니다.(수신, 디캡슐화)
마트료시카 처럼 여러겹의 상자안에 선물이 들어있는 선물상자를 상상해 봅시다.
송신은 선물을 상자안에 넣고 그걸 또 다른 상자 안에 넣어 선물을 포장하는 단계로 볼 수 있고
수신은 받은 선물 상자를 열고 속의 상자를 또 열면서 상자가 (페이로드 길이) 줄어드는 걸로 생각할 수 있습니다. 선물을 푸는 과정으로 생각해 주세요.
각 계층의 PDU는 고유한 이름이 부여됩니다. ( Payload가 길어지는 이유)
Data link 계층의 PDU:Frame(프레임)
Network 계층의 PDU:(IP) Packet(패킷)
Transport 계층의 PDU
TCP:Segment(세그먼트)
UDP:Datagram(데이터그램)
Application 계층의 PDU:Message(메세지)
◆ 캡슐화 (Encapsulation) & 비캡슐화 (Decapsulation)
각 계층은 PDU의 payload에 뭐가 담겨있는지 전혀 알지 못합니다.
송신 : 단지 바로 위의 계층에서 전달받은데이터 전체를 새로운 상자에 그대로 넣어줄 뿐입니다.
이를 캡슐화(encapsulation)라고 합니다.
수신 : 반대로 각 계층이 자신의 계층에 해당하는 header을 쏙 빼고 적절한 작업을 수행한 뒤에 바로 위 계층으로 payload를 전달합니다.
이를 디캡슐화(decapsulation)라고 합니다.
Ethernet
wired LAN(유선 LAN)에서 어떤 방식으로 통신하고 어떻게 에러를 검출하는지등에 대한 규칙들을 담고 있는 프로토콜입니다.
1970년대 Xerox PARC에서 개발, 1980년대 초반 정식 프로토콜로 채택.
데이터 단위: 프레임(Frame).
네트워크 계층에서 받은 비트 스트림을 프레임 단위로 재구성해 전송합니다.
프레임 형식: 주로 Ethernet II규약을 사용.
◆ Ethernet 프레임 구조
1. 프레임 헤더
프리앰블(Preamble): 비트 동기화를 위한 7바이트(56비트)의 10101010 패턴.
SFD(Start Frame Delimiter): 프레임 시작을 알리는 1바이트(8비트) 패턴(10101011).
목적지 주소: 데이터를 받을 호스트의 주소.
출발지 주소: 데이터를 보낸 호스트의 주소.
2. 페이로드: 상위 계층에서 받은 데이터.
3. 트레일러 :
FCS(Frame Check Sequence): 프레임 전송 중 에러를 검출하는 필드.
◆ Ethernet의 형태(Ethernet Frame )
Ethernet Frame은
‘프리앰블(머리) / 헤더(송수신지 주소와 타입) / 패이로드(위에서 받아옴) / 트레일러(꼬리)’
로 구성되어 있습니다.
전달하고자 하는 데이터는 위에서부터 여러겹 포장되어 패이로드안에 들어있습니다.
구분 | 구성 | 설명 |
프리앰블 | 프리앰블(Preamble) | 호스트 간 비트 동기화 |
프레임 헤더 |
SFD(Start of Frame Delimiter) | 프레임의 시작을 알리는 필드 |
Destination address. | ||
Source address | ||
페이로드 | 상위 계층에서 받은 데이터 | |
트레일러 | FCS(Frame Check Sequence) | 트레일러는 전송 시 에러를 체크 |
◆ Preamble (프리앰블) & SFD (Start Frame Delimeter)
Preamble과 SFD는 수신자가 Ethernet frame이 오는 것을 알아볼수 있도록 보내는 특별한 비트 패턴 입니다.
Preamble (프리앰블)
Ethernet 프레임이 시작하기 전에 보내는 비트 패턴으로, 수신 장치가 "데이터가 온다!"라고 알아차리게 함.
구조: 7바이트(56비트)로 구성된 10101010반복 패턴.
목적: 수신 장치가 클럭 신호를 동기화(정확히 맞추는 작업)할 수 있도록 돕는다.
SFD (Start Frame Delimiter)
Preamble 뒤에 오는 1바이트(8비트)로, 본격적인 데이터가 시작된다는 신호.
구조: 10101011이라는 고정된 비트 패턴.
목적: "이제 프레임 시작!"이라고 명확히 알려줍니다.
Preamble과 SFD의 관계
순서: Preamble → SFD → Ethernet 데이터.
수신 측 장치는 Preamble을 보고 데이터가 온다는 걸 알게 되고, SFD를 보고 프레임 시작 지점을 정확히 확인한다.
비유로 이해하기
Preamble: 공연 시작 전, 조명이 깜빡이는 신호(관객들에게 준비하라고 알림).
SFD: 실제 경기가 시작하는 순간에 울리는 종소리(공식적인 시작 신호).
◆ 데이터링크 계층 부계층
데이터링크 계층은 LLC(Logical Link Control)와 MAC(Media Access Control) 두 개의 부계층의 구조를 가지고 있습니다,
1. LLC(Logical Link Control)
● MAC 부계층과 네트워크 계층 간의 접속 담당.
● 다양한 MAC 프로토콜을 지원하여 네트워크 토폴로지에 관계없는 통신 제공.
● 서비스 옵션:
● Type 1: 비확인 데이터그램 서비스 (무연결).
● Type 2: 가상 회로 방식 서비스 (연결 지향).
● Type 3: 확인식 데이터그램 서비스 (포인트 투 포인트 방식).
2. MAC(Media Access Control)
● 물리적 네트워크의 토폴로지와 특성을 제어.
※ 토폴로지(Topology) : 네트워크에서 장치(노드)들이 물리적으로 또는 논리적으로 연결된 구조를 의미합니다.
쉽게 말하면, 네트워크의 배치 방식이나 형태를 나타내는 개념입니다.
MAC(Media Access Control) 주소
◆ MAC 주소란?
Ethernet 헤더의 제일 중요한 컴포넌트는송신지 MAC 주소와 수신지 MAC 주소 입니다.
MAC 주소는 Ethernet 네트워크에서 물리적인 단말을 식별하는"고유한 주소"입니다.
MAC 주소는 48 bit(6 byte) 크기를 가지며 1 byte씩 ‘ - ’ 이나 ‘ : ’ 으로 구분해, 12자리의 16진수로 표기합니다.
(※ 1 byte=8 bit=2^8개 정보 =16 * 16)
예시) 74-56-3C-CB-D0-A1, 00:0c:29:ce:90:e4
송신 시 자신의 MAC 주소와 frame을 전송하려고 하는 상대의 MAC 주소를 헤더에 담는다.
수신 시 헤더에 담긴 송신 MAC 주소를 보고 누구한테서 왔는지 식별합니다.
물리 NIC의 경우 NIC가 만들어질때 ROM에 기록되고, 가상 NIC의 경우 하이퍼바이저로부터 MAC 주소를 할당 받습니다.
※ 하이퍼바이저(Hypervisor)는 하나의 물리적 하드웨어에서 여러 가상 머신(VM)을 실행하고 관리할 수 있도록 자원을 분배해주는 소프트웨어 계층입니다
◆ MAC 주소는 앞의 3 byte와 뒤의 3 byte가 다른 의미를 가집니다.
상위 3 byte -OUI(Organizationally Unique Identifier)
IEEE가 벤더별로 할당한 벤더 코드.
※ OUI = 벤더 코드(Vendor Code). 제조사(벤더)를 식별하기 위해 사용하는 부분
여길 보면 어떤 벤더(회사)가 제조했는지 알 수 있습니다.
하위 3 byte -UAA(Universal Administered Address)
출하 시 벤더에서 할당하거나 무작위로 생성한 값입니다.
MAC 주소는 네트워크에서 개별 전자 장치를 식별하는 데 사용되는 고유한 12자리 영숫자 집합입니다.
각 네트워크 어댑터(NIC)에는 고유한 MAC 주소가 있으며, 네트워크 어댑터를 교체하면 변경됩니다
그러면 실제 우리 컴퓨터의 MAC 주소를 확인해봅시다.
윈도우는 cmd창에서 명령 프롬프트를 열고
# cmd창에서 명령 프롬프트를 열고
getmac /v
ipconfig /all
모든 네트워크의 정보가 표시되며, 물리적 주소에서 MAC 주소를 확인할 수 있습니다.
맥북의 경우네트워크 > 와이파이 > 디테일 > 하드웨어에서 확인할수 있습니다.
제 PC의 mac주소는 74-56-3C-CB-D0-A1입니다.
MAC 주소의 OUI(Organizational Unique Identifier)는 제조업체의 식별코드를 의미합니다. MAC 주소의 앞 24비트가 OUI에 해당하며, NIC 제조업체의 정보를 파악할 수 있습니다.
IEEE Standards Association의 OUI 데이터를 제공하는 URL(https://standards-oui.ieee.org/)에 들어가서 실제로 74-56-3C가 내 컴퓨터 에게 할당된 OUI인지 확인해봅시다.
다른 사람이 조립한 컴퓨터를 산거라 몰랐는데 제 PC는 기가바이트 테크놀로지꺼였네요
Payload 페이로드
Ethernet payload는"Network 계층의 PDU(데이터) 그 자체"를 나타냅니다.
◆ Ethernet payload 크기에도 제약이 있습니다.
Frame 하나를 택배 상자로 생각해 봅시다.
payload를 제외한건 배송정보가 적혀있는 송장 스티커이고, payload는 상자 안에 담겨있는 배송물 입니다.
Ethernet 이란 택배 회사는 이 배송물이 너무 가벼워도 너무 무거워도 배송을 거부합니다.
Ethernet에서 그 배송물(payload)은 최소46 byte, 최대1500 byte크기를 가질 수 있습니다.
이때, payload의 최대 크기를MTU (Maximum Transmission Unit)라고 합니다.
이 말은 Network 계층의 PDU, 즉, IP packet의 최대 사이즈도 MTU =1500 byte가 됩다.
※ Network 계층의 PDU(Protocol Data Unit)는 IP 패킷이며, IP 패킷의 최대 크기(Maximum Transmission Unit, MTU)는 데이터 링크 계층에서 설정된 MTU 값에 따라 제한됩니다. 일반적으로 이더넷 환경에서 MTU 값은 1500 바이트로 설정되며, 이는 IP 헤더와 데이터(payload)를 포함한 전체 IP 패킷의 크기를 의미합니다. 만약 IP 패킷이 MTU를 초과할 경우, 데이터는 조각화(fragmentation)되어 전송되며, 수신 측에서 다시 조립됩니다. MTU 설정은 네트워크 성능과 효율성에 중요한 영향을 미치며, 조각화를 줄이기 위해 데이터의 크기를 MTU에 맞추는 것이 이상적입니다.
이 MTU가 결국 우리가 실제로 보내는 애플리케이션 데이터를 얼마나 쪼개야 할지를 결정합니다.
또한, payload가 46 byte 미만이라면 padding 이라는 더미 데이터를 추가해 강제로 46 byte로 만듬니다.
내 기기의 MTU 조회하기 (윈도우)
# cmd 창에서 입력
netsh interface ipv4 show interfaces
조회, 수정 방법 : https://m.blog.naver.com/hanajava/222261898327
제 PC도 MTU는1500 byte입니다.
참고로, MTU가 1500 byte 보다 큰 frame도 있다. 그런 frame을 jumbo frame이라고 합니다.
FCS (Frame Check Sequence)(trailer) (꼬리)
FCS는 Ethernet frame이 손상되지 않고 잘 전달되었는가를 확인하기 위한4 byte짜리 필드입니다.
1. 송신 측 단말은 이 필드에
수신지 MAC 주소
송신지 MAC 주소
Type
Payload
를 합쳐서CRC(Cyclic Redundancy Check)이란 연산을 수행한 뒤, 그 결과를 FCS 필드에 넣습니다.
2. 그리고 수신 측 단말은 전달받은 frame에서 위의 4가지 정보를 빼내서 동일한 CRC 연산을 수행하고,
3. 그 결과가 FCS에 담겨있는 값과 맞는지 비교한다. 값이 다르면 도중에 frame이 손상되었다고 판단하고 폐기처리합니다.
이렇게 FCS는 Ethernet에서 에러 처리를 담당하고 있는 중요한 부분 입니다.
맨 끝에 위치했다고 해서 trailer(트레일러) 라고도 불린다.
Ethernet의 3가지 통신 형태
Ethernet 네트워크의 통신에는 다음 3가지가 있다.
Unicast (유니캐스트)
Broadcast (브로드캐스트)
Multicast (멀티캐스트)
Ethernet 네트워크에서 단말들끼리 통신을 할 수 있게 해주는switch(스위치)라는 장치가 존재합니다.
통신 방법과 각각의 통신 유형에 따라 어떻게 frame header의 MAC 주소가 바뀌는지에 집중하자.
Unicast (유니캐스트)
Unicast는1:1통신이다. 송신자는 상대방의 MAC 주소를 알고있는 상황에서 송신자 MAC 주소 header 필드에 자신의 MAC 주소를 넣고, 수신자 MAC 주소 header 필드에 상대방의 MAC 주소를 넣은 뒤에 frame을 상대에게 전달한다.
Broadcast (브로드캐스트)
Broadcast는1:N통신이다.
한 단말이 broadcast frame을 송신하면 자신을 제외한 모든 단말이 그 frame을 수신한다. 이 broadcast frame이 도달하는 범위를broadcast domain이라고 한다.
참고로 broadcast는 3계층에서 ARP(Address Resolution Protocol)프로토콜에서 사용된다.
데이터 링크 계층 (2계층): ARP는 물리적 네트워크 상에서 통신을 위해 MAC 주소를 확인하는 데 사용됩니다. 이 정보는 데이터 링크 계층의 주요 기능 중 하나입니다.
네트워크 계층 (3계층): ARP는 IP 주소(네트워크 계층 주소)를 기반으로 MAC 주소를 조회하므로 네트워크 계층의 주소 체계와 연결됩니다.
Broadcast frame을 송신할때, 송신지 MAC 주소는 unicast와 동일하게 송신 단말의 MAC 주소가 되지만, 수신지 MAC 주소는 모든 bit가 1인, 즉, 16 진수로는ff:ff:ff:ff:ff:ff라는 특별한 값이 들어간다.
※ ARP(Address Resolution Protocol)
IP 주소와 MAC주소 변환 프로토콜
ARP(AddressResolution Protocol) 프로토콜 - IP 주소를 통해 MAC 주소 확인하는 프로토콜
RARP(Reverse Address Resolution Protocol)프로토콜 - MAC 주소를 통해 IP 주소 확인하는 역주소 변환 프로토콜
MAC 주소 검색 시나리오
① 사용자 컴퓨터는 브로드캐스트를 통해 같은 네트워크 구간 내 모든 시스템에게 ARP 요청
②응답을 받은 컴퓨터는 자신의 MAC 주소를 ARP 패킷에 포함시켜 유니캐스트를 통해 사용자 A가 있는 컴퓨터로 전달
③ 사용자 컴퓨터와 상대방 컴퓨터는 MAC 주소를 이용하여 통신
Multicast (멀티캐스트)
Multicast 역시1:N통신이다. 하지만, 여기서N은 네트워크의 모든 단말이 아니고 특정 그룹에 속하는 단말들이다. Multicast는 동영상 스트리밍이나 다인원 화상 비디오 앱 등에서 사용된다.
이 경우 송신지 MAC 주소는 자신의 MAC 주소가 되고, 수신지 MAC 주소는 IPv4의 경우 다음과 같이 구성된다.
상위 25 bit:0000 0001 0000 0000 0101 1110 0으로 고정
하위 23 bit: IPv4 주소(224.0.0.0 ~ 239.255.255.255)이 하위 23 bit를 그대로 복사
스위치, 스위칭 (Switch와 Switching)
Switch 란?
실제로 단말들의 통신을 가능하게 해주는 장치가 바로L2 switch(스위치)입니다.
그냥 switch라고 하면 보통 이 L2 switch를 가리킵니다.
※ L2 스위치(레이어 2 스위치)는 OSI 7계층 모델에서 데이터 링크 계층(Layer 2)에서 작동하는 네트워크 장비로, 주로MAC 주소를 기반으로 데이터 프레임을 전달(switching)합니다.
각 포트의 MAC 주소를 학습하여MAC 주소 테이블을 생성하고, 프레임이 도착했을 때 목적지 MAC 주소를 기반으로 해당 포트로만 데이터를 전달하여 네트워크 효율을 높입니다.
L2 스위치는 브로드캐스트 도메인을 그대로 유지하며, 데이터 충돌을 줄이고 속도를 향상시키는 역할을 합니다.
스위칭 허브와 유사하지만 더 높은 처리 성능과 지능적인 패킷 전달 기능을 제공합니다.
Switch의 주 역할은Ethernet frame의 전송 대상지를 바꿔주는 것입니다. 이것을 switching (스위칭)이라고 합니다.
◆ Switch의 구성.
1. Port (포트)
Switch는 여러개의 포트를 가지고 있습니다.
각 포트는 실제 하나의 단말과 물리적으로 연결된 인터페이스 입니다.
2. MAC 주소 테이블
Switch 내부에는 MAC 주소 테이블을 가지고 있습니다.
이 테이블은 {Port 번호 : MAC 주소매핑정보}를 가지고 있는 테이블입니다.
Switch는 이 테이블을 보고 특정 MAC 주소를 목적지로 하는 frame을 어떤 포트로 흘려보낼지 결정합니다.
◆ switch의 3가지 동작 수행
1. Learning (학습)
Switch로 frame이 들어오면, frame안의 MAC주소와 frame이 전달된 포트 번호를 보고
{Port 번호 : MAC 주소}를 학습하여 MAC 주소 테이블에 기록합니다.
2. Forwarding (포워딩)
타겟 MAC 주소가 어느 포트와 연결돼 있는지를 이미 학습한 경우, frame을 해당 포트로 "포워딩"(혹은 스위칭)합니다.
3. Flooding (플러딩)
만약 타겟 MAC 주소가 어느 포트와 연결돼 있는지를 모르는 경우,
마치 홍수처럼 방금 frame을 전달받은 포트를 제외한 모든 포트에 frame을 복사해서 전달합니다.
그리고 해당하는 상대의 응답 frame을 받아서 MAC 주소에 정보를 기록합니다.
◆ Switch의 동작
1. MAC 주소 테이블에 수신측 MAC 주소가 존재할때 (Unicast 프레임 전송)
1. PC1의 프레임 생성 및 전송
- PC1은 Ethernet Frame을 생성하며 다음과 같은 필드를 설정:
- 송신자 MAC 주소: a1a1
- 수신자 MAC 주소: c1c1
- 기타 필드(Preamble, SFD, Type, FCS)를 포함하여 완성된 Ethernet Frame을 생성.
- 생성된 프레임은 PC1의 네트워크 인터페이스 카드(NIC)를 통해 스위치로 전달됨.
2. 스위치의 MAC 주소 테이블 학습(Learning)
- 스위치는 전달받은 프레임의 헤더 정보를 분석:
- 송신자 MAC 주소 a1a1이 스위치의 MAC 주소 테이블에 존재하지 않을 경우:
- 해당 MAC 주소를 송신 포트(Fa0/1)와 매핑하여 테이블에 기록.
- 송신자 MAC 주소 a1a1이 스위치의 MAC 주소 테이블에 존재하지 않을 경우:
3. 수신자 MAC 주소 확인 및 프레임 포워딩
- 프레임의 헤더에서 수신자 MAC 주소 c1c1을 추출.
- 스위치의 MAC 주소 테이블에서 c1c1이 매핑된 포트를 조회:
- 매핑된 포트(Fa0/3)가 존재할 경우:
- Flooding 없이 지정된 포트(Fa0/3)로만 프레임을 전달.
- 매핑된 포트(Fa0/3)가 존재할 경우:
4. PC3의 프레임 처리
- PC3는 스위치로부터 전달받은 프레임을 비캡슐화:
- Ethernet 헤더를 읽고 데이터(Payload)를 추출.
- 데이터는 OSI 7 계층 모델을 따라 Network 계층 및 상위 계층으로 전달됨.
- 최종적으로 Application 계층에서 HTTP 요청 메시지가 처리됨.
주요 기능 요약
- MAC 주소 학습(Learning): 송신자 MAC 주소를 포트와 매핑하여 MAC 주소 테이블에 저장.
- 프레임 전달(Forwarding): 수신자 MAC 주소에 매핑된 포트로 프레임을 전송.
- Unicast 처리: Flooding 없이 지정된 포트로만 프레임을 전달하여 네트워크 효율성 향상.
1. a1a1의 MAC 주소를 가진PC1은c1c1MAC 주소를 가진PC3에게 Unicast로 frame을 전송하고 싶은 상황이다.
2. PC1은 송신자 MAC 주소 헤더 필드에 ‘a1a1’를 넣고, 수신자 MAC 주소 헤더 필드에 ‘c1c1’을 넣는다.
3. 나머지 preamble, SFD, type, FCS 필드를 채워넣고 Ethernet frame을 만든다.
4. PC1의 NIC를 통해 switch에게 frame을 전달한다.
5. Switch는 전달받은 frame을 비캡슐화하여 header를 읽는다.
6. 송신자 MAC 주소가 MAC 주소 테이블에 존재하는지 확인한다.
7. 이 경우 없으므로 Fa0/1 : a1a1를 learning하여 MAC 주소 테이블에 기록한다.
8. 또한, header에서 수신자 MAC 주소를 추출한뒤,
9. MAC 주소 테이블에 매핑되는 엔트리가 있는지 확인한다.
10. 이 경우 존재하므로 flooding을 수행할 필요없이 frame을Fa0/3로 전달 하기만 하면 된다.
11. Switch는Fa0/3포트로 전달받은 frame을 forwarding(switching)하여PC3에게 최종적으로 전달한다.
12. PC3는 frame을 비캡슐화해서 frame 정보를 읽고 적절한 작업을 수행한 뒤,
13. payload(data)를 상위 Network 계층에 넘긴다.
14. Application 계층까지 쭉 타고 올라가고 비캡슐화 하면서 최종적으로 우리가 보낸 HTTP 요청 메시지를 전달 받을 수 있게 된다.
2. MAC 주소 테이블에 수신측 MAC 주소가 존재하지 않을때 - Flooding
PC1의 프레임 생성 및 전송
- 송신자 MAC 주소 필드: a1a1, 수신자 MAC 주소 필드: c1c1으로 설정.
- 나머지 필드(Preamble, SFD, Type, FCS)를 채워 Ethernet Frame 완성.
- NIC를 통해 스위치로 프레임 전달.
스위치의 MAC 주소 테이블 학습 (Learning)
- 스위치는 프레임을 비캡슐화하여 헤더를 읽음.
- 송신자 MAC 주소 a1a1이 MAC 주소 테이블에 없으므로, 이를 송신 포트(Fa0/1)와 매핑하여 테이블에 기록.
수신자 MAC 주소 조회 실패
- 스위치는 수신자 MAC 주소 c1c1을 MAC 주소 테이블에서 조회.
- c1c1 엔트리가 없으므로 Flooding 수행:
- 전달받은 포트(Fa0/1)를 제외한 모든 포트로 프레임을 복사하여 전송.
Flooding 프레임의 처리
- 프레임을 전달받은 각 장치는 헤더를 확인하여 자신의 MAC 주소와 **수신자 MAC 주소(c1c1)**가 일치하는지 검사.
- PC2는 일치하지 않아 프레임 폐기.
- PC3는 일치하여 프레임을 수신하고, 응답 프레임 생성 시작.
응답 프레임 생성 및 전송
- PC3는 응답 프레임 생성:
- 송신자 MAC 주소: c1c1.
- 수신자 MAC 주소: a1a1.
- 응답 프레임을 스위치로 전송.
스위치의 MAC 주소 테이블 갱신
- 스위치는 응답 프레임을 확인하고 송신자 MAC 주소 c1c1과 해당 포트(Fa0/3)를 MAC 주소 테이블에 기록.
- 이제 c1c1로의 프레임 전달 시 Flooding 없이 지정된 포트로 바로 전달 가능.
최종 상태
- 초기 프레임은 PC3에 정상적으로 전달 완료.
- 이후 a1a1과 c1c1 간 통신은 효율적인 Unicast로 진행.
똑같이PC1이PC3MAC 주소를 알고 있고 frame을 전달하려는 상황이다. 하지만 이번에는 switch의 MAC 주소 테이블에PC3의 MAC 주소 정보가 없다고 가정하자. 이때 switch는flooding을 통해PC3의 MAC 주소를 학습한다.
PC1은 송신자 MAC 주소 헤더 필드에a1a1를 넣고, 수신자 MAC 주소 헤더 필드에c1c1을 넣는다.
나머지 preamble, SFD, type, FCS 필드를 채워넣고 Ethernet frame을 만든다.
그리고 PC1의 NIC를 통해 switch에게 frame을 전달한다.
Switch는 전달받은 frame을 비캡슐화하여 header를 읽는다.
송신자 MAC 주소가 MAC 주소 테이블에 존재하는지 확인한다.
이 경우 없으므로Fa0/1 : a1a1를 learning하여 MAC 주소 테이블에 기록한다.
또한, header에서 수신자 MAC 주소(c1c1)를 조회한뒤 MAC 주소 테이블에 엔트리가 존재하는지 확인한다.
이 경우에 존재하지 않는다. 따라서 flooding을 통해 해당 MAC 주소를 가진 기기(PC3)가 어떤 포트에 연결되어 있는지 학습 해야한다.
[Flooding] Switch는 방금 frame을 전달받은 포트(Fa0/1)를 제외한 모든 포트들에 frame을 복사해서 flooding한다.
[Flooding 응답] Flooding frame을 전달받은 각 기기들은 header을 추출하여 자신의 MAC 주소와 "수신자 MAC 주소"가 일치하는지 확인한다.
PC2의 경우 일치하지 않으므로 폐기하고,PC3는 일치하기 때문에 응답 frame을 만들어 switch에게 보낸다
(이때PC1의 frame은 최종적으로PC3가 전달받은 상태다! 임무를 완수한것이다).
이때, 응답 frame의 송신지 MAC 주소는PC3의 MAC 주소가 되고, 수신지 MAC 주소는PC1이 된다.
14. Switch는PC3으로 전달받은 frame의 header을 확인한다.
15. 송신자 MAC 주소에PC3의 MAC 주소가 들어있으므로 매핑 정보를 MAC 주소 테이블에 기록한다. 이제 다음부터PC3로 frame을 전달할때 flooding을 할 필요가 없어졌다.
'내일배움캠프_게임서버(202410) > 분반 수업 스텐다드' 카테고리의 다른 글
스텐다드 2차 과제 - 네트워크 계층 (0) | 2024.12.11 |
---|---|
스텐다드 241211 (0) | 2024.12.11 |
스텐다드 241209 (2) | 2024.12.09 |
스텐다드 OSI 2계층 데이터 링크 계층 조사 (0) | 2024.12.09 |
OSI 3계층 네트워크 계층 (0) | 2024.12.09 |