네트워크 + 추가

more·2023년 11월 14일

MAC (Media Access Control)

  • 네트워크 장비의 고유한 물리적 주소

  • 컴퓨터의 네트워크 카드에 할당되며, 48비트 길이의 16진수로 표현

  • 컴퓨터와 네트워크 장비들이 통신할 때 데이터를 보내고 받는 데 사

  • 네트워크 상에서 고유한 값이기 때문에, 충돌을 방지하고 효율적인 데이터 전송을 가능하게 함

  • 같은 네트워크 상에서 두 개 이상의 장치가 동일한 MAC 주소를 가지는 경우 충돌이 발생

    • 전 세계적으로 고유한 값이어야 하며, 이를 보장하기 위해 IEEE(Institute of Electrical and Electronics Engineers)에서 MAC 주소 할당 규칙을 정함
  • 물리적인 연결 상에서만 유효하며, 다른 네트워크로 데이터를 전송할 때는 IP 주소와 같은 논리적 주소를 사용

  • 확인 방법

    1. cmd에서 ipconfig/all 명령어 입력
    2. 해당 cmd 창에서 이더넷 어댑터 이더넷 -> 물리적 주소가 MAC 주소
  • 구성 방식

    • 48비트 숫자로 구성되어있고 그 중 앞쪽 24비트는 랜카드를 만든 제조사 번호, 뒤쪽 24비트는 제조사가 랜 카드에 붙련 번호
  • MAC 주소를 사용한 통신

    • OSI 모델에서는 데이터 링크 계층, TCP/IP 모델에서는 네트워크 계층에서
      헤더를 붙이는데, 이더넷 헤더의 목적은 MAC 주소(6), 출발지 MAC 주소(6), 유형(2)
      => 총 14바이트로 구성
  • 데이터 전달 방식

    • 컴퓨터가 데이터를 다른 컴퓨터로 전송할 때 이더넷 헤더에 데이터의 목적지인 컴퓨터의 MAC 주소(목적지 MAC 주소)와 자신의 MAC 주소(출발지 MAC 주소)를 넣고 데이터를 전송
    • 보낸 측의 컴퓨터에서 캡슐화가 일어나고 데이터 링크 계층에서 데이터에 이더넷 헤더와 트레일러를 추가하여 프레임을 만들고, 물리 계층에서 이 프레임 비트열을 전기 신호로 변화하여 네트워크를 통해 전송

IP (Internet Protocol)

  • 데이터를 보내고 받는 데 사용되며, 컴퓨터나 네트워크 장비들이 네트워크 상에서 서로를 식별하는 데 사용되는 논리적 주소(Logical Address)

  • 32비트 길이의 10진수로 표현되며, 네트워크 상에서 고유한 값으로 사용

  • 네트워크 ID와 호스트 ID로 구성되며, 네트워크 ID는 해당 컴퓨터가 속한 네트워크를 식별하고, 호스트 ID는 해당 컴퓨터를 식별

  • 네트워크에서 데이터를 전송할 때, 송신자는 수신자의 IP 주소를 알아야 함

  • 데이터는 송신자의 IP 주소와 수신자의 IP 주소로 패킷 헤더에 적히고, 이를 기반으로 패킷이 전송

  • 처음부터 주어지는 것이 아닌 할당이 되는 것 -> 호스트부를 변경하면서 IP 할당. 

    • 호스트부가 8자리로 이루어진 2진수라면, 시작(0)과 끝(255)을 제외한 번호로 할당이 가능
    • 호스트부가 0으로만 이루어진 것은 네트워크 주소로 해당 네트워크를 의미
    • 호스트부가 1로만 이루어진 것은 브로드캐스트 주소로 ARP와 같은 기능을 사용하기 위해 사용
  • 서브넷 마스크

    • IP 주소에서 네트워크 ID와 호스트 ID를 구분하는 역할
    • IP 주소와 같이 32비트 길이의 10진수로 표현되며, 이진수로 표현되면 1로 표시된 비트는 네트워크 ID를, 0으로 표시된 비트는 호스트 ID를 나타냄
  • 주소 체계

  • IPv4

    • 전세계에서 사용된 첫 인터넷 프로토콜
    • (주소용량) = (8bit 씩 4묶음) = (8bit.8bit.8bit.8bit) = (32bit)
      -> 총 (2^8)^4 = 2^32개의 주소를 만들 수 있음
    • 10진수로 표기되어 있지만, 실제로는 마침표로 구분된 4개의 8비트 필드로 되어 있음
  • IPv6

    • IPV4의 주소부족 문제를 해결하기 위해 만들어짐
    • (주소용량) = (16bit 씩 8묶음) = (16bit.16bit.16bit.16bit.16bit.16bit.16bit.16bit) = (128bit)
  • cmd -> ipconfig 명령어를 입력하면 확인 가능

DHCP (Dynamic Host Configuration Protocol)

  • DHCP란 호스트의 IP주소와 각종 TCP/IP 프로토콜의 기본 설정을 클라이언트에게 자동적으로 제공해주는 프로토콜

  • DHCP에 대한 표준은 RFC문서에 정의되어 있으며, DHCP는 네트워크에 사용되는 IP주소를 DHCP서버가 중앙집중식으로 관리하는 클라이언트/서버 모델을 사용

  • DHCP 지원 클라이언트는 네트워크 부팅과정에서 DHCP서버에 IP주소를 요청하고 이를 얻을 수 있음

  • 네트워크 안에 컴퓨터에 자동으로 네임 서버 주소, IP주소, 게이트웨이 주소를 할당해주는 것을 의미

  • 해당 클라이언트에게 일정 기간 임대를 하는 동적 주소 할당 프로토콜

  • 장점

    • PC의 수가 많거나 PC 자체 변동사항이 많은 경우 IP 설정이 자동으로 되기 때문에 효율적으로 사용 가능
    • IP를 자동으로 할당해주기 때문에 IP 충돌을 막을 수 있음
  • 단점
    - DHCP 서버에 의존되기 때문에 서버가 다운되면 IP 할당이 제대로 이루어지지 않음

  • 구성

    • 서버

      • 네트워크 인터페이스를 위해서 IP주소를 가지고 있는 서버에서 실행되는 프로그램으로 일정한 범위의 IP주소를 다른 클라이언트에게 할당하여 자동으로 설정하게 해주는 역할
      • DHCP서버는 클라이언트에게 할당된 IP주소를 변경없이 유지
      • 클라이언트에게 IP 할당 요청이 들어오면 IP를 부여해주고 할당 가능한 IP들을 관리
    • 클라이언트

      • 클라이언트들은 시스템이 시작하면 DHCP서버에 자신의 시스템을 위한 IP주소를 요청하고, DHCP 서버로부터 IP주소를 부여받으면 TCP/IP 설정은 초기화되고 다른 호스트와 TCP/IP를 사용해서 통신을 할 수 있게 됨
        -> 서버에게 IP를 할당받으면 TCP/IP 통신을 할 수 있음
  • 원리
    • DHCP를 통한 IP 주소 할당은 “임대”라는 개념
    • DHCP 서버가 IP 주소를 영구적으로 단말에 할당하는 것이 아니고 임대기간(IP Lease Time)을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것
    • 단말은 임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면 IP 주소 임대기간 연장(IP Address Renewal)을 DHCP 서버에 요청해야 하고 또한 단말은 임대 받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차(IP Address Release)를 수행

NAT (Network Address Translation)

  • IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술

  • 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 함

  • NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함

  • 많은 네트워크 관리자들이 NAT를 편리한 기법이라고 보고 널리 사용하고 있으며, NAT가 호스트 간의 통신에 있어서 복잡성을 증가시킬 수 있으므로 네트워크 성능에 영향을 줄 수 있는 것은 당연

  • NAT는 IPv4의 주소 부족 문제를 해결하기 위한 방법으로서 고려되었으며, 주로 비공인(사설, local) 네트워크 주소를 사용하는 망에서 외부의 공인망(public, 예를 들면 인터넷)과의 통신을 위해서 네트워크 주소를 변환하는 것

  • 장점

    • 인터넷의 공인 IP주소를 절약할 수 있음
      -> 인터넷의 공인 IP주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 하는 것이 필요
      -> NAT를 이용하면 사설 IP주소를 사용하면서 이를 공인 IP주소와 상호변환할 수 있도록 하여, 공인 IP주소를 다수가 함께 사용할 수 있도록 함으로써 이를 절약할 수 있는 것
    • 인터넷이란 공공망과 연결되는 사용자들의 고유한 사설망을 침입자들로부터 보호할 수 있음
      -> 공개된 인터넷과 사설망 사이에 방화벽(Firewall)을 설치하여 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있음.
      -> 이때 외부 통신망 즉 인터넷망과 연결하는 장비인 라우터에 NAT를 설정할 경우 라우터는 자신에게 할당된 공인 IP주소만 외부로 알려지게 하고, 내부에서는 사설 IP주소만 사용하도록 하여 필요시에 이를 서로 변환시켜 줌
      -> 따라서 외부 침입자가 공격하기 위해서는 사설망의 내부 사설 IP주소를 알아야 하기 때문에 공격이 불가능해지므로 내부 네트워크를 보호할 수 있게 됨

HTTPS

  • HTTP란 HyperText Transfer Protocol의 약자
    -> 하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)
    -> 인터넷에서 HTML과 같은 문서를 사용자 컴퓨터에 설치된 웹 브라우저가 웹 서버에 요청할 때의 규칙

  • 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. 이러한 보안 취약점을 해결하기 위한 프로토콜이 HTTP에 S(Secure Socket)가 추가된 것이 HTTPS

  • 기본 골격이나 사용 목적 등은 HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 ‘보안’ 요소가 추가되었다는 것이 가장 큰 차이점
    -> 서버와 클라이언트 사이의 모든 통신 내용 암호화

  • 페이지를 암호화한 키가 그 페이지를 보는 특정 사용자에게만 알려지도록 함

  • HTTPS는 SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하며, 기본 TCP/IP 포트는 443이고, SSL 프로토콜 위에서 HTTPS 프로토콜이 동작

  • 암호화 방식

    • 공개키 암호화 방식과 공개키의 느리다는 단점을 보완한 대칭키 암호화 방식을 함께 사용
    • 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신
  • 공개키 암호화
    • A키로 암호화를 하면 B키로 복호화
    • B키로 암호화를 하면 A키로 복호화를 할 수 있다.
    • 둘 중 하나를 비공개키(Private Key) 혹은 개인키라 부르며, 이는 자신만 가지고 있고 공개되지 않음
    • 나머지 하나를 공개키(Public Key)라고 부르며 타인에게 제공
    • 공개키는 유출이 되어도 비공개키를 모르면 복호화 할 수 없기 때문에 안전
  • 대칭키 방식
    • 동일한 키로 암호화, 복호화가 가능
    • 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음에 사용할 때는 다른 키가 사용되기 때문에 안전
    • 공개키보다 빠르게 통신 가능

CA(Certificate Authority)
공개키와 공개 DNS명(ex.www.example.com)의 연결을 보장하는 기관
CA는 자신만의 암호화 키로 웹사이트의 공개키를 암호학적으로 사인하는 데 사용함으로써 특정 공개키가 특정 사이트의 공개키라는 것을 보장
이 서명은 계산적으로 위조할 가능성이 없음
브라우저(그 외 클라이언트)는 잘 알려진 CS가 소유한 공개키를 보관하는 신뢰할 수 있는 anchor 저장소(trust anchor stores)를 유지하고 CS 서명을 암호학적으로 확인하는데 이 공개키를 사용

  • 동작 과정


  • 장점

    • HTTPS는 웹사이트의 무결성을 보호
    • 웹 사이트와 사용자 브라우저 사이의 통신을 침입자가 건드리지 못하도록 함
  • 단점

    • 모든 사이트에서 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있음
      -> 중요한 사이트는 HTTPS로 관리하고, 그렇지 않은 사이트는 HTTP를 사용
    • HTTPS를 지원한다고 해서 무조건 안전한 것은 아님
      -> 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문

면접 대비

Q: HTTPS가 동작하는 방식에 대해서 설명 해 주세요.
A: HTTPS는 보안 강화를 위한 HTTP의 버전으로, 데이터 통신의 기밀성, 무결성, 그리고 서버 신뢰성을 보장합니다. 동작 방식은 다음과 같습니다.
첫째, 핸드셰이크 단계에서 클라이언트는 서버와 SSL/TLS 프로토콜을 사용하여 통신을 시작합니다. 이때, 클라이언트는 지원하는 암호화 알고리즘을 제시하고, 서버는 이 중에서 하나를 선택하여 응답합니다.
둘째, 서버는 클라이언트에게 공개키 인증서를 제공하며, 클라이언트는 이를 검증하여 서버의 신뢰성을 확인합니다.
셋째, 클라이언트는 서버의 공개키를 사용하여 세션 키를 생성하고, 이를 안전하게 서버에게 전송합니다. 이 세션 키는 이후 데이터 전송에 사용됩니다.
넷째, 데이터 전송 단계에서 세션 키를 사용하여 데이터를 암호화하고, 서버 또는 클라이언트에게 전송합니다. 이렇게 전송된 데이터는 중간에 있는 공격자가 해독하기 어렵습니다.
다섯째, 받은 데이터는 서버 또는 클라이언트의 개인키를 사용하여 해독되며, 데이터 무결성은 해쉬 함수를 통해 보장됩니다.
이러한 과정을 통해 HTTPS는 웹 통신의 안전성을 제공하며, 사용자의 개인정보 등을 신뢰할 수 있게 보호합니다

출처

MAC 주소와 IP 주소
MAC 주소의 구조
IPv4, IPv6
DHCP란
NAT이란
HTTPS란

0개의 댓글