웹 브라우저의 주소창에 URL을 입력하고 엔터키를 누르면 짧은 순간에 데이터를 보여주는 컴퓨터와 데이터를 저장하는 컴퓨터 등 여러 요소 사이의 통신이 이루어진다. 이러한 웹 동작에 필요한 각 요소와 그 사이 상호작용을 정의해 놓은 것을 웹 애플리케이션 아키텍처라고 한다. 웹 클라이언트, 그리고 웹 서버스테이크 맛집인 아웃백에 들어갔다고 생각하자. 우리는 종업원분께 스테이크를 주문하고 종업원은 요리사에게 주문 내역을 전달한다. 요리사는 주문이 들어온 음식의 레시피에 맞게 음식을 조리하고 완성된 음식을 종업원에게 전달하고, 종업원은 우리에게 스테이크를 대접할 것이다. 이때 우리의 주문을 확인한 종업원을 웹 클라이언트, 주문 내역을 받아 요리를 만다는 요리사를 웹 서버라 볼 수 있다. 이 두 프로그램의 목적은..
DNS
URL을 웹 브라우저의 주소창에 입력한다. 웹 브라우저가 URL을 해석 후 문법에 맞지 않는다면 검색엔진을 이용해 검색한다. 문법에 맞으면 URL의 호스트 부분을 인코딩한다. HSTS(HTTP Strict Transport Security) 목록을 확인하고 있으면 HTTPS로, 없다면 HTTP로 요청한다. DNS(Domain Name Server) 조회 브라우저/로컬 캐시를 확인해서 도메인에 해당하는 IP가 있는지 확인한다. 없다면 OS에게 DNS 서버에 요청을 지시 DNS 서버는 해당 도메인에 해당하는 IP를 돌려준다 (HTTP 요청) TCP 3-way handshake과정을 통해 연결을 설정한다. 클라이언트가 서버에게 연결 요청 (SYN 패킷) 서버가 클라이언트에게 요청을 수락하고 연결을 설정한다는 ..