diff --git a/README.md b/README.md index 4253b8c..9af0650 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ | 3 | Ch.7 | IO 병목, 어떻게 해결하지 | 손주선 | | 4 | Ch.8 | 실무에서 꼭 필요한 보안 지식 | | | 5 | Ch.9 | 최소한 알고 있어야 할 서버 지식 | | -| 5 | Ch.10 | 모르면 답답해지는 네트워크 기초 | | +| 5 | Ch.10 | 모르면 답답해지는 네트워크 기초 | 임재인 | | 6 | Ch.11 | 자주 쓰는 서버 구조와 설계 패턴 | | --- diff --git "a/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/img.png" "b/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/img.png" new file mode 100644 index 0000000..3413117 Binary files /dev/null and "b/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/img.png" differ diff --git "a/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/network-basics.html" "b/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/network-basics.html" new file mode 100644 index 0000000..0be0276 --- /dev/null +++ "b/ch10-\353\204\244\355\212\270\354\233\214\355\201\254/network-basics.html" @@ -0,0 +1,882 @@ + + +
+ + +노드부터 프로토콜까지
실무에서 반드시 알아야 할 핵심 개념 정리
노드끼리 통신하려면 서로를 구분할 주소가 필요합니다. 그 주소 체계가 IP이고, 사람이 기억하기 쉽게 이름을 붙인 것이 도메인입니다.
+ +223.130.192.248), 각 블록 0~255www.naver.com = com(1) > naver(2) > www(3)
+ 💡 hosts 파일 위치 — Linux: /etc/hosts | Windows: C:\Windows\System32\drivers\etc\hosts
+
IP 주소는 어떻게 할당될까요? 서버처럼 항상 같은 주소가 필요한 경우도 있고, 가정용 기기처럼 접속할 때마다 자동으로 받는 경우도 있습니다.
+ +📋 DHCP 서버 (Dynamic Host Configuration Protocol)
+IP 설정을 자동으로 배포하는 서버. 가정용 공유기가 이 역할을 담당합니다.
+그런데 IP 주소라고 다 같은 게 아닙니다. 전 세계에서 접근 가능한 주소와, 특정 네트워크 안에서만 쓰는 주소가 따로 존재합니다.
+ +192.168.x.x10.x.x.x172.16.x.x ~ 172.31.x.x사설 IP는 외부 인터넷으로 직접 나갈 수 없습니다. 나가려면 공인 IP로 변환이 필요하고, 반대로 외부 요청이 내부 서버에 도달하려면 다시 사설 IP로 되돌려야 합니다.
+사설 IP ↔ 공인 IP 간 주소를 변환하는 기술. IPv4 고갈 문제를 해결하는 핵심 메커니즘입니다.
+ + +내부 → 외부: 사설 IP를 공인 IP로 변환. 공유기(라우터)가 담당.
+외부 → 내부: 공인 IP를 사설 IP로 변환. 로드밸런서·방화벽이 담당.
++ 💡 실무 예시 — musinsa.com 로 들어온 요청을 로드밸런서가 DNAT으로 여러 내부 서버에 트래픽을 분배합니다. +
+사설 IP는 외부에서 직접 접근할 수 없습니다. 그럼 개발자가 집에서 회사 서버에 안전하게 접속하려면 어떻게 해야 할까요?
+ +공용 네트워크에서 서로 다른 네트워크 간 암호화된 연결(터널)을 제공하는 기술
+ +📌 VPN이 필요한 이유
+주소 체계를 알았다면, 이제 데이터를 실제로 어떻게 주고받을지 규칙이 필요합니다. 연결을 맺고 신뢰성을 보장할 것인지, 아니면 빠른 속도를 선택할 것인지에 따라 프로토콜이 나뉩니다.
+ +3-WAY HANDSHAKE
+ +CONNECTIONLESS
+ +TCP는 신뢰성이 있지만 느리고, UDP는 빠르지만 신뢰할 수 없습니다. 둘의 장점만 합치면? 그것이 QUIC입니다.
+ + + +🔄 연결 수립 속도 개선
+TCP는 3-Way Handshake (1 RTT)와 TLS 1.2 Handshake (2 RTT)를 따로따로 수행. QUIC는 둘을 한 번에 처리합니다.
+🚧 HOL (Head-of-Line) 블로킹 해결
+HTTP/2는 TCP 위에서 멀티플렉싱을 구현했지만, TCP 레벨에서는 하나의 패킷 유실이 전체 스트림을 멈춥니다. QUIC는 스트림을 완전히 독립 처리합니다.
+ +QUIC = Quick TCP UDP Internet Connections — 왜 TCP가 아닌 UDP일까?
❌ TCP 헤더 — 너무 복잡하다
+
+ ✅ UDP 헤더 — 빈 도화지
+
+ TCP는 오랜 역사 동안 수많은 표준이 정의되고 다양한 OS·브라우저·하드웨어에 구현되어 있습니다. 각기 다른 이해관계자들의 요구사항을 동시에 충족하기도 어렵고, 수정이 사실상 불가능합니다. 그래서 하얀 도화지 같은 UDP가 선택되었고, 그 위에 혼잡 제어·흐름 제어·오류 제어 등 신뢰성 로직을 직접 구현한 것이 QUIC입니다.
+주니어 백엔드 개발자 스터디 — 10장 네트워크
+