본문 바로가기
CS/Network

[Network] 물리 계층(L1)과 데이터 링크 계층(L2)

by 그냥하는거지뭐~ 2024. 5. 6.
목차
1. 이더넷
2. NIC와 케이블
3. 허브
4. 스위치

 

이번 글에서는 물리 계층(L1)과 데이터 링크 계층(L2)에 쓰이는 장비들에 대해 알아본다. 우선, 두 계층을 구분하는 기준은 주소 개념의 유무이다. 물리 계층은 주소 개념이 없다. 물리 계층에서는 호스트와 통신 매체 간의 연결과 통신 매체상의 송수신만 이루어지기 때문에 물리 계층의 네트워크 장비는 송수신되는 정보를 조작하거나 판단하지 않는다. 반면 데이터 링크 계층에는 주소 개념(ex. MAC 주소)이 있다. 

데이터 링크 계층 NIC, 스위치
물리 계층 케이블, 허브

 


1. 이더넷

두 대의 컴퓨터가 서로 정보를 주고받으려면 케이블과 같은 매체로 연결되어 있어야 한다. 이때 이 통신 매체의 규격들과 송수신되는 프레임의 형태, 프레임을 주고받는 방법 등이 정의된 네트워크 기술이 이더넷이다. LAN 환경에서는 대부분 이더넷 표준을 따르는데, 국제적으로 표준화 규격들의 집합이 바로 IEEE 802.3이다. => https://www.ieee802.org/3 

이 링크를 들어가 보면, 이더넷 표준들이 계속해서 개발되고 있다. 

 

이더넷 프레임 

프리앰블
: 이더넷 프레임의 시작을 알리는 정보. 송수신지 간의 동기화를 위해 사용됨. 

수신지/송신지 MAC 주소
: MAC 주소는 일반적으로 고유하고, 일반적으로 변경되지 않음 (고유하지 않을 수도, 변경될 수도 있긴 함). NIC마다 부여되며, 한 컴퓨터에 NIC가 여러 개 있다면 MAC 주소도 여러 개. 

타입/길이
: 필드에 명시된 크기가 1500 이하이면 길이를 나타내고, 1536 이상이면 타입, 즉 이더타입(어떤 정보를 캡슐화했는지)을 나타냄.

데이터
: 전달할 내용. 반드시 46바이트 이상이어야 하며, 그 이하일 경우 padding으로 채워짐. (46바이트 이상이 될 때까지 0으로 채워짐)

FCS
: 수신한 프레임에 오류가 있는지 확인하는 필드. FCS의 CRC 값과 계산한 CRC 값이 일치하는지 확인. 

 


2. NIC와 케이블

① NIC(Network Interface Controller)

통신 매체를 통해 전달되는 신호와 컴퓨터가 이해할 수 있는 정보 간에 변환이 이루어져야 하는데, 이를 담당하는 것이 NIC이다. 즉, NIC는 호스트를 네트워크(LAN)에 연결하기 위한 하드웨어로, 네트워크 어댑터, LAN 카드, 네트워크 카드 등의 명칭이 있다. 

NIC마다 MAC 주소가 할당되고, 이를 통해 자기 주소와 수신지 주소를 인식한다. 

 

② 케이블

연결된 두 호스트가 아무리 빨리 데이터를 처리한다고 해도, 통신 매체가 그 속도를 따라잡지 못하면 아무 소용이 없다. 케이블은 NIC에 연결되는 유선 통신매체로, 요즘에는 대표적으로 트위스트 페어 케이블과 광섬유 케이블을 사용한다. 

트위스트 페어 케이블은 케이블 본체와 커넥터로 구성되며, 본체 내부에는 구리 선이 두 가닥씩 꼬아져있다. 광섬유 케이블은 빛을 이용해 정보를 주고받으며, 속도가 빠르고 먼 거리 전송이 가능하다. 

트위스트 페어 케이블 vs 광섬유 케이블

 


3. 허브

허브는 여러 대의 호스트를 연결하는 장치이다. 허브는 전달받은 신호를 다른 모든 포트로 내보낸다. 물리 계층에서는 주소 개념이 없기 때문에 신호가 오면 조작이나 판단 없이 그대로 내보내는 것이다. 또한 허브는 반이중 모드(half duplex mode)로 통신한다. 여기서 반이중 모드란, A에서 B에게 메시지를 보낼 때, B는 A에게 보낼 수 없는 것을 의미한다. 무전기를 생각하면 쉽다. 이와 대비되는 개념이 전이중 모드(full duplex mode)이다. 

이더넷 허브

반이중 모드로 통신한다고 했을 때, 사고로 충돌(콜리전)이 일어나면 어떻게 될까? 이때 충돌이 발생할 수 있는 영역을 콜리전 도메인이라고 하며, 허브에 연결된 호스트들이 여기에 속한다. 충돌을 막기 위해 CSMA/CD 라는 프로토콜을 사용한다. 

CSMA/CD는 Carrier Sense Multiple Access with Collision Detection으로, Carrier Sense (다른 호스트가 메시지를 보내려고 하는지 확인), Multiple Access(동시에 네트워크에 접근하려는 상황), Collision Detection(충돌 검출)의 과정을 거친다. 충돌이 검출되면, 다른 호스트에게 충돌이 발생했음을 알리는 잼 신호를 보내고, 임의의 시간이 지나면 다시 네트워크에 접근을 시도하게 된다. 


4. 스위치

허브에서는 허브에 연결된 모든 호스트가 콜리전 도메인에 속한다. 하지만 수신지 호스트가 연결된 포트만 보내고, 전이중 모드로 통신한다면 충돌 위험이 훨씬 줄어들 것이다. 이를 가능하게 하는 것이 바로 스위치이다. 스위치는 데이터 링크 계층의 네트워크 장치(그래서 L2 스위치라고도 함)로, MAC 주소를 학습해 원하는 포트로만 신호를 보낼 수 있다. 따라서 스위치를 사용하면 포트별로 콜리전 도메인이 나뉘게 된다. 

L2 switch

MAC 주소 학습

스위치가 MAC 주소를 학습할 때 호스트 간의 연관 관계를 표 형태로 기억하게 되는데, 이를 MAC 주소 테이블이라고 한다. 

출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.geeksforgeeks.org%2Fwhat-is-mac-address-table%2F&psig=AOvVaw1esf3I5gIrmuB3Rr2Gr0OT&ust=1715078334289000&source=images&cd=vfe&opi=89978449&ved=0CBIQjRxqFwoTCNC_3ujq-IUDFQAAAAAdAAAAABAE

 

그러면 어떻게 스위치는 MAC 주소 테이블을 채워나갈까? 

스위치에 A, B, C, D 호스트가 연결되어 있다고 가정하자. 호스트 A가 C에게 메시지를 보내려고 한다. 

① 호스트 A의 메시지를 스위치가 수신하고 MAC 주소 테이블에 A의 MAC 주소를 저장한다. 

② 스위치는 허브처럼 모든 포트로 프레임을 전송한다. (플러딩)

③ B, D는 자신과 상관없는 프레임이므로 폐기하고, C는 스위치로 응답 프레임을 전송한다. 

④ 스위치는 C의 MAC 주소를 테이블에 입력한다. 이제 A, C의 MAC 주소를 알고 있으므로, 이 두 포트 간 프레임을 주고받을 때는 다른 포트로의 전송이 불필요하게 된다. 

⑤ 스위치는 프레임을 보낼 호스트와 보내지 않을 호스트를 구분하게 되는데 (필터링), 보내는 것을 포워딩이라 한다. 

⑥ 만약 일정 시간 동안 프레임을 전송받지 못했다면, 삭제된다. (에이징)

 

VLAN

#포트기반 #MAC기반

VLAN은 virtual LAN으로, 하나의 스위치로 가상의 LAN을 만드는 방법을 말한다. 하나의 스위치에서 마치 여러 대의 스위치가 있는 것처럼 LAN을 분리하는 것을 통해 포트 간의 불필요한 통신을 없앨 수 있다. 

VLAN1과 VLAN2는 다른 LAN처럼 동작하므로, 이들끼리 통신을 하려면 네트워크 계층 이상의 장비가 필요하다. 

 

이렇게 포트 기반으로 VLAN을 결정하는 방식의 문제점은 포트의 수가 부족해질 수 있다는 것이다. 이때, 트렁크 포트에 VLAN 스위치를 서로 연결하여 두 대 이상의 스위치를 연결하는 방법(VLAN 트렁킹)을 사용할 수 있다.             

또는, MAC 주소에 따라 VLAN이 결정되는 MAC 기반 VLAN도 있다. 이는 MAC 주소가 자신이 속할 VLAN을 결정하므로, 어떤 포트에 연결되는지는 상관이 없다. 


Reference

- 혼자 공부하는 네트워크 

'CS > Network' 카테고리의 다른 글

[Network] 소켓  (1) 2024.09.06
[Network] 네트워크 계층 (L3): 멀리 있는 컴퓨터와의 연결  (0) 2024.08.19
[Network] 네트워크 시작하기!  (2) 2024.05.04