HTTP는 HyperText Transfer Protocol의 약자이다.
단어 별로 뜯어보자면,
HyperText: 문서와 문서가 링크로 연결되어 있는 (클릭하면 다른 페이지로 연결) 텍스트를 뜻한다. HTML에서의 HT가 HyperText의 약자로, HTTP는 HTML로 만든 웹페이지를 어떻게 주고받을지에 대한 약속이다.
Transfer : 전송한다는 뜻. 우리가 만든 웹사이트는 꽁꽁 숨겨두는 게 아니라, 다른 컴퓨터에게 전송해야한다.
Protocol : 협약, 통신 규약이라는 의미. 멀리 떨어진 컴퓨터끼리 어떻게 파일을 전송할지에 대한 약속이다.
한 마디로 표현하자면, HTTP는 컴퓨터끼리 HTML파일을 주고받기 위한 소통방식/약속이다.
HTTP 통신의 소통 사이클에선 요청과 응답이 핵심이다.
아주 간단하게 예를 들자면, 아래의 구조인 것.
나 (요청) : 아이유 뮤직비디오 영상 주세요
유투브 (응답) : 아이유 뮤직비디오 영상 드려요
요청/응답 구조는 모두 메세지, 그러니까 텍스트 구조로 이루어져있다.
각각의 메세지 구조를 간략하게 알아보자.
요청의 첫 번째 줄로, 아래의 세 부분으로 이루어져 있다.
예시
GET /login HTTP/1.1
의 해석 :
GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다.
요청의 메타데이터 (데이터에 대한 데이터)를 담고 있는 부분으로,
{key : value}
의 형태를 가진다.
예시
Headers : {
Content-Length : 30
}
요청의 실제 내용 (요청 메소드에 따라 존재하지 않을 수도 있다)
예시
Body : {
"username" : "donghee"
"password" : "0000"
}
요청의 첫 번째 줄로, 상태를 나타낸다.
예시
HTTP/1.1 404 Not Found
여기서 대표적인 Status Code의 종류를 알아보자.
Success
200 : OK
201 : Created
Error
400 : Bad Request (ex.로그인 자체 실패)
401 : Unauthorized (ex. 무료회원으로 로그인은 했으나 유료회원 전용 페이지에 접속하려 할 때)
403 : Forbidden
404 : Not Found (ex.요청한 페이지가 없을 때)
Server Error
500 : Internal Server Error
Request 메세지의 Headers와 일반적으로 동일하다.
Request 메세지의 Body와 일반적으로 동일하다.
사람과 사람의 커뮤니케이션 방법이 중요하게 여겨지듯이
소통 매개체가 텍스트로 한정되었을 뿐, 컴퓨터끼리의 소통 방식도 중요함을 잊지말자😎