네트워크의 기초 🚀
네트워크란 노드와 링크(간선)가 서로 연결되거나 연결되지 않은 집합체를 의미합니다.
- 노드(Node): 서버, 라우터, 스위치 등의 네트워크 장비 🖥️
- 링크(Link): 유선 또는 무선 연결 📶
좋은 네트워크란 짧은 시간에 많은 양의 데이터를 처리할 수 있고, 장애 발생 빈도가 적으며, 보안성이 뛰어난 네트워크를 말합니다. 🔒
용어 설명 📝
- bps (bits per second): 초당 전송되는 비트 수
- 대역폭 (Bandwidth): 주어진 시간 동안 전송될 수 있는 최대 비트 수
- 지연 시간 (Latency): 두 장치 사이에 데이터를 전달하는 데 걸리는 시간 ⏱️
네트워크 토폴로지 🌐
네트워크 토폴로지는 네트워크의 구조, 즉 노드들이 어떤 형태로 연결되어 있는지를 나타냅니다.
-
트리 토폴로지
- 계층형 구조
- 노드의 삽입과 삭제가 쉬움
- 과도한 트래픽이 하위 노드에 영향을 줄 수 있음
-
버스 토폴로지 (LAN에서 주로 사용)
- 중앙 회선을 기반으로 연결됨
- 노드의 삽입과 삭제가 용이함
- 스푸핑(Spoofing) 위험 존재
- 부가 설명: 스푸핑은 네트워크 장비(예: 스위치)를 속여 악의적인 노드로 패킷이 유도되도록 하는 공격 기법입니다. 😈
-
스타 토폴로지
- 중앙 노드에 모든 노드가 연결됨
- 중앙 노드 장애 발생 시 전체 네트워크 장애
- 구축 비용이 다소 높음 💰
-
링 토폴로지
- 노드들이 원형으로 연결되어 있음
- 하나의 링크 장애 발생 시 전체 네트워크에 영향
-
메시 토폴로지
- 모든 노드가 다수의 다른 노드와 직접 연결됨
- 구축 비용이 높고, 관리가 복잡함
네트워크 토폴로지가 왜 중요한가? 🔍
네트워크 상에서 병목 현상이 발생하면 문제 해결을 위해 전체 구조와 경로를 파악해야 합니다. 올바른 토폴로지 이해는 문제 원인 분석과 해결에 큰 도움이 됩니다.
네트워크 분류 📡
- WAN (Wide Area Network): 전 세계를 아우르는 광역 네트워크
- MAN (Metropolitan Area Network): 도시 단위의 네트워크
- LAN (Local Area Network): 사무실, 학교 등 제한된 범위 내의 네트워크
범위가 좁아질수록 데이터 전송 속도가 빠르고 혼잡도가 줄어듭니다. ⚡
네트워크 성능 분석 명령어 🔧
병목 현상의 주된 원인:
- 네트워크 대역폭 부족
- 부적절한 네트워크 토폴로지
- 서버의 CPU 및 메모리 사용량 과다
- 비효율적인 네트워크 구성
주요 명령어:
- ping: 일정 크기의 패킷을 전송하여 네트워크 연결 상태와 왕복 시간을 확인 (ICMP 프로토콜 사용)
- netstat: 현재 접속된 네트워크 상태를 표시
- nslookup: DNS 관련 정보를 확인
- tracert 또는 traceroute: 목적지까지의 경로 및 어느 구간에서 지연이 발생하는지 확인
네트워크 프로토콜 표준화 📜
여러 장치들이 데이터를 주고받기 위해 공통 인터페이스와 프로토콜을 정의합니다. 이를 통해 다양한 벤더의 장비들도 서로 원활하게 통신할 수 있습니다.
TCP/IP 4계층 모델 🏛️
TCP/IP 모델은 4계층으로 구성되어 있으며, 각 계층은 서로 독립적으로 동작합니다.
-
애플리케이션 계층
(애플리케이션, 표현, 세션 계층을 포함하며 사용자에게 서비스를 제공합니다.)
-
전송 계층
(송신자와 수신자 사이의 데이터 전달을 책임지며, 연결형(TCP)과 비연결형(UDP) 방식을 제공합니다.)
-
인터넷 계층
(패킷을 목적지 IP 주소로 전달하며, 비연결형 특성을 가집니다.)
-
링크 계층
(물리 계층과 데이터 링크 계층을 포함하며, 실제 데이터 전송 및 신호 제어를 담당합니다.)
애플리케이션 계층 🎨
사용자가 직접 이용하는 서비스를 제공하는 계층입니다.
주요 프로토콜:
- FTP: 파일 전송 프로토콜
- HTTP: 웹 서버와 클라이언트 간의 통신
- SSH: 보안 쉘, 암호화된 원격 접속
- SMTP: 이메일 전송
- DNS: 도메인 이름을 IP 주소로 변환
전송 계층 📦
송신자와 수신자를 연결하여 애플리케이션과 인터넷 계층 사이에서 데이터 전달을 중계합니다.
주요 프로토콜:
- TCP (Transmission Control Protocol)
- 연결지향적이며 신뢰성 있는 데이터 전송
- 데이터를 세그먼트 단위로 전송하며, 가상회선을 통해 순서를 보장합니다.
TCP 연결 설정: 3 Way Handshake 🔄
-
클라이언트 → 서버: SYN
- SYN 패킷에는 클라이언트가 보낼 첫 데이터의 초기 시퀀스 번호(ISN)가 포함됩니다.
- 이 번호는 이후 데이터 전송 시, 데이터의 순서를 추적하는 기준이 됩니다.
-
서버 → 클라이언트: SYN-ACK
- 서버는 클라이언트의 SYN을 받고, 자신의 초기 시퀀스 번호(ISN)를 포함한 SYN-ACK 패킷을 보냅니다.
- 또한, ACK 번호로는 클라이언트가 보낸 시퀀스 번호에 1을 더한 값을 전달합니다.
- ACK 번호의 의미: 클라이언트가 지금까지 받은(또는 기대하는 다음) 바이트 번호를 의미하며, 연결의 신뢰성을 보장합니다.
-
클라이언트 → 서버: ACK
- 클라이언트는 서버가 보낸 SYN-ACK를 받고, ACK 패킷을 전송합니다.
- 이때, ACK 패킷의 번호는 서버의 시퀀스 번호에 1을 더한 값을 포함하여, 서버가 보낸 데이터(또는 SYN)에 대해 확인 응답을 합니다.
→ 이 과정을 통해 양측은 연결이 성립되며, 이후 데이터를 신뢰성 있게 전송할 수 있습니다.
- UDP (User Datagram Protocol)
- 비연결형이며, 신뢰성 보장이 없는 데이터 전송을 제공합니다.
- 데이터그램 단위로 전송되며, 각 패킷은 독립적으로 처리되어 순서가 보장되지 않습니다.
가상회선 vs. 데이터그램
- 가상회선(Virtual Circuit):
특정 회선을 따라 패킷들이 순서대로 전달되어 데이터의 순서와 신뢰성이 보장됩니다. (TCP에 적용)
- 데이터그램(Datagram):
각 패킷이 독립적으로 전송되어 도착 순서가 섞일 수 있습니다. (UDP에 적용)
TCP 연결 해제: 4 Way Handshake ✂️
- 클라이언트 → 서버: FIN
- 클라이언트가 연결 종료 요청을 보내면 FIN_WAIT1 상태가 됩니다.
- 서버 → 클라이언트: ACK
- 서버는 FIN을 확인하고 ACK를 보냅니다.
- 클라이언트는 FIN_WAIT2 상태로 전환하며, 서버는 CLOSE_WAIT 상태가 됩니다.
- 부가 설명:
- FIN_WAIT1: 클라이언트가 FIN을 보낸 후 서버의 ACK를 기다리는 상태입니다.
- FIN_WAIT2: 클라이언트가 ACK를 받은 후 서버의 FIN을 기다리는 상태입니다.
- 서버 → 클라이언트: FIN
- 서버가 연결 종료를 요청하면 클라이언트는 TIME_WAIT 상태가 됩니다.
- 클라이언트 → 서버: ACK
- 클라이언트가 서버의 FIN에 대한 ACK를 보내면 서버는 CLOSED 상태가 되고, 일정 시간 후 클라이언트도 CLOSED 상태로 전환됩니다.
- TIME_WAIT 상태는 지연된 패킷을 처리하거나 네트워크상의 패킷 중복을 방지하기 위해 존재합니다.
인터넷 계층 🌍
인터넷 계층은 장치로부터 받은 네트워크 패킷을 IP 주소의 목적지로 전달합니다.
이 계층은 데이터 전송의 신뢰성을 보장하지 않는 비연결형 특성을 가집니다.
주요 프로토콜:
- IP: 패킷 전달을 위한 주소 지정 및 라우팅
- ARP (Address Resolution Protocol):
- 부가 설명: ARP는 논리 주소(IP 주소)를 물리 주소(MAC 주소)로 변환하는 역할을 수행합니다.
- ICMP: 네트워크 상태 및 오류 메시지 전달
링크 계층 🔗
링크 계층은 물리 계층과 데이터 링크 계층을 포함하며, 실제 데이터를 전달하는 규칙과 신호 제어를 담당합니다.
이 계층은 Network Access 계층이라고도 불립니다.
- 물리 계층: 0과 1로 이루어진 데이터를 실제로 전송하는 계층
- 데이터 링크 계층: 이더넷 프레임(Ethernet Frame)을 통해 에러 검출, 흐름 제어, 접근 제어 등을 담당합니다.
프로토콜: IEEE802.3
전이중화(Full Duplex):
- 동시에 서로 송수신이 가능한 방식으로, 송신과 수신 통로가 분리되어 있습니다. 🔄
반이중화(Half Duplex):
- 한 경로를 통해 송수신하며, 한 번에 한 방향으로만 통신합니다.
- 대표적으로 CSMA/CD (유선 LAN: 충돌 발생 시 재전송)와 CSMA/CA (무선 LAN: 충돌 사전 회피) 방식이 있습니다.
유선 및 무선 LAN 📶
유선 LAN 케이블
- 트위스트 페어 케이블: 구리선 8개로 구성되며, 일반적으로 LAN 케이블로 사용됩니다.
- 광섬유(Fiber Optic Cable):
- 부가 설명: 광섬유는 유리나 플라스틱 섬유를 통해 빛의 신호로 데이터를 전송합니다.
- 레이저나 LED를 사용하며, 장거리 및 고속 통신에 적합합니다.
무선 LAN
- 와이파이(Wi-Fi): 무선 접속 장치(공유기)를 통해 연결됩니다.
- BSS (Basic Service Set):
- 부가 설명: BSS는 하나의 무선 액세스 포인트(AP)와 그에 연결된 클라이언트들의 집합입니다.
- ESS (Extended Service Set):
- 부가 설명: 여러 개의 BSS가 연속적으로 연결되어 넓은 영역의 무선 네트워크를 구성합니다.
계층간 데이터 송수신 과정 🔄
네트워크 계층 구조에서 데이터는 한 계층에서 다른 계층으로 전달될 때 각 계층의 PDU (Protocol Data Unit)를 사용합니다.
- 애플리케이션 계층:
- 데이터는 메시지(Message) 형태로 준비됩니다.
- 전송 계층:
- 메시지를 세그먼트(Segment) (TCP) 또는 데이터그램(Datagram) (UDP)으로 캡슐화합니다.
- 인터넷 계층:
- 세그먼트 또는 데이터그램을 패킷(Packet) 형태로 캡슐화하여 IP 주소 기반 라우팅을 진행합니다.
- 링크 계층:
- 패킷을 프레임(Frame)으로 변환하여 물리 계층으로 전송하고, 실제 비트로 전송합니다.
각 계층은 자신의 헤더(header)를 추가하며, 수신 측에서는 이 헤더들을 차례로 제거해 원본 데이터를 복원합니다.
PDU (Protocol Data Unit) 📦
PDU는 각 계층에서 데이터를 전달할 때 사용되는 단위입니다.
구성은 헤더(header)와 페이로드(payload) (실제 데이터)로 이루어집니다.
계층별 PDU:
- 애플리케이션 계층: 메시지(Message)
- 전송 계층: 세그먼트(Segment) 또는 데이터그램(Datagram)
- 인터넷 계층: 패킷(Packet)
- 링크 계층: 프레임(Frame) (물리 계층에서는 비트(Bit))