안녕하세요, 성장하는 개발자 여러분!
“네트워크는 어렵다”, “왜 인터넷이 안 될까?”라고 생각해본 적 있으신가요? 웹 애플리케이션을 만들면서도 HTTP 요청이 실제로 어떻게 전달되는지, 왜 가끔 timeout이 발생하는지 궁금했을 겁니다.
오늘은 개발자로서 꼭 알아야 할 TCP/IP와 네트워크 프로토콜에 대해 쉽고 재미있게 알아보겠습니다. 복잡한 이론보다는 실무에서 바로 써먹을 수 있는 지식 위주로 설명드릴게요!
1. 네트워크의 기본: 왜 프로토콜이 필요할까?
프로토콜이란?
프로토콜은 컴퓨터끼리 대화하는 약속입니다. 마치 한국어를 모르는 외국인과 대화하려면 영어라는 공통 언어가 필요한 것처럼, 컴퓨터들도 서로 통신하기 위한 공통 언어가 필요합니다.
사람 간 대화: 한국어, 영어, 중국어...
컴퓨터 간 대화: TCP/IP, HTTP, FTP...패킷 통신의 원리
큰 데이터를 한 번에 보내지 않고 작은 조각(패킷)으로 나누어 보냅니다. 마치 긴 편지를 여러 장의 엽서로 나누어 보내는 것과 같죠.
원본 데이터: "안녕하세요 반갑습니다"
패킷 1: "안녕" + [1/3번째 조각]
패킷 2: "하세요" + [2/3번째 조각]
패킷 3: "반갑습니다" + [3/3번째 조각]각 패킷에는 헤더라는 주소록이 붙어있어서, 목적지에서 원래 순서대로 조립할 수 있습니다.
2. OSI 7계층: 네트워크의 계층 구조
왜 계층으로 나눌까?
복잡한 네트워크 통신을 단계별로 나누어 각각의 역할을 명확히 하기 위해서입니다. 마치 택배 배송 시스템처럼 각 단계마다 담당자가 있는 것과 같습니다.
7. 응용 계층 (Application)    - 브라우저, 이메일 앱
6. 표현 계층 (Presentation)  - 데이터 암호화, 압축
5. 세션 계층 (Session)       - 연결 관리
4. 전송 계층 (Transport)     - TCP, UDP
3. 네트워크 계층 (Network)    - IP, 라우팅
2. 데이터링크 계층 (Data Link) - 이더넷, WiFi
1. 물리 계층 (Physical)      - 케이블, 전파실무에서 중요한 계층들
4계층 (전송 계층) – TCP/UDP
# TCP 연결 확인
netstat -an | grep ESTABLISHED
# 특정 포트 리스닝 확인
netstat -tulpn | grep :803계층 (네트워크 계층) – IP
# 라우팅 테이블 확인
route -n
ip route show
# 네트워크 경로 추적
traceroute google.com3. IP 주소: 인터넷의 주소 체계
IP 주소의 구조
IP 주소는 32비트의 이진수이지만, 사람이 읽기 쉽게 4개의 십진수로 표현합니다.
이진수: 11000000.10101000.00000001.00000001
십진수: 192.168.1.1IP 주소 클래스
Class A (대규모 네트워크)
- 범위: 1.0.0.0 ~ 126.255.255.255
- 네트워크부: 첫 번째 옥텟
- 호스트부: 나머지 3옥텟
- 예: 대학교, 대기업
Class B (중간 규모 네트워크)
- 범위: 128.0.0.0 ~ 191.255.255.255
- 네트워크부: 첫 번째, 두 번째 옥텟
- 호스트부: 나머지 2옥텟
Class C (소규모 네트워크)
- 범위: 192.0.0.0 ~ 223.255.255.255
- 네트워크부: 첫 번째~세 번째 옥텟
- 호스트부: 마지막 옥텟
- 예: 일반 가정, 소규모 사무실
사설 IP vs 공인 IP
사설 IP (Private IP)
Class A: 10.0.0.0 ~ 10.255.255.255
Class B: 172.16.0.0 ~ 172.31.255.255
Class C: 192.168.0.0 ~ 192.168.255.255NAT(Network Address Translation)
- 사설 IP를 공인 IP로 변환
- IP 주소 부족 문제 해결
- 보안 효과
# 내부 IP 확인
ip addr show
ifconfig
# 외부 IP 확인
curl ifconfig.me서브넷 마스크
네트워크부와 호스트부를 구분하는 역할을 합니다.
IP: 192.168.1.100
서브넷 마스크: 255.255.255.0 (/24)
네트워크 주소: 192.168.1.0
브로드캐스트 주소: 192.168.1.255
사용 가능한 호스트: 192.168.1.1 ~ 192.168.1.2544. TCP vs UDP: 신뢰성 vs 속도
TCP (Transmission Control Protocol)
특징
- 연결 지향적: 3-way handshake로 연결 확립
- 신뢰성 보장: 데이터 손실 시 재전송
- 순서 보장: 패킷이 순서대로 도착
- 속도 상대적으로 느림
3-way Handshake
클라이언트 → 서버: SYN (연결 요청)
서버 → 클라이언트: SYN+ACK (요청 수락)
클라이언트 → 서버: ACK (연결 확립)사용 예시
- HTTP/HTTPS (웹)
- FTP (파일 전송)
- SMTP (이메일)
- SSH (원격 접속)
UDP (User Datagram Protocol)
특징
- 비연결성: 사전 연결 과정 없음
- 신뢰성 미보장: 데이터 손실 가능
- 순서 미보장: 패킷 순서가 바뀔 수 있음
- 속도 빠름
사용 예시
- DNS (도메인 조회)
- DHCP (IP 자동 할당)
- 실시간 스트리밍
- 온라인 게임
# TCP 포트 80 확인
telnet google.com 80
# UDP DNS 쿼리
nslookup google.com5. 네트워크 장비: 데이터의 여행
NIC (Network Interface Card)
컴퓨터를 네트워크에 연결하는 관문 역할입니다.
# 네트워크 인터페이스 정보 확인
ip link show
ethtool eth0  # 이더넷 정보허브 (Hub)
- 리피터 역할: 신호를 그대로 증폭하여 재전송
- 콜리전 도메인: 연결된 모든 장비가 하나의 충돌 영역
- 단점: 대역폭 공유, 보안 취약
- 현재: 거의 사용하지 않음 (스위치로 대체)
스위치 (Switch)
허브와의 차이점
- MAC 주소 학습: 어떤 포트에 어떤 장비가 연결되어 있는지 기억
- 콜리전 도메인 분리: 각 포트가 독립적인 충돌 영역
- 전이중 통신: 동시에 송신과 수신 가능
스위치의 동작 과정
- Learning: MAC 주소를 배우고 테이블에 저장
- Flooding: 모르는 주소면 모든 포트로 전송
- Forwarding: 아는 주소면 해당 포트로만 전송
- Filtering: 같은 세그먼트 내 통신은 차단
# MAC 주소 테이블 확인 (스위치에서)
show mac address-table
# ARP 테이블 확인 (PC에서)
arp -a
ip neigh show라우터 (Router)
역할
- 브로드캐스트 도메인 분리: 네트워크를 논리적으로 분할
- 경로 결정: 최적의 경로로 패킷 전송
- 보안: 패킷 필터링, 방화벽 기능
기본 게이트웨이 (Default Gateway)
# 기본 게이트웨이 확인
route -n | grep 0.0.0.0
ip route | grep default
# 게이트웨이 연결 테스트
ping 192.168.1.16. 실무 네트워크 진단 도구
기본 연결성 테스트
# 기본 ping 테스트
ping google.com
# 패킷 손실률과 RTT 확인
ping -c 10 google.com
# IPv6 ping
ping6 google.com경로 추적
# 경로 추적 (Linux/Mac)
traceroute google.com
# 경로 추적 (Windows)
tracert google.com
# MTR (지속적인 경로 추적)
mtr google.com포트 연결 테스트
# 특정 포트 연결 테스트
telnet google.com 80
nc -zv google.com 80
# 여러 포트 스캔
nmap -p 22,80,443 google.comDNS 조회
# 기본 DNS 조회
nslookup google.com
dig google.com
# 특정 레코드 타입 조회
dig google.com MX
dig google.com AAAA네트워크 상태 모니터링
# 활성 연결 확인
netstat -tuln
ss -tuln
# 대역폭 사용량 모니터링
iftop
nethogs
# 실시간 네트워크 통계
watch -n 1 cat /proc/net/dev7. 실무 문제 해결 가이드
문제 1: “인터넷이 안 됩니다”
진단 순서
# 1. 로컬 인터페이스 확인
ip addr show
# 2. 게이트웨이 연결 확인
ping 192.168.1.1
# 3. DNS 서버 확인
ping 8.8.8.8
# 4. 도메인 해석 확인
nslookup google.com
# 5. 외부 연결 확인
ping google.com문제 2: “서버에 연결이 안 됩니다”
# 포트 열림 확인
telnet server-ip 80
# 방화벽 확인
sudo iptables -L
sudo firewall-cmd --list-all
# 서비스 상태 확인
sudo systemctl status nginx
sudo netstat -tulpn | grep :80문제 3: “네트워크가 느립니다”
# 대역폭 테스트
speedtest-cli
# 네트워크 지연 확인
ping -c 100 google.com | tail -1
# 경로상 병목 지점 확인
mtr google.com8. 개발자를 위한 네트워크 최적화 팁
HTTP 성능 최적화
# Keep-Alive 연결 확인
curl -I -H "Connection: keep-alive" http://example.com
# 압축 확인
curl -H "Accept-Encoding: gzip" -I http://example.comDNS 최적화
# DNS 캐시 플러시
sudo systemctl flush-dns  # Linux
sudo dscacheutil -flushcache  # Mac
# 빠른 DNS 서버 사용
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf로드밸런싱과 CDN
// Node.js에서 클러스터링
const cluster = require("cluster");
const numCPUs = require("os").cpus().length;
if (cluster.isMaster) {
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
} else {
  // 워커 프로세스
  require("./app.js");
}마치며: 네트워크 마스터로의 여정
오늘 배운 내용을 정리하면:
- 프로토콜은 컴퓨터 간의 약속
- TCP는 신뢰성, UDP는 속도
- IP 주소는 인터넷의 주소
- 스위치는 MAC 주소, 라우터는 IP 주소로 동작
- 문제 발생 시 체계적인 진단이 중요
실무에서 기억할 점
- 단계별 진단: 물리 계층부터 응용 계층까지 순차적으로
- 로그 확인: 모든 문제의 답은 로그에 있다
- 모니터링: 평상시 네트워크 상태를 파악해두자
- 백업 경로: 중요한 서비스는 이중화 구성
네트워크는 한 번에 다 이해하기 어려운 분야입니다. 하지만 오늘 배운 기초를 바탕으로 실무에서 하나씩 경험해 나가다 보면, 어느새 네트워크 전문가가 되어 있을 거예요!
기억하세요: 네트워크 문제의 80%는 기본기로 해결됩니다. 🌐
 

답글 남기기