우리가 항상 사용하는 웹은 어떻게 만들어질까. 개발자가 아니라면 단순 호기심에 그칠수있고, 개발자라면 "클라이언트가 페이지를 요청하면 서버에서 처리하는식으로 구성되어있겠지"라고 대애충 얼버무리는 경우가 있다. 사실 일명 짬킹이 위와같이 설명하는것은 다 알아서인데, 나처럼😗 잘 모르는데 대애충 알고 넘어가는 것은 개발자로서 큰 독이다. 그 약을 처방할 수있는 능력을 갖추는 그날까지 함께 해독해보자.
HyperText Transfer Protocol 다. 하이퍼 텍스트 전송 프로토콜? 음.. 사실 안 와닿는다. 여기서 확실히 아는건 transfer이고, protocol은 학부시절에 약속이라고 교수님께서 알려주신적이 있는데 흔히말해 통신 규약이라고한다. 그렇다 http는 전송 약속이다.
여기서 정리해보면 하이퍼텍스트를 전송하는 통신 규약인데, 하이퍼텍스트는...
읍읍 🤐🤐
즉(??), Http는 클라이언트가 데이터를 요청(request)하면 서버가 데이터를 응답(response)하는 구조를 가지고있다. 우리가 웹을 통해서보는 동영상, 이미지, 데이터 등을 자연스럽게 보고있었지만 사실 서버에 요청을하고 서버에서 응답을하는 과정을 거치고있었다.
아하 그렇구나.. 아뉘 그런데 어떤형식으로 데이터를 요청할까? 생각해보니 데이터를 받기만하나? 아니다 로그인 및 회원가입 또는 블로그 포스팅과 같이 글을 작성할때는 클라이언트가 데이터를 보낼수도있다.
어찌되었든 데이터를 주고받아야하는데 보통 JSON형식이나 XML형식으로 데이터를 주고받는다. 이것을 다루는 내용은 주제에서 벗어나기때문에 넘어가겠다.😝
TCP/ IP를 이용하는 응용 프로토콜이다.
TCP / IP : 컴퓨터간 데이터를 전송할 수 있도록 하는 통신 규약
비연결성(Stateless), 단어만 봤을 때 또 두루뭉실하게 다가온다. 비연결성은 한마디로 같은 요청에 대해서 클라이언트가 요청을 계속한다면 서버는 계속 응답을 해야한다는 내용이다. 즉, 저장이 안된다는 말이다. 사실 이 특성으로 인한 몇가지 특징들이 있지만, 여기서는 이것만 알아두자.
클라이언트가 서버에게 요청을 하는것에대한 상태코드가 존재한다.
1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.
위와같이 백번대 별로 특징이 있는데, 웹 개발을하다보면 404
,403
,500
이 세가지 상태 코드를 많이 접한다.
403
: 페이지 접근 불가. 서버에 정상 접근했지만 이후의 권한이 없음
404
: url 정보 잘못되었을때 등장. 한마디로 없는 페이지
500
: 서버 오류. 보통 DB작업할때 잘못된 sql을 작성할때 발생
200
: 성공. 문제없음!