Home (웹해킹) 1-3. 네트워크와 프로토콜 (2)
Post
Cancel

(웹해킹) 1-3. 네트워크와 프로토콜 (2)

이렇게 OSI 7계층과 TCP/IP 4계층의 전체적인 구조를 봤으니 좀 더 세부적으로 알아보려고 한다.

image

1계층 (물리 계층)

1계층이 수행하는 일은 전기, 기계적인 전송을 수행하는 곳이다.
송신할 때 마지막에 역할을 하는 곳이므로 케이블이 연결되어 있는 기기에 신호를 전달한다.

2계층부터는 데이터를 보내기 전에 어떤 것을 하고, 도달한 후에 어떤 것을 할지에 대한 역할을 하지만
1계층은 수신처에 데이터를 전달한다. 라는 역할을 맡게 된다.

  • 케이블의 잭과 인터페이스 쪽의 삽입구 형태
  • 비트를 신호로 변환하는 방법
  • 신호의 종류, 신호의 형태

등이 있다.

보통은 유선을 사용하는 것이 일반적이며 UTP선(흔히 쓰는 랜선)이나 광파이버를 이용한다.

  • UTP선 : 전기 신호를 사용, 설치가 간단하고, 유지 보수가 쉽다. 전송 속도와 거리가 광파이버보다 낮다.
  • 광파이버 : 광 신호를 사용, 전송 속도와 거리, 보안성이 높지만 전문 기술과 유지 보수가 어렵다.

그렇기에 일반 가정이나 사무실에서는 UTP선을 보게 된다.

컴퓨터는 데이터를 케이블에 맞는 신호로 변환해서 보내고 이는 NIC(Network Interface Card)가 당담한다.

2계층 (데이터 링크 계층)

이전에 컴퓨터의 회선은 교환기 같은 곳과 연결이 되어 있다고 했다.
1계층에서는 그저 데이터를 전송을 하는데, 그렇다면 어떻게 원하는 목적지로 데이터를 정확히 보낼 수 있을까?

이를 위해 2계층은 같은 네트워크 안에서 인접한 기기끼리 데이터를 주고받는 것을 당담한다.
여기에서 같은 네트워크란 보통 LAN을 의미한다.

MAC주소

특정 위치에 보내기 위해서는 수신처와 송신처를 특정지을 수 있는 주소(Address)가 필요하다.

각각의 기기는 고유한 주소를 적어도 한 개 갖고 있고 이것이 MAC 주소이다.
MAC 주소는 기기마다 유일하며, 겹치지 않는다.

MAC 주소는 기기의 인터페이스에 지정된 고정 주소이고 구조는 AA:BB:CC:DD:EE:FF 의 형식을 가진 16진수이다.
4bit*12 이므로 48bit의 값을 가지며, 앞의 24비트는 벤더코드라고 불리는 인터페이스를 제조한 회사의
제조번호이고, 뒤의 24비트는 회사가 붙인 벤더 할당 코드이다.

같은 LAN 안에서는 이 MAC 주소를 보고 데이터를 전달한다.
컴퓨터 A가 B에게 데이터를 보내려면 B의 MAC 주소를 알아야 한다.

주소 사용 방식

MAC 주소는 하나의 주소 체계지만, 사용 목적에 따라 세 가지 방식으로 쓰인다.

  • 유니캐스트 주소 : 1대1 통신, 특정 MAC 주소 하나로 데이터를 보낸다
    1
    
    ex) AA:BB:CC:DD:EE:FF
    
  • 브로드캐스트 주소 : 1대 all 통신, LAN의 모든 기기가 받는다.
    1
    
    ex) FF:FF:FF:FF:FF:FF
    
  • 멀티캐스트 주소 : 1대 多 통신, 특정 그룹에 속한 기기들만 받는다.
    1
    
    ex) 01:00:5E:xx:xx:xx (IPv4 멀티캐스트)
    

    데이터를 전송할 때 가장 많이 쓸 방법은 아무래도 1대1 통신일 것이다.

Ethernet

LAN에서 2계층의 규칙은 Ethernet(이더넷)이라는 규칙이 적용된다.
현재 가장 널리 쓰이는 데이터 링크 계층 프로토콜이며, 유선 LAN의 사실상 표준이다.
무선 LAN인 Wi-Fi도 동작 방식은 유사하다.

image

이더넷은 데이터를 프레임(Frame)이라는 단위로 전송한다.
계층을 지나면서 추가적인 제어데이터가 붙는 캡슐화 과정이 있기에 3계층의 데이터에 제어 데이터를 덧붙인다.

추가로 붙는 이더넷 헤더로는 송수신처 MAC 주소와, 3계층 PDU type이 있고
이더넷 트레일러에는 에러 체크용 비트열인 FCS가 있다.

  • 이더넷 헤더 구성 (14byte)
    • 수신처 MAC 주소 (48bit)
    • 송신처 MAC 주소 (48bit)
    • type (16bit)
  • 3계층 데이터(payload) (368~12000bit)
  • 이더넷 트레일러 구성 (4byte)
    • FCS (4byte)

FCS 값이 일치하지 않으면 프레임을 폐기한다.
Ethernet 자체는 재전송을 하지 않으며 재전송은 TCP 같은 상위 계층에서 처리한다.

전송기

LAN에서 여러 기기를 연결하는 장비에는 크게 허브스위치가 있다.

허브

단순한 네트워크 장비로 한 포트로 데이터가 들어오면 연결된 모든 포트로 그대로 복사해서 보낸다.
그러면 데이터를 받은 모든 컴퓨터는 데이터와 MAC주소를 보고 받아들일지 말지 결정한다.

불필요한 트래픽이 생기고, 보안에 취약하기에 요즘은 거의 사용되지 않는다.

스위치

스위치는 허브와 달리 MAC 주소를 보고 필요한 포트로만 데이터를 전달한다.
스위치는 내부에 MAC 주소 테이블을 가지고 있으며 “어떤 MAC 주소가 어느 포트에 연결되어 있는지” 정보가 저장된다.

MAC 주소 테이블에 매핑하는 것을 학습한다고 표현하는데 이 과정은

  1. 처음에는 MAC 주소 테이블이 비어있다
  2. 포트 1에서 출발지 MAC 주소가 AA:BB:CC:DD:EE:FF인 프레임이 들어온다.
  3. “포트 1 = AA:BB:CC:DD:EE:FF”를 테이블에 기록한다
  4. 목적지 MAC 주소를 테이블에서 찾는다
    1. 있으면: 해당 포트로만 전송 (유니캐스트)
    2. 없으면: 모든 포트로 전송(플러딩)

그렇다면 스위치는 취약한 부분이 생기지 않을까? 하는 의문이 들었다.

MAC Flooding 공격이라고 공격자가 대량의 가짜 MAC 주소를 보내서
MAC 주소 테이블을 가득 채우면, 스위치가 허브처럼 동작하게 되어 트래픽을 엿들을 수 있다고 한다.

하지만 현대에 오면서 포트당 학습 가능한 MAC 주소 개수를 제한을 두는 것이 기본으로 되고
저장할 수 있는 MAC 테이블 크기가 커지며 공격에 엄청 큰 트래픽이 필요하고, 자연스럽게 탐지가 된다고 한다.

이어서 다음 글에서는 3계층을 다루겠다.

This post is written by PRO.

(웹해킹) 1-2. 네트워크와 프로토콜 (1)

(웹해킹) 1-4. 네트워크와 프로토콜 (3)