서버와 클라이언트는 고정된 존재가 아니라, 관계에 따라 역할이 달라진다 서버와 클라이언트를 처음 배울 때는 보통 "서버는 서비스를 제공하는 쪽, 클라이언트는 서비스를 요청하는 쪽"이라고 정리한다. 이 설명 자체는 맞지만, 여기서 더 중요한 것은서버와 클라이언트가 절대적으로 고정된 역할이 아니라는 점이다. 같은 애플리케이션도 상황에 따라 어떤 순간에는 서버가 되고, 또 다른 순간에는 클라이언트가 될 수 있다. 예를 들어 사용자가 브라우저에서 구글 검색을 요청했다고 해보자. 클라이언트가 네트워크를 통해 요청을 보내면,그 요청은 방화벽이나 스위치 같은 네트워크 장비를 지나검색 서비스를 담당하는 서버로 전달된다. 이 시점에서 검색 서비스는 사용자의 요청을 받아 처리하는 입장이므로 서버가 된다. 그런데 검..
“웹 브라우저로 https://www.google.com 에 접속하면 어떤 일이 일어나나요?” 이 질문은 면접에서도 자주 등장하는 대표적인 질문이다. 그 이유는 이 질문 하나만으로도 지원자가 웹, 네트워크, 브라우저, 서버, HTTP에 대해얼마나 연결해서 이해하고 있는지를 확인할 수 있기 때문이다. 겉으로 보기에는 단순히 주소를 입력하고 화면이 뜨는 일처럼 보이지만, 실제로는 그 뒤에서 여러 단계의 과정이 순서대로 이루어진다. 브라우저로 웹사이트에 접속하는 과정 먼저 브라우저가 어떤 서버에 접속하려면 그 서버의 위치를 알아야 한다. 네트워크에서 컴퓨터나 서버를 식별할 때 실제로 사용되는 것은 IP 주소이다. IP 주소는 숫자로 이루어져 있기 때문에 사람이 기억하고 사용하기에는 불편하다. 그래서 ..
네트워크에서 서버와 클라이언트는 서비스를 주고받는 관계이다 네트워크 관점에서 서버와 클라이언트는 매우 단순하게 정리할 수 있다. 서비스를 제공하는 쪽이 서버이고, 그 서비스를 제공받는 쪽이 클라이언트다. 예를 들어 웹사이트를 운영하는 서버가 있고,사용자의 브라우저나 앱이 그 서버에 접속해 정보를 요청한다면 브라우저나 앱은 클라이언트가 된다. 이 관계에서 중요한 점은 서버는 항상 준비된 상태로 있어야 한다는 것이다. 클라이언트는 사용자가 앱을 실행할 때만 존재할 수도 있고, 요청을 한 번 보낸 뒤 사라질 수도 있다. 하지만 서버는 언제 어떤 클라이언트가 접속할지 알 수 없기 때문에,필요한 순간에 서비스를 제공할 수 있도록 계속 동작하고 있어야 한다. 결국 서버는 클라이언트의 요청을 기다리는 입장..
웹 개발은 HTTP라는 프로토콜을 통해 정보를 교환한다 웹 개발을 이야기할 때 가장 먼저 이해해야 하는 것은웹 서비스가 결국 정보를 주고 받는 방식 위에서 동작한다는 점이다. 사용자가 브라우저에서 어떤 주소에 접속하거나 버튼을 누르면, 그 순간 브라우저는 서버에게 요청을 보낸다. 그리고 서버는 그 요청을 해석해 필요한 데이터를 찾거나 처리한 뒤 다시 응답을 돌려준다. 이때 요청과 응답이 오가는 약속된 규칙이 바로HTTP(HyperText Transfer Protocol)이다. 예를 들어 로그인 버튼을 누르면 브라우저가 로그인 정보를 서버로 보내고 서버는 이를 검증한 뒤 성공 여부를 응답한다. 게시글 목록을 조회할 때도 브라우저는 목록 데이터를 요청하고, 서버는 데이터베이스에서 조회한 결과를 응답으..