웹(Web) - 클라이언트와 서버, HTTP
그렇다면 Web에서는 정보를 어떻게 주고 받을까?
클라이언트(Client) & 서버(Server)
네트워크로 연결된 두 대의 컴퓨터를 가정하자
컴퓨터1이 컴퓨터2에게 정보를 요청하고 컴퓨터2가 이에 맞춰 응답을 한다.
결과는 둘중 하나일 것이다.
컴퓨터2: 요청하신 정보가 있네요! or 요청하신 정보가 없네요..
이 때 정보를 요청한 컴퓨터1은 클라이언트(Client), 정보를 제공하는 컴퓨터2는 서버(Server)가 된다.
우리가 흔히 말하던 (특히 게임에서!) 클라이언트와 서버의 개념과 크게 다르지 않다. 아니 같다.
즉 웹서핑에서 인터넷 쇼핑과 게임에 이르기까지 우리가 인터넷 네트워크를 이용한 전반적인 모든 행위는
클라이언트와 서버의 응답과 요청의 연속이었던 것
문제는 막연하게 정보를 요청하고 무질서하게 정보를 보낼 수는 없는 노릇이다.
승인된 요청자에게만 제공해야하는 민감한 정보를 요청한 클라이언트에게 보낼지 말지,
지금의 인코딩 형태로 클라이언/서버에 보내도 괜찮을지 등
이를 위해 새로 개념이 등장하는데 바로
HTTP (Hypertext Transfer Protocol)
클라이언트와 서버가 하이퍼 텍스트 형태로 송수신하기로 한 약속이다.
위의 예시에서 클라이언트인 컴퓨터1이 컴퓨터2에게 정보를 요청하는 것을 HTTP 요청(Request)라고 한다.
반대로 서버인 컴퓨터2가 컴퓨터1에게 응답(정보가 있든 없든)하는 것을 HTTP 응답(Reponse)라고 한다.
HTTP는 택배와 크게 다르지 않은데
택배 송장에는 보내는 사람/받는 사람 그리고 내용물이 적혀있는데
HTTP는 요청/응답 모두 Head와 Body로 나눌 수 있으며
헤드에는 보내는 사람, 받는 사람, 받는 방법에 대한 통신에 대한 정보가
바디에는 원하는 정보의 내용 그 자체가 담겨있다.
크롬이나 엣지, 파이어폭스 같은 웹브라우저의 개발자 도구에서 볼 수 있었던
Headers의 Request Headers가 바로 헤드
대체로 우리가 요청 즉, Request시에는 바디에는 별다른 내용이 없이 헤드만 보내고
응답 Response시에는 헤드에 '200 OK'가 적힌 상태로 바디에 원하는 정보들이 담겨오는데
이는 절대적이지 않으며 당연히 요청시에도 바디를 보내고 응답시 헤드가 '200 OK' 사인이 아닌 상태로
원하는 정보를 제공받지 못하는 경우도 있다. 가장 대표적인 것이 우리가 흔히 겪었던 404 Error