2. 네트워크 기초
이번 주에는 네트워크의 핵심 개념들을 배워요. AWS에서 VPC를 설계하고, Security Group을 설정하고, Kubernetes에서 Service 네트워킹을 이해하려면 이번 주 내용이 기반이 됩니다.
목표는 OSI 7계층 같은 복잡한 내용들을 외우는 게 아니에요. “왜 내 서버에 접속이 안 되지?“를 스스로 디버깅할 수 있는 능력을 키우는 게 목표입니다.
이번 주차부터는 인터넷 등에서 여러 정보를 찾아보셔야 할 것입니다. 이왕이면 영어로 검색하시고, 네이버 블로그나 티스토리 등 개인 블로그들은 정보의 질이 그다지 좋지 않으니 거르세요. 최대한 원문을 찾아보시고, 읽기 힘들다면 번역기나 AI에게 번역을 요청하는걸 추천드립니다. 이 문서에서 제시된 모든 자료를 다 읽을 필요는 없습니다. 직접 찾아보는 경험이 더 도움이 될 거예요!
공부할 내용
아래 주제들을 공부하세요. 각 주제별로 참고 자료를 달아뒀지만, 자료가 안 맞으면 직접 검색해서 자기에게 맞는 걸 찾아도 좋아요.
1. IP 주소와 서브넷 (CIDR)
이 부분이 이번 주에서 가장 중요해요. AWS VPC 설계가 문자 그대로 “CIDR 범위 위에 서브넷을 나누는 것"이기 때문이에요.
아래 질문에 답할 수 있을 때까지 공부하세요:
- IP 주소에서 네트워크 부분과 호스트 부분은 어떻게 구분하나?
/24는 IP 몇 개를 담을 수 있나?/26은? 일반화하면?10.0.0.0/8,172.16.0.0/12,192.168.0.0/16은 뭐가 특별한가? 왜 존재하나?
참고 자료
- AWS “CIDR이란?”: CIDR 블록, 표기법, IP 주소 체계를 설명합니다.
- Cloudflare “서브넷이란?”: 서브넷과 서브넷 마스크를 설명합니다.
- Practical Networking “Subnetting Mastery” (영상 시리즈): 서브넷을 제로부터 마스터까지 7편으로 설명합니다.
- 연습 사이트(https://subnetipv4.com/)도 함께 제공돼요.
- DigitalOcean “IP Addresses, Subnets, and CIDR” (글): IP 주소 구조, 서브넷 마스크, CIDR 표기법을 체계적으로 설명합니다.
- Subnet Calculator: CIDR 계산기. 직접 입력해보면서 감을 잡아보세요.
2. DNS
브라우저에 google.com을 입력하면 어떤 일이 일어나는지 추적해보세요. 로컬 캐시부터 루트 서버까지 전체 흐름을 이해하는 게 목표입니다.
알아야 할 것: A 레코드, CNAME 레코드, TTL의 의미.
참고 자료
- Cloudflare “DNS란 무엇인가?”: 깔끔하게 정리된 DNS 설명입니다.
- How DNS Works (인터랙티브 만화): DNS 해석 과정을 단계별로 시각적으로 보여주는 웹 만화입니다.
- Mess with DNS: 테스트 도메인에 직접 DNS 레코드를 설정하며 실험할 수 있는 무료 놀이터입니다.
- Computerphile “How DNS Works” (영상): DNS의 계층 구조와 해석 과정을 설명합니다.
3. 포트와 소켓
하나의 서버에서 SSH, HTTP, Node.js가 동시에 돌아갈 수 있는 이유가 뭔지 알아보세요.
특히 아래 차이를 반드시 이해하세요. 이걸 모르면 Docker와 Kubernetes에서 반드시 문제를 만나요:
127.0.0.1에 bind한 서버 vs0.0.0.0에 bind한 서버 — Session 1 실험에서127.0.0.1로 bind했을 때 외부 접속이 안 됐던 이유가 이거예요!
참고 자료
- 널널한 개발자 “Port와 Socket” (약 12분): 포트와 소켓의 관계를 명확하게 설명합니다.
- Baeldung “Port vs Socket” (글): 포트와 소켓의 차이를 다이어그램과 함께 설명합니다.
4. HTTPS와 TLS (개념만)
HTTP와 HTTPS의 차이, TLS 인증서가 하는 역할을 이해하면 충분해요.
참고 자료
- Cloudflare “HTTPS란?”: HTTPS의 동작 원리와 HTTP와의 차이를 설명합니다.
- Cloudflare “TLS란?”: TLS 핸드셰이크와 암호화 과정을 상세히 설명합니다.
더 깊이 공부하고 싶다면
네트워크 전체 흐름을 처음부터 끝까지 이해하고 싶다면 아래 자료를 추천합니다.
- Ben Eater “Networking Tutorial” (영상 시리즈): 물리 계층부터 TCP 연결까지 13편에 걸쳐 실제 패킷을 분석하며 설명합니다.
- Stanford “How Does the Internet Work?” (글): IP, DNS, 라우팅, 프로토콜 스택을 하나로 엮어 설명하는 Stanford 강의 자료입니다.
프로젝트 실습
실습 A: 네트워크 탐색 (서버에서)
실습 서버에 SSH로 접속한 뒤, 아래 명령어들을 실행하고 결과를 이해해보세요.
# 내 서버의 네트워크 상태 파악
ip addr show
ip route show
cat /etc/resolv.conf
ss -tlnp각 명령어의 결과를 보고 아래 질문에 답해보세요:
- 네트워크 인터페이스가 몇 개인가요?
lo와eth0의 차이는? - default gateway의 IP는 무엇이고, 이것이 하는 역할은?
- DNS 서버는 어디를 가리키고 있나요?
- Session 1에서 만든 서버가 보이나요? 어떤 주소에 bind되어 있나요?
# DNS 해석 과정을 직접 추적해보세요
dig google.com A
dig +trace google.comdig +trace의 결과에서 루트 서버 → TLD 서버 → 권한 서버로 이어지는 흐름이 보이나요?
# 외부까지 몇 개의 네트워크 장비를 거치는지 확인
traceroute google.com실습 B: CIDR 계산 연습
계산기 없이 먼저 풀어보고, CIDR Calculator로 검증해보세요.
10.0.0.0/24에는 몇 개의 IP가 들어가나요?10.0.1.50은10.0.1.0/26범위 안에 있나요?10.0.1.100은10.0.1.0/26범위 안에 있나요?10.0.0.0/16범위를/24서브넷으로 나누면 몇 개의 서브넷이 만들어지나요?- AWS VPC를
10.0.0.0/16으로 만들고, Public Subnet 2개 + Private Subnet 2개를 만들려고 해요. 각 서브넷에 256개의 IP를 담으려면 CIDR을 어떻게 잡아야 할까요? 직접 설계해보세요.
실습 C: 포트와 바인딩 실험
Session 1에서 만든 Node.js 서버의 listen 주소를 바꿔가면서 실험해보세요.
0.0.0.0:3000으로 실행한 뒤,localhost,127.0.0.1, 서버의 실제 IP 각각으로curl을 보내보세요.127.0.0.1:3000으로 바꿔서 같은 테스트를 해보세요. 어떤 것이 안 되나요? 왜?ss -tlnp로 두 경우의 차이를 확인해보세요.
심화: 방화벽 (ufw) 실습 (선택)
방화벽의 핵심 개념 네 가지를 이해하세요: 인바운드 vs 아웃바운드, Stateful vs Stateless.
이 구분이 중요한 이유: AWS에서 Security Group(Stateful)과 NACL(Stateless)이 다르게 동작해요. Stateful이 뭔지 모르면 “응답이 왜 안 오지?“로 한 시간을 날릴 수 있어요.
참고 자료
- Baeldung “Stateless vs Stateful Firewalls” (글): Stateful/Stateless 방화벽의 차이를 벤더 중립적으로 설명합니다.
- AWS “VPC 보안”: Security Group(Stateful)과 NACL(Stateless)의 차이를 비교하는 공식 문서입니다.
ufw enable 전에 반드시 SSH 포트를 허용하세요! 안 그러면 서버에서 잠겨요.직접 실험해볼 것:
ufw를 활성화하고 3000번 포트만 열어보세요.- 외부에서 3000번과 8080번으로 각각 접속해보세요. 차이가 나나요?
- 3000번 규칙을 삭제하면 어떻게 되나요?
- 끝나면 원상복구하세요.