🌐 네트워크 기기
네트워크 기기는 OSI 모델의 계층에 따라 분류됩니다. 상위 계층은 하위 계층의 프로토콜을 처리할 수 있지만, 반대로 하위 계층이 상위 계층을 처리하지는 않습니다.
계층별 네트워크 기기 종류
-
애플리케이션 계층 (L7)
- L7 스위치: 로드밸런서 역할을 수행하여 URL, HTTP 헤더, 쿠키 등 기반으로 트래픽 분산
- 예시: 웹 애플리케이션 방화벽, API 게이트웨이 등
- L4 스위치: IP, 포트 기반의 로드밸런싱
- 헬스 체크: 서버의 정상 여부를 주기적으로 확인하여 장애 발생 시 트래픽 분산
-
인터넷 계층
- 라우터: 서로 다른 네트워크(예: LAN, WAN)를 연결하며, IP 주소를 기반으로 최적의 경로를 선택해 패킷을 포워딩
- 소프트웨어 기반, 고급 라우팅(NAT, VPN 등) 지원, 상대적으로 처리 속도가 느림
- L3 스위치: L2 스위치에 라우팅 기능(IP 기반)을 추가하여 내부 네트워크(서브넷, VLAN) 간 통신을 담당
- 하드웨어 기반으로 빠른 포워딩, 내부 트래픽 최적화
-
데이터 링크 계층
- L2 스위치: MAC 주소 기반으로 프레임을 전달하여 같은 LAN 내 장치 간 데이터 통신 담당
- 브리지 (Bridge): 두 개의 근거리 LAN을 연결해 주어, 서로 다른 LAN 간의 데이터를 전달하는 역할
- 비교: L2 스위치는 내부 LAN에서 장치들을 연결하는 반면, 브리지는 서로 다른 LAN을 물리적으로 연결합니다.
-
물리 계층
- NIC (Network Interface Card): 컴퓨터에 장착되어 네트워크와 빠르게 데이터 송수신하며, 고유의 MAC 주소 보유

- 리피터 (Repeater): 약해진 신호를 증폭하여 전송 (광케이블 보급 후 사용 빈도가 줄어듦)

- AP (Access Point): 유선 네트워크와 무선 LAN을 연결, 무선 장치들이 네트워크에 접속할 수 있도록 지원
🌐 IP 주소
네트워크 통신은 IP 주소를 기반으로 이루어집니다. IP 주소는 IPv4와 IPv6로 나뉩니다.
🔹 IPv4
- 구성: 32비트, 8비트씩 4개의 옥텟
- 표현 예시:
192.168.1.10
- 첫 번째 옥텟: 192
- 두 번째 옥텟: 168
- 세 번째 옥텟: 1
- 네 번째 옥텟: 10
🔹 IPv6
🔹 ARP (Address Resolution Protocol)
- 역할: IP 주소를 기반으로 해당 장치의 MAC 주소를 찾아내는 프로토콜
- RARP: 반대로 MAC 주소로부터 IP 주소를 찾음
- 동작 예시:
- 브로드캐스트: "내 IP에 해당하는 MAC 주소가 누구인가요?" 메시지를 전체에 전송
- 일치하는 장치가 유니캐스트로 자신의 MAC 주소를 응답
홉 바이 홉 통신 & 게이트웨이
- 홉 바이 홉 통신 (Hop-by-Hop):
패킷이 여러 라우터를 거치며 각 라우터의 라우팅 테이블에 따라 최적의 경로로 전달되는 과정
- 게이트웨이:
서로 다른 네트워크나 프로토콜 간의 통신을 가능하게 하는 '출입문' 역할을 함
- 예: 내부 LAN과 인터넷 간 통신 시 공유기의 NAT 기능이 게이트웨이 역할을 수행
클래스 기반 할당 방식 vs. CIDR
책에서 잘못 알려준것인지 확인하기
🔸 클래스 기반 할당 방식 (Classful Addressing)
- 개념: IP 주소를 A, B, C, D, E 등으로 미리 분류하여, 각 클래스마다 고정된 네트워크와 호스트 비율을 사용
- 예시:
- 클래스 A:
0.0.0.0 ~ 127.255.255.255
- 네트워크 식별: 첫 번째 옥텟
- 호스트 식별: 나머지 3 옥텟
- 클래스 B:
128.0.0.0 ~ 191.255.255.255
- 클래스 C:
192.0.0.0 ~ 223.255.255.255
- 클래스 D:
224.0.0.0 ~ 239.255.255.255
→ 멀티캐스트용
- 클래스 E:
240.0.0.0 ~ 255.255.255.254
→ 실험/연구용
🔸 CIDR (Classless Inter-Domain Routing)
- 개념: 고정된 클래스 분류 없이, 슬래시(
/
) 표기법을 사용해 네트워크 접두사 길이로 주소 범위를 지정하는 방식
- 예시:
192.168.1.10/24
→ 네트워크 접두사가 24비트임을 의미 (클래스 C의 기본 서브넷 마스크와 동일)
대규모 조직의 클래스 A 주소 사용 예시
예를 들어, ABC Corporation이라는 대규모 기업이 있다고 가정합니다.
- 할당받은 주소:
12.0.0.0/8
- 설명:
- 전체 IP 주소: 32비트
- 네트워크 부분: 첫 번째 옥텟 (
12
) → 8비트
- 호스트 부분: 나머지 3 옥텟 → 24비트
- 약 16,777,214개(2^24 - 2) 호스트 지원 가능
- 실제 활용:
- 전 세계 여러 사무실과 데이터 센터에
12.1.0.0/16
, 12.2.0.0/16
등으로 분할하여 할당
- 네트워크 구별 주소(
12.0.0.0
)와 브로드캐스트 주소(12.255.255.255
)는 사용하지 않음
단점: 주소 낭비가 많아, 이후 효율적인 IP 관리를 위해 DHCP와 NAT가 도입되었습니다.
DHCP (Dynamic Host Configuration Protocol)
DHCP는 네트워크 장치에 IP 주소 및 기타 네트워크 설정(서브넷 마스크, 게이트웨이, DNS 등)을 자동으로 할당하는 프로토콜입니다.
🔄 DHCP 동작 과정 (예: 노트북의 경우)
- 노트북 연결:
Wi-Fi에 연결된 노트북이 “어떤 IP를 써야 하나요?”라고 DHCP 서버(공유기)에 요청합니다.
- DHCPDISCOVER:
“IP 주소 줄 사람 계신가요?”라는 브로드캐스트 메시지를 전송합니다.
- DHCPOFFER:
DHCP 서버가 사용 가능한 IP(예: 192.168.0.101
)를 제안합니다.
- DHCPREQUEST:
노트북이 해당 IP를 사용하겠다고 응답합니다.
- DHCPACK:
DHCP 서버가 최종 할당 및 네트워크 설정(서브넷 마스크, 게이트웨이 등)을 전달합니다.
NAT (Network Address Translation)
NAT는 여러 사설 IP를 하나의 공인 IP로 변환해 외부에 통신할 수 있도록 하는 기술입니다.
- 역할:
- 공인 IP 부족 문제 해결
- 내부 네트워크의 보안 강화
- 예시:
집의 공유기에 연결된 PC와 노트북은 각기 다른 사설 IP를 사용하지만, 외부에서는 모두 같은 공인 IP로 인식됩니다.
LAN vs. VLAN
🔹 LAN (Local Area Network)
- 정의:
한정된 지리적 영역(예: 사무실, 건물) 내에 물리적으로 연결된 네트워크
- 특징:
- 하나의 브로드캐스트 도메인 구성
- 물리적 연결 중심
🔹 VLAN (Virtual LAN)
- 정의:
동일한 물리적 네트워크 상에서 소프트웨어적으로 네트워크를 논리적으로 분할한 것
- 이점:
- 보안 강화: 부서별, 업무별로 민감한 정보를 분리
- 유연성: 물리적 위치와 상관없이 네트워크 구성 변경 가능
- 트래픽 분산: 브로드캐스트 트래픽 제한, 네트워크 부하 감소
🌐 HTTP
HTTP는 애플리케이션 계층에서 사용하는 프로토콜로, 주로 웹 서비스 통신에 사용됩니다. HTTP는 HTTP/1.0부터 시작하여 HTTP/3.0까지 발전해왔습니다.
HTTP/1.0 🌐
-
특징:
- 하나의 연결당 하나의 요청 처리:
매 요청마다 TCP 연결을 새로 설정 (3-way-handshake)
- RTT(Round Trip Time) 증가:
각 요청마다 왕복 시간이 소요되어 성능 저하 문제가 발생
-
RTT 증가로 인한 부담 해결방법:
- 이미지 스플리팅: 여러 이미지를 하나로 합치거나
background-image
로 처리
- 코드 압축: 개행, 빈칸을 제거하여 코드 크기 최소화
- 인코딩: 리소스를 절약하기 위한 데이터 변환 방식 사용
HTTP/1.1 🔄
-
개선점:
- Keep-Alive:
하나의 TCP 연결로 여러 요청과 응답을 처리할 수 있어 매번 연결 설정하는 부담 완화
-
문제점:
- HOL(Head-of-Line) Blocking:
- 한 스트림의 첫 번째 패킷 지연 시, 뒤따르는 모든 패킷도 지연
- HTTP/1.1 헤더가 무거워 성능 저하 발생
HTTP/2.0 ⚡
HTTP/1.1의 문제점을 해결하기 위해 등장한 HTTP/2.0은 지연 시간을 줄이고 응답 속도를 개선합니다.
- 주요 특징:
- 멀티플렉싱 (Multiplexing):
하나의 연결에서 여러 데이터 스트림을 동시에 송수신
- 각 스트림이 독립적으로 처리되어 HOL Blocking 문제를 완화
- 서버 푸시 (Server Push):
클라이언트의 요청 없이 서버가 리소스를 미리 전송하여 추가 요청을 줄임
- 예: HTML 내 포함된 CSS 파일을 클라이언트로 미리 푸시
- 헤더 압축:
허프만 코딩(Huffman Coding)을 활용해 자주 등장하는 문자는 짧은 코드로, 덜 등장하는 문자는 긴 코드로 압축
HTTPS 🔒
HTTPS는 HTTP에 보안을 추가한 프로토콜로, SSL/TLS를 사용해 데이터를 암호화합니다.
-
SSL/TLS 역할:
- 전송 계층에서 도청과 변조를 방지
- 보안 세션 내에서 키 교환 및 해싱 알고리즘을 사용하여 데이터 암호화
-
인증 과정:
- 클라이언트 → 서버: HTTPS 요청
- 서버 → 클라이언트: CA(인증 기관)에서 서명된 SSL/TLS 인증서 전송
- 클라이언트: 인증서의 신뢰성을 확인 (CA 저장소를 통해 검증)
- 세션 키 생성: 클라이언트가 대칭키 생성 후 서버의 공개키로 암호화하여 전송
- 서버: 개인키로 암호화된 세션 키 복호화
- 암호화 통신 시작: 동일한 세션 키를 사용해 빠르고 안전하게 데이터 송수신
-
키 교환 알고리즘 예:
- 디피-헬만(Diffie-Hellman):
공개값과 비밀값을 이용해 양측이 동일한 암호키 생성
- 기본 값 제공
- 기본 값에 본인들만의 비밀 값 혼합
- 혼합값 교환
- 각각의 혼한값에 다시 본인들만의 비밀 값 혼합
- 서로 같은 암호키를 갖게됨
-
해싱 알고리즘 예:
- SHA-256: 특정 값에 대해 고유한 해시 값을 매핑
-
HTTPS 구축 방법:
- CA에서 인증서를 발급받아 서버에 설치
- HTTPS 지원 로드밸런서(예: NGINX) 적용 ❗
- 프로젝트에서는 이 방식을 주로 사용하는 것 같음
- HTTPS 제공 CDN 사용
HTTP/3.0 & QUIC 🌟
HTTP/3.0은 기존의 TCP 대신 QUIC(Quick UDP Internet Connections) 프로토콜 위에서 동작하며, UDP 기반으로 구현됩니다.
- QUIC의 주요 특징:
- UDP 기반 사용:
TCP보다 빠르게 연결 설정 가능 (3-way 핸드쉐이크 생략)
- 1단계 핸드쉐이크:
TLS/SSL 연결을 한 번의 핸드쉐이크로 보안 연결과 데이터 전송을 동시에 설정하여 초기 지연 감소
- 멀티플렉싱:
HTTP/2.0처럼 하나의 연결에서 여러 스트림을 동시에 처리, 하나의 스트림 문제 시 다른 스트림 영향 없음
- 패킷 손실 복구:
손실된 패킷을 빠르게 복구하는 메커니즘 내장, 네트워크 상황이 좋지 않아도 성능 유지