← posts/b.log()

blog92@web:~$ cat posts/network-01-packets-and-layers.md

NETWORK5 min read

풀스택 개발자를 위한 네트워크 1장 — 네트워크의 기본 구조: 패킷, 프로토콜, 계층 모델

회선 교환과 패킷 교환의 차이에서 출발해 OSI 7계층과 TCP/IP 4계층의 대응, 캡슐화와 역캡슐화, 그리고 방화벽·로드밸런서가 모두 기준으로 삼는 5-tuple까지 정리한다.

이 시리즈는 "네트워크 엔지니어가 되기 위한" 강의가 아니라, 코드를 짜고 서버를 배포하고 장애를 추적하는 풀스택 개발자가 반드시 알아야 할 네트워크 지식을 정리한 것입니다. 모든 장은 "그래서 개발할 때 이게 어디서 튀어나오는가?"라는 질문에 답하는 방향으로 구성했습니다.

시리즈 전체 구성

  • 1장. 네트워크의 기본 구조 — 패킷, 프로토콜, 계층 모델
  • 2장. 링크 계층 — MAC, 스위치, ARP, VLAN
  • 3장. 네트워크 계층 — IP, 서브넷, NAT, 라우팅
  • 4장. 전송 계층 — TCP와 UDP, 포트, 소켓
  • 5장. DNS — 이름이 주소가 되기까지
  • 6장. HTTP — 웹의 언어와 그 진화
  • 7장. TLS와 HTTPS — 암호화와 신뢰의 구조
  • 8장. 브라우저 보안 모델 — SOP, CORS, 쿠키
  • 9장. 실시간 통신 — Polling, SSE, WebSocket, WebRTC
  • 10장. 인프라 구성요소 — 프록시, 로드밸런서, CDN, 게이트웨이
  • 11장. 컨테이너와 클라우드 네트워크
  • 12장. 네트워크 성능과 안정성 설계
  • 13장. 네트워크 보안과 폐쇄망 환경
  • 14장. 실전 트러블슈팅
  • 15장. 정리 — 풀스택 개발자 네트워크 체크리스트

들어가며 — 왜 개발자가 네트워크를 알아야 하는가

프론트엔드와 백엔드를 모두 다루다 보면, 버그의 상당수가 "코드"가 아니라 "코드와 코드 사이"에서 발생합니다.

  • 로컬에선 되는데 배포하면 API 호출이 CORS error로 막힌다.
  • Docker 컨테이너 안에서 localhost:5432로 DB에 붙으려는데 연결이 거부된다.
  • WebSocket이 정확히 60초마다 끊긴다.
  • 사내망에서만 특정 서버가 안 보인다.
  • 트래픽이 조금만 몰려도 ECONNRESET, ETIMEDOUT이 쏟아진다.

이 문제들은 모두 네트워크의 어느 계층에서 무엇이 일어나는지를 알면 5분 만에 원인을 좁힐 수 있고, 모르면 하루를 날립니다. 이 시리즈의 목표는 다음 세 가지입니다.

  1. 요청 하나가 브라우저에서 출발해 서버에 도달하고 돌아오기까지의 전체 경로를 머릿속에 그릴 수 있다.
  2. 각 구간에서 발생할 수 있는 문제를 계층별로 분리해서 진단할 수 있다.
  3. 성능·보안·안정성을 고려해 네트워크를 전제로 한 설계를 할 수 있다.

1.1 네트워크란 무엇인가

네트워크는 데이터를 주고받기 위해 연결된 장치들의 집합입니다. 핵심은 "어떻게 연결되었는가"보다 "어떤 규칙으로 주고받는가"입니다. 이 규칙을 프로토콜(Protocol) 이라고 부릅니다.

사람의 대화로 비유하면, 같은 언어(프로토콜)를 쓰고, 상대의 주소(IP)를 알아야 하며, 누구에게 하는 말인지(포트)가 명확해야 하고, 말이 제대로 전달되었는지 확인하는 방법(TCP의 ACK)이 필요합니다.

1.2 회선 교환과 패킷 교환

  • 회선 교환(Circuit Switching): 통신 전에 전용 경로를 확보. 옛날 전화망. 안정적이지만 비효율적.
  • 패킷 교환(Packet Switching): 데이터를 작은 조각(패킷)으로 나누어 각자 경로를 찾아 이동. 인터넷의 방식.

인터넷은 패킷 교환 방식이기 때문에 다음 특성이 생깁니다. 이 특성들이 이후 모든 장의 출발점입니다.

  • 패킷은 유실될 수 있다 → 재전송이 필요하다 (TCP)
  • 패킷은 순서가 뒤바뀌어 도착할 수 있다 → 순서 번호가 필요하다 (TCP)
  • 경로가 혼잡할 수 있다 → 혼잡 제어가 필요하다 (TCP)
  • 패킷에는 최대 크기가 있다 → 분할이 필요하다 (MTU)

1.3 계층 모델: OSI 7계층과 TCP/IP 4계층

복잡한 통신을 계층으로 나누면, 각 계층은 자기 역할만 책임지고 아래 계층의 세부사항은 몰라도 됩니다. HTTP는 데이터가 Wi-Fi로 가는지 광케이블로 가는지 신경 쓰지 않습니다.

OSI 7계층TCP/IP 4계층대표 프로토콜/장비데이터 단위주소
7. 응용응용HTTP, DNS, SMTP, SSH메시지URL, 도메인
6. 표현응용TLS(관점에 따라), 인코딩
5. 세션응용
4. 전송전송TCP, UDP세그먼트/데이터그램포트
3. 네트워크인터넷IP, ICMP, 라우터패킷IP 주소
2. 데이터링크네트워크 액세스Ethernet, Wi-Fi, 스위치프레임MAC 주소
1. 물리네트워크 액세스케이블, 전파, 허브비트

실무에서는 OSI의 번호를 "공용어"로 사용합니다. "L4 로드밸런서", "L7 라우팅", "L3 스위치" 같은 표현이 모두 OSI 계층 번호입니다.

1.4 캡슐화와 역캡슐화

데이터를 보낼 때 각 계층은 자신의 헤더를 붙입니다. 받을 때는 반대로 하나씩 벗겨냅니다.

text
[응용]      HTTP 메시지
[전송]      TCP 헤더 | HTTP 메시지
[네트워크]  IP 헤더 | TCP 헤더 | HTTP 메시지
[링크]      Ethernet 헤더 | IP 헤더 | TCP 헤더 | HTTP 메시지 | Ethernet 트레일러

개발자 관점의 포인트는 각 계층이 서로 다른 주소 체계를 사용한다는 점입니다.

  • 링크 계층: "바로 옆 장비"를 찾기 위한 MAC 주소
  • 네트워크 계층: "최종 목적지 컴퓨터"를 찾기 위한 IP 주소
  • 전송 계층: "그 컴퓨터 안의 어떤 프로세스"인지 찾기 위한 포트 번호
  • 응용 계층: "사람이 읽는 이름"인 도메인, URL 경로

핵심 정리: 통신 대상은 결국 (프로토콜, 출발 IP, 출발 포트, 목적지 IP, 목적지 포트) — 이른바 5-tuple로 식별됩니다. 방화벽 규칙, 로드밸런서 해싱, 커넥션 추적이 모두 이 5-tuple을 기준으로 동작합니다.

더 깊이

COMMENTS (…)

댓글을 불러오는 중이에요.

NEW COMMENT0 / 1000
⌘↵ 전송

blog92@web:~$ cd ..