Link Layer - LAN, 그리고 결론

갱두·2021년 12월 14일
0

📚 네트워크

목록 보기
15/15

LAN

Local Area Network로 간단하게 말해서 한정된 공간에서 네트워크를 구성한다

✔️ LAN(근거리 통신망)은
광대역 통신망과는 달리 학교, 회사, 연구소 등 한 건물이나 일정 지역 내에서 컴퓨터나 단말기들을 고속 전송 회선으로 연결하여 프로그램 파일 또는 주변장치를 공유할 수 있도록 한 네트워크 형태

  • 예시 : 사무실 하나에 컴퓨터 30대가 있고 그 컴퓨터 30대를 네트워크로 구성하면 = 사무실에 LAN을 구축한 것.

이더넷

네트워킹의 한 방식이며 네트워크를 만드는 방식임

✔️ LAN을 구축하는 방법은 여러가지가 있지만 지금은 90% 이상이 이더넷 사용 중
✔️ 이더넷은 네트워크를 구축하는 방식을 이야기하는 것이고, 인터넷은 구축된 네트워크들을 TCP/IP L3 프로토콜을 이용하여 연결해놓은 것을 의미합니다.

✅ 특징

  • Unreliable : ACK 사용하지 ❌
    그리고 에러가 발생하면 그냥 drop 해버림
  • Connectionless : handshake 안함~

✅ MAC Address

물리적인 주소이다.
라우터, 스위치 등 모든 통신 장치에 있음!

MAC Address vs IP Address

  1. 링크 Layer는 네트워크 프로토콜 모두 수용 가능
    네트워크 프로토콜에는 IP만 있는 게 ❌
  2. MAC 주소는 어딜 가던지 바뀌지 않음 = 주민번호
    IP주소는 어떤 노드에 붙냐에 따른 서브넷에 따라서 다르다. 즉, 바뀔 수 있다

간단하게 말해서
IP주소간의 통신은 각 라우터 Hop에서 일어나는 MAC 주소와 MAC 주소 통신의 연속적인 과정이다

  • IP는 내가 얘한테 보낼께! 하는 end-to-end의 주소지만
  • MAC은 바로 옆에 나와 물리적으로 통신할 아이의 주소

✔️ 네트워크 레이어 헤더에 담겨있는 destination IP 주소 = 라우터들을 넘어가도 도착할 때까지 변화 ❌
✔️ 링크 레이어 헤더에 담겨있는 destination MAC 주소 = 다음 Hop의 MAC주소가 담겨있음 -> 라우터들을 통해 갈때마다 바뀜

수경이가 준헌이에게만 떡볶이먹고싶다 를 보내고 싶으면

  • 준헌 이만 accept하고 다른 장치들은 discard하는 것
  • 즉 나의 MAC address가 destination일때만 accept

DHCP

📌 무엇이든 인터넷에 연결되어서 통신하려면 IP주소, 게이트웨이 주소, DNS 서버 주소가 기기에 올바르게 설정되어야 합니다.

  • 일반적으로 이 DNS 서버를 제외한 주소들은 회선 가입한 인터넷 제공사(SKT, LG U+, KT)로부터 제공받음. DNS 서버는 다른 걸 사용해도 되지만 주로 KT가 제공하는 국내 최상위 DNS 서버 주소를 이용한다고 함.
  • 즉, 이 3종 세트는 통신사 서버로가 사용자 PC한테 정기적으로 자동 할당함. 그리고 PC는 자동 구성, 설정 = DHCP

유, 무선 IP 환경에서 단말의 IP 주소, 서브넷 마스크(Subnet Mask), DNS 서버 IP 주소, 임대기간(Lease Time) 등의 다양한 네트워크 정보를 DHCP 서버가 PC와 같은 이용자 단말에 자동으로 할당해 주는 프로토콜

✔️ 이용자가 네트워크 정보를 직접 설정할 필요 없이 자동으로 설정이 가능하기 때문에 네트워크 관리의 용이성을 제공해줍니다.
✔️ 기본적으로 DHCP로 자동 할당된 인터넷 주소는 일정 시간마다 자동 갱신된다. 인터넷 주소 자체는 특별한 경우가 아닌 이상 자주 바뀌진 않는데, 그렇다고 특정 인터넷 주소가 한 사용자에게 고정 할당되는 건 아니다

1. DHCP discover
DHCP 서버를 찾아감. DHCP 서버를 찾기 위해 Discover메시지를 이더넷에 Broadcasting 합니다. 동일 서브넷안에 있는 모든 단말들은 이 메시지를 수신합니다.

2. DHCP Offer
Discover메시지를 수신한 DHCP 서버는 자신을 알리기 위해 Offer메시지를 Broadcasting 합니다.위와 동일하게 동일 서브넷안에 있는 단말들은 Offer메시지를 수신합니다.

3. DHCP Request
DHCP 서버 존재를 확인한 PC는 Request 메시지를 Broadcasting 합니다.

4. DHCP Ack
DHCP 서버는 Request메시지 내에 Server Identifier에 기록된 IP 주소가 자신의 주소인지 확인 후 Offer메시지와 함께 다양한 네트워크 정보들을 전달(IP , Subnet , Gateway , DNS , Lease Time)

ARP

📌 상대방의 MAC주소를 알아서 거기로 가야하는데 컴퓨터는 모름. 그때 사용

  • 물리주소 요청을 위한 ARP 요청 패킷을 Broadcasting
  • 해당되는 수신자만 자신의 논리주소와 물리주소를 패킷에 넣어서 전송해줌

✅ CSMA/CD

어떤 노드가 데이터를 전송해도 되는지 정해주는 프로토콜을 MAC 프로토콜이라고 함

노드가 한번에 여러개의 데이터를 받게 하는 것을 방지하기 위한 프로토콜!
간단히, 어떤 노드가 데이터를 전송해도 되는지 정해주는 프로토콜이다.

MAC 프로토콜에는 두가지 방법이 있는데
✔️ Channel partitioning
✔️ Random access -> CSMA/CD가 이에 해당

  • 채널을 나누지 않고 Collision을 허용함. 대신 collision을 recover하는 방식
  • 그렇다면 어떻게 collision을 감지할 것인가, 어떻게 recover할 것인가

이더넷이 사용하는 방식이 CSMA/CD임

Carrier Sense Multiple Access/Collision Detection

📎 Carrier : 정보를 전달하는 파동 신호

1. Carrier Sense (A)

일단 현재 네트워크에서 통신이 일어나고 있는지 확인하는 것
우리 네트워크의 자원을 쓰고 있는 컴퓨터나 서버가 있는 지 확인하고

  • 캐리어가 감지 된다 : 보낼 정보가 있어도 보내지 않고 잠시 기다림
  • 캐리어가 감지 되지 않는다 : 보냄!

근데 이것만으로 방지할 수 있을까?

2. Multiple Access (B)

컴퓨터 두 대가 보내려고 보니 어떤 캐리어도 감지되지 않아
그래서 두 대가 동시에 보내게 되는 상황이 발생할 수 있음

3. Collision Detection (C)

이렇게 두 대가 동시에 보내려고 하면 Collision이 발생하여 제대로 전송이 이루어지지 않게 된다.
그렇기 때문에 이더넷에서 호스트는 데이터를 전송한 후에 collision이 발생했는지 안했는지 확인을 해야 함

4. 충돌 발생 후 (D)

충돌이 발생했다면 일정 시간을 기다렸다가 다시 재전송을 하게 된다.
하지만 실제로 호스트들이 기다리는 시간은 굉장히 짧기 때문에 우리는 동시에 데이터 전달이 이루어진다고 느끼게 됨

결과적으로 충돌이 발생하면 기다렸다가 다시 보내는 것
근데 계속 충돌이 발생할 경우에는 포기하게 됩니다 결국 CSMA/CD 특성 상 너무 많은 충돌이 발생하면 통신이 불가능한 경우가 생기게 됨

이거를 해결하기 위한 방법 : Ethernet Switch

✅ Ethernet Switch

✔️ Link Layer 디바이스이지만, 맥 주소가 필요 ❌
= 대화의 주체가 아니기 때문에

✔️ Transparent : 호스트들은 스위치의 존재 모름
= A가 A'한테 정보를 보낼 때 스위치를 거치지만 A'는 A가 보냈다고 알지 스위치가 보낸지 모르는 것
✔️ Plug and play, self - learning
= 스스로 정보를 배운다

이렇게 이더넷이 구성되어있을 때
A-A', B-B'를 동시에 보낼 수 있게 됨 = 왜냐? 겹치지 않으니까

근데 A'한테 보내려면 4번으로 가야하고 B'한테 보내려면 5번으로 가야하는 걸 어떻게 알까?

Self - learning

각자 스위치들은 스위치 테이블을 가지고 있음

  • MAC 주소랑 어떤 인터페이스랑 연결이 되어있는지, 타임아웃 정보가 담겨있음

✔️ 먼저 A가 A'한테 가겠다고 프레임을 보냄

  • 그럼 스위치는 A의 위치를 알 수 있음 = 테이블에 저장

✔️ 근데 현재 스위치테이블에 A'의 위치가 없음

  • Flooding : 일단 2,3,4,5,6한테 다 전송해봄. 그럼 해당하는 인터페이스가 여기입니다! 할 것임
  • 그러면 A'의 위치를 알 수 있음 = 테이블에 저장
  • 정보가 없으면 일단 Flooding하고 보는 것. 브로드캐스팅과 비슷한 맥락임.

근데 스위치도 계층적이라고 했음
A에서 G로 보내고 싶을 때 S4의 스위치 테이블은 ?

  • S3의 몇번째에 G가 있다 ❌ S3한테 가면 있다 ⭕️

🚀 스위치 vs 라우터

✔️ 공통점1 : 둘다 store and forward

  • 라우터 : 네트워크 레이어 디바이스이다.
  • 스위치 : 링크 레이어 디바이스이다.

✔️ 공통점2 : forwarding 테이블을 가지고 있다

  • 라우터 : 라우팅 알고리즘과 아이피 주소를 통해 테이블을 알게 됨
  • 스위치 : flooding과 self-learning을 통해 알게 됨

실생활에 적용

✔️ 일단 노트북을 네트워크에 연결하려면?

  • DHCP 를 사용해서 IP주소 얻어오고, 맨 처음 Hop인 라우터의 주소 알아오고, DNS서버의 주소 알아온다

✔️ 오케~ 그럼 이제 구글에 접속하기 위해 HTTP 리퀘스트를 보내.. 기 전에!

  • DNS 서버에 접속해서 www.google.com의 아이피 주소를 얻어 온다. 그러려면..
    • DNS 쿼리를 만들고, 일단 ARP를 보내서 맨 처음 hop 라우터의 맥 주소를 알아오고, 라우터로 ㄱㄱ
    • 그렇게 DNS 서버가 존재하는 Comcast 네트워크에 도착
    • DNS 서버가 www.google.com의 아이피 주소를 알려줍니다

✔️ 그러면 HTTP 리퀘스트를 보내기 위해

  • 클라이언트가 TCP 소켓을 열고
  • 3-way handshake를 합니다
  • TCP 커넥션 완료!

✔️ 그러면 TCP 커넥션을 통해 HTTP 리퀘스트를 보냅니다

  • DNS서버를 통해 알아온 www.google.com의 아이피 주소를 향해 갈 수 있게 됐으므로 웹 서버에게 무사히 갈 수 있음 !
  • 그러면 웹 서버가 response를 줍니다

그러면 우리가 www.google.com 웹 페이지를 성공적으로 볼 수 있습니다 😎

참조 : https://ja-gamma.tistory.com/entry/DHCP%EA%B0%9C%EB%85%90%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC
https://it.donga.com/31810/

profile
👩🏻‍💻🔥

0개의 댓글