[컴퓨터네트워크] Link Layer(2)

2025. 6. 20. 13:41·CS/컴퓨터네트워크
728x90

 

국민대학교에서 The Computer Networking: A Top-Down Approach, Global Edition 교재를 사용한
이창우 교수님의 강의를 듣고 정리한 글입니다

LANs

MAC address

IP 주소는 32비트로 네트워크 계층에서 사용하는 주소였다

호스트 간의 논리적인 통신 경로 지정에 사용되었다

예: 192.168.1.1

 

MAC(or LAN or phsical or Ethernet) 주소는 48비트로 링크 계층에서 사용하는 주소이다

물리적으로 같은 네트워크 상의 두 장치 간에 프레임을 전달하기 위해 사용한다

예: 1A-2F-BB-76-09-AD

 

IP 주소는 경로 선택용, MAC 주소는 물리적 전달용이라고 생각하면 된다

쉽게 말해 IP 주소는 우편 번호, MAC 주소는 주민등록번호처럼 사용되는 것이다

 

MAC 주소는 같은 네트워크 내에서 장치를 식별하기 위한 유일한 물리적 주소로 각 어댑터마다 할당된다

 

APR

Address Resolution Protocol의 약자로 IP주소를 MAC 주소로 변환하는 프로토콜이다

네트워크 계층(IP)에서 데이터 링크 계층(MAC)으로 넘어갈 때 필요하다

각 IP노드(호스트, 라우터)는 ARP 테이블을 가지고 있다

테이블은 < IP 주소 ; MAC 주소 ; TTL(유효 기간) > 형식으로 이루어져 매핑할 수 있다

IP 주소만으로는 실제 프레임을 전송할 수 없기에 MAC 주소를 알기위해 ARP를 사용한다

 

동작 방식은 아래와 같다

  • A → B에게 데이터그램을 보내고 싶다

A의 ARP 테이블의 B의 MAC 주소가 없어 주소를 모른다

 

  • A가 B의 IP 주소를 담은 ARP 요청을 모든 노드에 브로드캐스트한다

브로드캐스트 주소: FF-FF-FF-FF-FF-FF(모든 노드들에 전송하고 싶을때 사용하는 브로드캐스트 MAC주소)

 

  • B는 자신의 IP와 일치하는 APR 패킷을 보고, 자신의 MAC 주소를 담아 A의 MAC 주소로 유니캐스트로 응답한다
  • A는 B의 MAC 주소를 APR 테이블에 저장한다

이때 TTL 때문에 일정 시간 동안만 보관이 되고 삭제된다

 

즉, APR은 “plug-and-play”이다

관리자가 수동으로 설정하지 않아도 노드들이 자동으로 APR 테이블을 채워간다

이렇게 APR은 링크 계층 주소도 포함하고, 네트워크 계층 주소로 포함하기에 그 경계 사이에 있는 프로토콜이다

 

Routing to another LAN

다른 LAN으로 라우팅할 때 일어나는 동작 과정들을 보자

일단 A → R을 통해 → B로 데이터그램을 보내는 상황이다₩

A는 B의 IP 주소를 알고 있고, 라우터 R의 IP와 MAC 주소도 알고 있다

 

A가 프레임을 생성하는 과정이다

  • A는 B에게 보내는 IP 데이터그램 생성

IP 출발지: 111.111.111.111

IP 목적지: 222.222.222.222

 

  • MAC 레벨에서는 R에게 보내야 하므로

MAC 출발지: A의 MAC 주소 74-29-9C-E8-FF-55

MAC 목적지: R의 MAC 주소 E6-E9-00-17-BB-4B

 

A가 만든 프레임을 R이 수신했다

R은 프레임 헤더(MAC 부분)을 제거하고, 안에 들어있는 IP 데이터그램을 상위 IP 레이어로 전달한다

 

R이 B에게 전달한 프레임을 생성한다

R은 IP 데이터그램은 그대로 유지하면서 MAC 헤더만 새로 만들어 B에게 전달한다

MAC 출발지: R의 MAC 주소 1A-23-F9-CD-06-9B

MAC 목적지: B의 MAC 주소 49-BD-D2-C7-56-2A

 

마지막으로 B가 수신하게 된다

B는 MAC 목적지 주소가 자신의 주소임을 확인하고 프레임을 수락한다

MAC 헤더 제거 후 IP 데이터그램을 상위 IP 레이어로 전달해 최종적으로 A → B 통신이 완료 된다!

 

Ethernet

오늘날 이더넷은 유선 LAN 중에서도 지배적인 기술로 자리잡았다

하나의 칩으로 여러 속도를 지원할 수 있으며, 구조가 단순하고 저렴하다

 

이더넷 프레임 구조

IP 데이터그램(또는 다른 네트워크 계층 프로토콜 패킷)을 전송할 때, 송신 어댑터가 이더넷 프레임으로 캡슐화

즉, IP 패킷이 이더넷 프레임의 "데이터(페이로드)" 부분이 된다

 

  • Data(Payload)

46 ~ 1500 바이트이며, IP 데이터 그램을 운반하는 역할을 한다

 

  • Preamble(프리앰블)

프레임의 맨 앞에 위치하며 수신 측과 송신 측의 싱크(동기화)를 맞추는데 사용된다

7바이트는 10101010의 반복 패턴으로 채워지고, 그 뒤에 1바이트(8비트)는 10101011 패턴으로 추가된다

즉, 7바이트로 데이터가 본격적으로 전송되기 전에 신호로 미리 알리고 동기화 준비를 하며

마지막 바이트로 실제 이더넷 프레임 시작을 알리는 역할을 한다

 

  • Address(주소)

6바이트로 이루어져있으며, 목적지와 출발지 MAC 주소로 구성된다

 

  • Type(타입)

2바이트이고 프레임의 페이로드에 캡슐화된 상위 계층 프로토콜을 나타낸다

수신 측에서 데이터를 어떻게 처리할지 결정하는데 사용된다

 

  • CRC(Cyclic Redundancy Check, 순환 중복 검사)

프레임의 마지막에 위치하는 4바이트 크기의 필드로 전송 중 발생할 수 있는 데이터 손상을 검출한다

 

물리적 위상

  • bus 방식

초기 이더넷의 대표적인 물리적 구조로 90년대에는 인기 있었던 방식이다

모든 노드들이 하나의 케이블을 공유하고 있기 때문에 문제가 생기면 다 문제가 생긴다

 

  • star 방식

중앙에 활성 스위치를 두고 각 장치가 이 중앙 노드에 개별적으로 연결되는 구조로 현재 사용되는 구조이다

spoke라는 별도의 이더넷 프로토콜을 실행해 노드들이 서로 충돌하지 않는다

중앙 스위치에서 스위치 테이블을 가지고 스위칭을 통해 간섭없이 전송할 수 있다

 

self-learning

스위치는 인터페이스를 통해 도달할 수 있는 호스트들을 학습한다

프레임을 받을 때, 스위치는 송신자의 주소를 학습한다

그리고 송신자와 위치를 스위치 테이블에 기록해 놓는다

 

과정을 알아보자

처음에는 스위치 테이블이 비어있다고 가정한다

A에서 A’에게 프레임을 전송하게 되면 인터페이스가 1번이고 송신 주소 A라는 것을 테이블에 기록한다

이제 목적지로 가야하지만 테이블에는 아무것도 없어 스위치는 프레임을 1번을 제외한 모든 테이블에 전달한다

프레임을 까서 목적지가 A’인 것을 확인하고 A’가 받고, 다시 A로 응답 프레임을 보내게 된다

이때 A’의 주소와 4번 인터페이스에 연결되어 있다는 것을 학습하고 기록한다

그리고 스위치 테이블에 A의 주소가 1번 인터페이스에 연결되어 있는 것을 확인하고 1번 인터페이스로 보낸다

결론적으로 스위치는 스스로 학습해 정보를 기록하고, 모를때는 플러딩 알때는 특정 포트로 보내며 포워딩한다

그리고 TTL로 수명을 정해 정보가 잘 유지되고 있는지 확인한다

 

Connectionless & Unreliable

  • Connectionless(비연결성)

비연결성은 데이터를 보내기 전에 송신자와 수신자 사이에 연결 설정(handshaking)이 없다는 의미이다

송신 측 NIC는 단순히 데이터 프레임을 네트워크로 전송하며, 수신 측 NIC가 준비되었는 지 확인하지 않는다

 

  • Unrelialbe(비신뢰성)

비신뢰성은 링크 계층 자체에서 데이터 전송의 성공 여부를 보장하지 않는다는 의미이다

수신 측 NIC는 데이터 프레임을 성공적으로 수신했는지(acks), 실패했는지(nacks)를 송신 측 NIC에 알리지 않는다

만약 데이터 손실이 나면 TCP 같은 상위 계층에서 사용될 경우에만 복구가 되고, 다른 경우에는 손실이 난다

 

이더넷의 MAC 프로토콜은 binary backoff를 사용하는 unslotted CSMA/CD를 사용한다

 

Switches vs Routers

둘 다 받은 데이터를 저장한 뒤 다음 장치로 전달한다

  • 스위치(작은 규모)

링크 계층(2계층) 장치

MAC 주소와 링크 계층 헤더를 기반으로 프레임을 전달하며, 같은 네트워크(서브넷) 내 통신에 사용된다

 

  • 라우터(큰 규모)

네트워크 계층(3계층) 장치

IP 주소와 네트워크 계층 헤데를 확인하여 데이터를 전달하고, 주로 서브넷 간 또는 인터넷 간 통신을 담당한다

 

둘 다 포워딩 테이블을 가지고 있다

  • 스위치

자동 학습과 flooding(모든 포트 전송), MAC 주소를 사용해서 포워딩 테이블을 학습한다

 

  • 라우터

라우팅 알고리즘과 IP 주소를 사용해서 테이블을 계산한다

 

결론: 스위치를 통해 내부에서 통신을 하고, 외부와 통신이 필요할 때 라우터가 사용된다!
(둘 다 사용해야 하니 vs 보다는 비슷한 기능을 하기에 차이점을 알아두면 헷갈리지 않을 것 같다)

 

VLANs

만약 CS 사람들이 EE 사무실로 옮겼는데도 여전히 CS 네트워크를 사용해야 한다면 어떻게 해야할까

위치가 바뀌면 스위치도 바뀌기 때문에 네트워크도 바뀌게 된다

또 같은 네트워크에서 다른 부서와 같이 사용하게 되는 경우 트래픽이 증가하게 되고 보안 문제도 있다

이런 문제들을 해결하기 위해 VALN을 도입하려고 한다

 

  • VLAN(virtual lan)

VLAN은 말 그대로 가상의 LAN으로 하나의 실제 스위치(물리 장비)에 여러 개의 논리적 LAN을 만들 수 있다

port-based VLAN은 하나의 물리적 스위치 안에 있는 여러 포트를 스위치의 관리 소프트웨어를 통해

논리적으로 서로 다른 VLAN으로 그룹화 할 수 있다

 

예를 들어 포트 1~8은 EE VLAN, 9~15는 CS VALN 이런식으로 말이다

이때, 1~8에 연결된 장비들을 EE VLAN, 9~15에 연결된 장비들과 논리적으로 다른 네트워크여서 직접 통신할 수 없다

아래 그림을 보면 마치 여러 스위치가 있는 것처럼 작동한다는 것을 볼 수 있다

 

Port-based VLAN

포트를 기준으로 VLAN을 구성한 후 동작하는 port-based VLAN은 어떤 특징이 있을까

 

  • traffic isolation(트래픽 격리)

아까 위에서 봤던 것 처럼 같은 VLAN에 속한 장비들 끼리만 직접 통신이 가능하다

덕분에 불필요한 브로드캐스트 트래픽이 격리되고, 다른 VLAN 사용자로부터의 접근도 차단되어 보안도 상승

 

  • dynamic membership(동적 멤버십)

VLAN의 구성이 고정되어 있지 않아도 된다

관리자가 네트워크 정책 변경 시, 소프트웨어로 VLAN만 재구성해주면 된다

즉, 자리를 옮겨도 물리적 위치와 상관없이 논리적으로 같은 VLAN에 남아 있을 수 있다!

 

  • forwarding between VLANS(VLAN 간 통신)

VLAN끼리 통신을 하려면 라우팅이 필요하다

그래서 이미지에도 라우터가 등장하는 것을 볼 수 있다

 

data center networking

요즘에는 앱이나 웹을 비롯해 인공지능까지 합세해서 데이터센터가 많이 사용되고 지어지는 추세이다

 

이렇게 데이터가 많고 부하가 큰 경우에는 로드 밸런서를 이용해 부하를 분산해준다

외부 클라이언트의 요청을 받아드리고, 데이터 센터 내부의 적절한 서버에 작업을 분산하고

결과를 클라이언트에게 다시 전달하는 과정을 가진다

 

각 단계와 장치에 대한 설명인데 참고 정도만 하면 될 것 같다

  1. Internet (인터넷): 외부 사용자가 접속하는 진입점이다
  2. Border Router: 인터넷과 데이터센터 사이의 경계를 담당이며, 트래픽을 내부 네트워크로 전달한다
  3. Access Router: 내부로 들어온 요청을 내부 로드 밸런서나 스위치로 넘겨주는 역할이다
  4. Load Balancer
    • 왼쪽: 외부 요청을 받아 내부 네트워크로 라우팅.
    • 오른쪽: 내부에서 트래픽을 적절한 서버로 분산.
  5. Switch 계층 구조:
    • Tier-1 Switches: 최상단 스위치 계층
    • Tier-2 Switches: 중간 계층
    • TOR (Top-of-Rack) Switches: 서버 랙마다 하나씩 연결되어 있는 스위치
  6. Server Racks (서버 랙): 실제 서버들이 물리적으로 모여있는 공간이고 번호는 1~8까지 있다

 

위와 같은 구조일땐 현실적인 부분에서 문제가 생긴다

데이터 흐름이 하나의 스위치나 로드 밸런스 등에 집중되면, 처리 속도가 저하될 수 있다

그리고 그 장비가 고장나게되면 전체 서비스에도 문제가 생기게 된다

또 스위치나 랙을 추가하기 위해선 물리적, 논리적 제약이 많아 확장성이 부족하다

 

그래서 다음과 같은 구조가 나왔는데

스위치와 랙 간 풍부한 상호 연결로 다중 경로를 지원하고 수평 확장이 가능해진다

트래픽도 분산되고, 하나가 고장이 나도 우회를 하면 되어 다계층/다중 연결 구조가 필수이다

 

a day in the life of a web request

지금까지 배운 네트워크 계층 구조를 모두 다뤘다

어플리케이션 계층: HTTP, DNS

전송 계층: TCP, UDP

네트워크 계층: IP

링크 계층: Ethernet

이제 각 계층이 실제로 어떻게 상호작용하는지 종합적으로 간단하게 보자

 

DHCP로 인터넷 연결

  • 노트북은 먼저 인터넷 접속을 위해 DHCP 요청을 보낸다
  • 자신의 IP 주소, 기본 게이트웨이 주소, DNS 서버 주소를 얻는다
  • 요청은 다음과 같이 계층적으로 캡슐화된다: DHCP → UDP → IP → Ethernet (802.3)
  • 이 요청은 브로드캐스트되어 DHCP 서버(라우터)가 수신한다

 

DHCP 응답 수신

  • 라우터(DHCP 서버)는 DHCP ACK를 만들어 노트북에 보낸다
  • 이 메시지에는 노트북에 할당할 IP 주소, 기본 라우터의 IP, DNS 서버의 IP와 이름이 포함된다
  • 이제 노트북은 이 정보를 바탕으로 다음 통신 단계로 넘어갈 수 있게 된다

 

ARP: DNS 요청 전 준비

  • DNS 요청을 하기 위해선, 먼저 DNS 패킷을 라우터로 보내야 하므로 라우터의 MAC 주소가 필요하다
  • 따라서 ARP 요청을 브로드캐스트하여 라우터의 MAC 주소를 알아낸다
  • 라우터는 ARP 응답으로 MAC 주소를 전달하고 노트북은 이 MAC 주소를 이용해 DNS 패킷을 전송할 수 있게 된다

 

DNS 요청

  • 노트북은 DNS 쿼리를 만들어 1차 라우터로 전송하고, 이후 쿼리는 Comcast 네트워크를 통해 DNS 서버로 전달된다
  • 라우팅은 RIP, OSPF, IS-IS, BGP 등의 프로토콜로 결정된다
  • DNS 서버는 www.google.com에 대한 IP 주소를 응답으로 돌려준다

 

TCP 연결 수립(3-way handshake)

  • 클라이언트(노트북)는 TCP 소켓을 열고 SYN 패킷을 보낸다
  • SYN 패킷은 웹 서버로 라우팅되며 IP 주소 기반으로 인터넷을 통해 최종 웹 서버까지 전달된다
  • 웹 서버는 SYNACK으로 응답하고 클라이언트는 마지막 ACK를 보내고 TCP 연결이 완전히 수립된다

 

HTTP 요청/응답

  • 클라이언트는 TCP 소켓을 통해 웹 서버에 HTTP GET 요청을 보낸다
  • HTTP 요청이 웹 서버로 전달된다
  • 웹 서버는 HTTP 응답을 반환한다 HTML 페이지가 포함된 HTTP 응답 메시지를 TCP 연결을 통해 보낸다
  • HTTP 응답이 클라이언트에 도달함.

 

아래와 같은 캡슐화와 역캡슐화 흐름을 가지고 있다

계층 송신 측 내용 수신 측 내용
HTTP GET 요청 / HTML 응답 웹 콘텐츠 처리 및 표시
TCP 연결 설정, 데이터 전송 연결 수립, 세그먼트 재조립
IP 라우팅 처리 목적지 확인, IP 디캡슐화
MAC 이더넷 프레임으로 라우터 전달 MAC 주소 확인 및 전달
물리 비트 전송 (케이블, 무선 등) 수신된 신호를 디코딩

 

최종 요약

  1. DHCP로 IP 설정
  2. ARP로 라우터 MAC 주소 획득
  3. DNS 요청을 통해 웹 서버 IP 주소 확인
  4. TCP 연결 설정 (3-way handshake)
  5. HTTP 요청 전송
  6. 웹 서버 응답 수신
  7. 브라우저가 웹페이지 렌더링

 

이러한 과정들로 우리가 보는 웹 페이지가 요청되어 응답이 온다고 보면된다

지금까지 배운 내용들을 정리하고 어떻게 사용되는지 흐름을 이해하고 정리하면 좋을 것 같다!

728x90

'CS > 컴퓨터네트워크' 카테고리의 다른 글

[컴퓨터네트워크] Link Layer(4)  (1) 2025.06.20
[컴퓨터네트워크] Link Layer(3)  (1) 2025.06.20
[컴퓨터네트워크] Link Layer(1)  (1) 2025.06.20
[컴퓨터네트워크] Network Layer(4)  (0) 2025.05.20
[컴퓨터네트워크] Network Layer(3)  (0) 2025.05.19
'CS/컴퓨터네트워크' 카테고리의 다른 글
  • [컴퓨터네트워크] Link Layer(4)
  • [컴퓨터네트워크] Link Layer(3)
  • [컴퓨터네트워크] Link Layer(1)
  • [컴퓨터네트워크] Network Layer(4)
Dlawoct
Dlawoct
WeekEnd 개발자
  • Dlawoct
    Week-End
    Dlawoct
  • 전체
    오늘
    어제
    • 분류 전체보기 (58)
      • Language (9)
      • Algorithm (8)
      • Backend (7)
        • Spring (7)
        • Node.js (0)
      • DataEnginering (3)
        • Big Data (0)
      • CS (27)
        • 데이터베이스 (11)
        • 컴퓨터네트워크 (14)
        • 운영체제 (2)
      • IT 지식 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링
    network layer
    관계
    SQL
    security layer
    링크계층
    db
    Link Layer
    김영한
    UDP
    프로그래밍 언어
    컨테이너
    Java
    백엔드
    도커
    쿠버네티스
    운영체제
    select
    TCP
    DML
    언어
    데베
    SQLD
    백준
    spring
    데이터베이스
    김영한 java 강의
    자바
    Link
    Ack
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
Dlawoct
[컴퓨터네트워크] Link Layer(2)
상단으로

티스토리툴바