[TIL]하루 3분 네트워크 14-17화

Kyoorim LEE·2023년 12월 22일
0

스스로TIL

목록 보기
33/34

14. 2계층의 역할과 개요

1계층의 역할 ⇨ 케이블이 연결되어 있는 기기에 대한 신호 전달

2계층부터 상위계층의 역할 ⇨ 데이터를 보내기 전에 (충돌이 나지 않기 위해) 어떤 일을 할지, 데이터가 도달한 후에 어떤 일을 할지 : 신호가 닿는 범위에서의 데이터 전송에 관한 규정

신호가 닿는 범위란
세그먼트 범위에서의 데이터 전송 : 멀티액세스 네트워크라면 허브로 연결된 기기 전체. 포인트 투 포인트 네트워크라면 서로 연결되어있는 두 대

1계층에서는 신호를 전달
2계층에서는 신호가 닿는 범위(세그먼트)에서 '데이터를 어떻게 송수신할지' 생각

  • 1계층에서 다루는 신호랑 케이블 등에 따라 2계층의 규격이 달라지게 됨
    - LAN용, WAN용
    • 사용하는 케이블에 따라 사용하는 규칙이 다른 것은 2계층까지임

2계층 LAN용 규칙

이더넷

프레이밍
1계층에서 주고받는 신호를 비트화해 거기에 의미를 갖게 하는 것
➡️ 프리엠블(지금부터 프레임이 시작된다는 신호)을 수신하면 '이제 프레임 신호가 온다는 것'을 알게 됨

그냥 데이터를 바로 보내지 않고 프레이밍해서 보내는 이유

  • 비트를 읽는 타이밍이 송신측과 수신측 양쪽에서 일치하는 것이 가장 중요
  • 이게 어긋나면 수신측이 비트 중간에 일기 시작할 수도 있음

타이밍을 맞추는 방식으로 프레이밍 말고 Clock신호(동기통신)라는 것도 있음



15. 2계층 주소와 이더넷

LAN용 - 이더넷

주소(address)

신호가 도달하는 범위에서 데이터를 송수신하도록 하는데 중요한 개념!

어드레싱(addressing)

  • 주소를 어떻게 사용할지, 어떻게 배정할 지를 가르킴

데이터 전송 방법에 따른 3가지 주소 종류

  1. 유니캐스트: 1대1 데이터 통신. 가장 일반적
  2. 브로드캐스트: 1대 전체. 모두(전원 - 세그먼트내의 모든 기기)에게 메시지를 보내는 데이터 통신
  3. 멀티캐스트: 1대 다수. 지정된 복수의 기기로 메시지를 보내는 데이터 통신

MAC(Media Access Control) 주소

각각의 기기는 유니캐스트 주소를 적어도 한 개는 갖고있음
복수의 인터페이스를 가진 기기(ex. 라우터)는 인터페이스마다 유니캐스트 주소를 갖게 됨
단, 유니캐스트 주소는 유일해야함

멀티캐스트 주소는 같은 주소를 가진 기기가 여러 개 있어도 됨. 즉 '기기그룹'이 같은 주소를 같는 것.
멀티캐스트 주소는 '그룹번호'같은 취급을 하기 때문에 멀티캐스트에 보내고 싶은 경우에는 수신처를 '그룹'으로 하면 그 그룹에 속한 기기가 수신을 함

요약하면,
멀티캐스트 그룹에 속해있는 기기는 '유니캐스트 주소' + '멀티캐스트 주소' ➡️ 2개를 갖게 됨
➕ 브로드캐스트 주소는 '전체수신'이 되므로 이 주소로 보낸 데이터는 모든 기기가 무조건 송신하게 됨


**MAC주소**는 이더넷에서 사용되는 주소. 컴퓨터가 아닌 인터페이스에 지정된 고정 주소 인터페이스가 고장나서 다르 인터페이스로 교환하면 MAC 주소도 변경됨

  • 48비트 값으로 4비트마다 16진수로 고쳐서 쓴다
  • OUI: 벤더코드
  • UAA: 벤더 할당 코드


16. 이더넷

LAN에서 2계층은 이더넷이라는 규칙이 적용됨

이더넷에서 사용되는 주소는 MAC 주소 ➡️ 이 주소 정보를 헤더에 기술하고 이 정보를 통해 '누구로부터', '어디로'를 결정함.

캡슐화
이더넷 헤더, 이더넷 트레일러를 데이터그램 앞뒤로 붙임 ➡️ 이더넷 프레임으로 캡슐화 ➡️ 이터넷 프레임이 신호가 되서 (프레이밍) 케이블로 전달

정리하면,
헤더: 수신처의 주소, 송신처의 주소, 페이로드 내용 식별하는 타입
트레일러: 에러 체크하는 FCS(Frame Check Sequence)

그림출처: butter-shower

FCS의 역할
신호가 전송되는 동안 문제가 생겨서 정확히 읽을 수 없게 되거나 '0'을 '1'로 반대로 읽어버리는 경우가 있는데 이런 경우를 체크하는 역할.

FCS는 에러를 고쳐주는 역할이 아니라, 에러가 발생했는지 아닌지만 알 수 있고 어떤 상태가 올바른 상태인지까지는 모름 ex.택배아저씨

  • 기본적으로 통신 도중에는 에러를 고칠 수 없음
  • 에러가 있었던 프레임은 파기됨
  • 그 시점에서 버려지고 그 이후 처리는 하지 않게 됨
  • 파기사실을 송신측에는 알리지 않음

이더넷 동작

이더넷은 어떻게 데이터를 송신할까?

LAN에서는 멀티액세스 네트워크(feat. 허브)를 사용하는 경우가 많음

  • 데이터는 모든 기기에 도달하게 됨
  • 이더넷에서는 수신한 프레임의 수신처 MAC 주소를 보고 자기에게 온 것 외의 다른 프레임을 파기함
  • 자기가 수신처가 아닌 데이터는 안 본다는 것 (이메일 생각하자)


플러딩🌊으로 인한 충돌

이더넷에서는 신호를 보내는 타이밍이 겹치지 않도록 비켜나게 해서 되도록 충돌이 일어나지 않도록 함.
이를 위해 CSMA/CD(Carrier Sense Multiple Access/Collision Detection)이라는 엑세스 제어를 시행함

CSMA/CD - 교차로 교통정리 경찰👮👮🏻‍느낌
CS(신호감지): 누군가 송신 중이라면 송신하지 않음
MA(다중 액세스): 아무도 송신하고 있지 않다면 송신할 수 있음
CD(충돌 검사): 송신 후에 충돌이 일어나면 다시 재수행함

CS를 하는데 CD가 일어날 일이 있나?
정답은 🅾️
2대가 거의 동시에 신호를 감지해버린 경우가 있을 수 있음. 이 경우 2대 모두 아무도 송신하고 있지 않다고 생각해서 2대가 송신한 케이스
ex) 신호등이 없다고 가정할 때, 아무도 안 지나다닌다고 생각해서 양 방향에서 차가 동시에 엑셀밟음💥

결과적으로 CSMA/CD는 충돌을 '막는 것'이 아니고 '최대한 일어나지 않게 하는 역할'이라고 볼 수 있음



17. 스위치

CSMA/CD로도 막을 수 없는 충돌 가능성을 줄이기 위해서는 충돌 도메인 내 컴퓨터 수🖥️🖥️를 줄일 필요가 있음

또한 신호가 지나는 길을 나누는 방법이 있음 ➡️ 스위치

스위치가 어떻게 충돌을 막나?
어디에서 충돌이 일어나고 있는지가 포인트!

충돌은 허브에서 발생한다. 허브가 동시에 신호가 도달할 때 1개 포트(신호 받는 곳)에 2개 이상의 기기로부터 신호를 수신하면 허브는 그것을 나눠서 보낼 수 없기 때문에 충돌이 발생하는 것

MAC 주소 필터링

스위치 안에서 수신한 프레임을 따로따로 보낼 수 있도록 처리해서 충돌을 막는다. HOW? 방법은 2가지!

1. MAC주소 필터링
- 학습 + 스위칭이라는 동작으로 이뤄짐

학습
수신한 프레임의 송신처 MAC 주소를 기록한다. 수신한 포트(받는 애)랑 MAC 주소를 연관 짓는다.
이 학습에 의해 스위치는 포트에 연결되어있는 컴퓨터의 MAC 주소를 기억하게 됨
이 대응표를 어드레스 테이블 이라고 함

스위칭
스위치는 프레임을 수신한다
프레임의 수신처 MAC 주소를 보고 그 MAC 주소가 있는 포트만 프레임을 송신한다
그 외 다른 포트는 송신하지 않는다
어떻게 수신처 MAC주소가 있는 포트를 알수 있냐고? ➡️ '학습'을 통해 만든 어드레스 테이블에서 찾는것!!

MAC주소를 통해 송신하는 포트를 필터링하기 때문에 MAC주소 필터링이라고도 불림

만약 해당 MAC 주소가 송신처의 프레임을 수신하기 전이어서 '학습하지 않은' 상태라면 MAC 주소 필터링을 할 수 없게됨 ➡️ 이 경우 허브와 마찬가지로 플러딩🌊이 발생하게 됨 (왜? 송신할 포트를 모르니까!)

2. 버퍼링
수신처가 다른 프레임이 동시에 스위치에 도달해도 충돌은 발생하지 않는다.

단, 수신처가 같은 프레임이 동시에 도달한 경우라면?

profile
oneThing

0개의 댓글