DEVELOPER NOTES

글로 정리하는 개발 노트

Astro, TypeScript, 그리고 웹 플랫폼에 대한 실험과 기록.

주소창 한 줄의 여정 - 밑단을 잇는다

Network · HTTP

주소창 한 줄의 여정 - 밑단을 잇는다

주소창에 한 줄 치고 엔터를 누르면, 이름을 주소로 바꾸고 기계를 찾고 문을 두드리고 자물쇠를 채운 뒤에야 HTTP가 오간다. 지금까지의 밑단을 통째로 이어 그 여정을 따라가며, 어디서 느려지는지까지 짚고 시리즈를 닫는다.

·패킷은 어떻게 도착하나 8편
내 컴퓨터는 왜 직접 안 닿나 - NAT

Network · NAT

내 컴퓨터는 왜 직접 안 닿나 - NAT

집 안 기기 수십 개가 공인 IP 하나를 나눠 쓴다. 공유기가 나갈 때 주소를 바꿔치기하고 돌아올 때 되돌리는 NAT 덕이다. 이게 IPv4 부족을 버티게 하는 동시에, 왜 밖에서 내 기계를 직접 못 부르는지도 설명한다.

·패킷은 어떻게 도착하나 7편
그냥 던진다 - UDP

Network · UDP

그냥 던진다 - UDP

TCP의 악수와 재전송은 신뢰성을 주지만 그만큼 느리다. UDP는 그 안전장치를 다 버리고 그냥 던진다. 도착 보장도 순서 보장도 없는 대신 빠르고 단순한 이 방식이, 왜 영상·게임·HTTP/3에 맞는지.

·패킷은 어떻게 도착하나 6편
안 끊기고 순서대로 오게 - TCP

Network · TCP

안 끊기고 순서대로 오게 - TCP

인터넷은 패킷을 잃기도 뒤섞기도 한다. 그런데 웹페이지는 한 글자도 안 틀리고 순서대로 도착한다. 그 신뢰성을 맡는 TCP - 먼저 악수로 연결을 맺고, 조각마다 받았다는 확인을 주고받으며, 잃은 건 다시 보낸다.

·패킷은 어떻게 도착하나 5편
한 기계 안에서 어느 프로세스로 - 포트

Network · Port

한 기계 안에서 어느 프로세스로 - 포트

IP 주소는 기계까지만 데려다준다. 그 기계 안에는 웹 서버, DB, SSH가 함께 도는데, 도착한 패킷이 어느 프로세스로 가야 하나. 그걸 정하는 문 번호가 포트다. 소켓과 파일 디스크립터로 어떻게 프로세스에 이어지는지까지.

·패킷은 어떻게 도착하나 4편
이름을 주소로 바꾼다 - DNS

Network · DNS

이름을 주소로 바꾼다 - DNS

우리는 142.250.72.14가 아니라 google.com을 친다. 그 이름을 IP 주소로 바꿔주는 게 DNS다. 이름을 뒤에서부터 단계로 찾아 내려가는 조회, 그리고 캐싱과 TTL이 왜 DNS 변경을 늦게 퍼지게 하는지.

·패킷은 어떻게 도착하나 3편
패킷은 어느 기계로 가나 - IP 주소

Network · IP

패킷은 어느 기계로 가나 - IP 주소

편지를 보내려면 주소가 필요하듯, 패킷도 목적지 기계의 주소가 필요하다. IP 주소가 무엇이고, 패킷이 어떻게 라우터를 하나씩 건너 목적지까지 가는지 - 라우터가 전체 길을 모르고도 배달이 되는 이유.

·패킷은 어떻게 도착하나 2편
HTTP 밑에 무엇이 있나 - 네트워크 계층

Network · Layers

HTTP 밑에 무엇이 있나 - 네트워크 계층

HTTP는 네트워크의 맨 위 한 겹일 뿐이다. 그 밑에 데이터를 실어 나르는 TCP가 있고, 또 그 밑에 기계를 찾아가는 IP가 있다. 봉투 안의 봉투처럼 층으로 쌓인 이 구조를 보면, 왜 각 층을 따로 갈아끼울 수 있는지가 풀린다.

·패킷은 어떻게 도착하나 1편
스레드가 왜 멈춰 서 있나 - 블로킹 I/O

OS · Blocking IO

스레드가 왜 멈춰 서 있나 - 블로킹 I/O

파일이나 네트워크를 기다리는 동안 스레드는 그 자리에 멈춰 선다. 이 블로킹이 왜 스레드 풀과 연결 풀의 크기를 정하고, 비동기가 왜 나왔는지 - 밑바닥의 OS를 다시 백엔드 개념으로 이으며 시리즈를 닫는다.

·프로그램은 어떻게 도나 8편