개발 공부를 하다 보면 CS(Computer Science) 지식의 중요성을 느끼는 순간이 오곤 한다. 특히 프로젝트에서 인프라를 담당해서 배포를 하다보니 종종 이게 도대체 어떻게 동작하고 통신은 어떻게 하는지 궁금증이 생겼다.
컴퓨터 네트워크란 컴퓨터, 서버, 라우터, 스위치 등 네트워크 기능을 갖춘 장치(Device)들이 서로 연결되어 통신하고 데이터를 교환할 수 있도록 구성된 시스템을 말한다.
오늘은 IP 혼자서는 해결할 수 없는 문제들, 그리고 이를 해결하기 위해 등장한 전송 계층(특히 TCP/UDP), '포트(Port)'라는 개념, 그리고 곁다리로 알아두면 유용한 NAPT, 포트 포워딩, ICMP까지 한번 짚어보겠습니다.
'물건 제대로 갔는지', '너무 빨리 보내서 받는 사람이 힘들어하진 않는지' 등을 꼼꼼히 챙기거나, 혹은 '묻지도 따지지도 않고 최대한 빨리!' 배송하는 역할을 맡은 친구들이 바로 TCP와 UDP입니다.
오늘은 TCP가 어떻게 그토록 '믿음직한 전송'을 보장하는지, 그 핵심 비결이자 TCP의 슈퍼파워 3종 세트: 오류 제어, 흐름 제어, 혼잡 제어에 대해 깊숙이 파고들어 보겠습니다.
개발자라면 누구나 매일같이 웹과 씨름합니다. 프론트엔드든 백엔드든, API 호출 한 번, 웹페이지 로딩 한 번에도 어김없이 등장하는 기술이 바로 DNS와 HTTP죠.
오늘은 HTTP 헤더의 다양한 종류와 역할, 웹 성능을 최적화하는 캐시, 사용자의 상태를 기억하는 쿠키, 그리고 사용자에게 최적의 콘텐츠를 제공하기 위한 콘텐츠 협상까지 자세히 살펴보겠습니다.