Http에 대해 알아보기 앞서 웹의 구성에 대해 간략하게 알아보자.
일반적으로 웹은 클라이언트(Client)와 서버(Server)로 구성되어 있다.
클라이언트란 요청(Request)을 보내는 쪽을 의미하며 일반적으로 웹 관점에서는 브라우저를 의미한다. 그리고 서버는 요청에 응답(Response)하는 쪽을 의미하며 일반적으로 데이터를 보내주는 컴퓨터를 의미한다. 이렇게 클라이언트와 서버가 상호작용하는 과정으로 웹이 이루어진다.
HTTP란 Hyper Text Transfer Protocol의 약자이다.
여기서 Hyper Text란 무엇일까. 우리가 흔히들 말하는 하이퍼링크는 밑줄이 쳐져 있는 링크로 클릭하게 되면 해당 링크로 이동한다. 이는 자료가 연결되어 있는 참조 고리를 의미하며 이 링크를 통해 사진, 동영상 등 파일의 위치를 지정할 수 있다.
즉, 같은 의미로 HyperText란 하이퍼 링크를 통해 사용자가 한 문서에서 다른 문서로 이동할 수 있도록 하는 초월적인(Hyper) 글(Text)을 말한다.
그럼 Transfer Protocol은 무엇일까. 통신 프로토콜이란 컴퓨터 내부 또는 컴퓨터 사이에서 일어나는 데이터의 교환 방식을 정의하는 규칙 체계이다. 기기간 통신은 교환되는 데이터의 형식에 대해 상호 합의를 요구하는데 이를 정의하는 규칙의 집합을 프로토콜이라 한다.
쉽게 말해 HTTP란 웹에서 브라우저와 서버 간에 데이터를 주고받는 방식으로 조금 더 풀어보면 "나는 이렇게 줄테니 넌 이렇게 받고 난 너가 준거 그렇게 받을게" 정도가 된다.
Http 프로토콜은 아래와 같이 여러가지 특징을 가지고 있다.
[HTTPS] HTTP 통신하는 소켓 부분을 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)이라는 프로토콜로 대체한 것.
클라이언트가 서버에게 데이터를 요청하는 것은 식당에서 음식을 주문하기 위해 주문서를 작성하는 것과 같다. 웹에서는 요청하는 데이터에 특정 동작을 하기 위해서 요청 메서드(HTTP Request Method)를 이용한다.
GET : 존재하는 자원에 대한 요청 (Read)
POST : 새로운 자원을 생성 (Create)
PUT : 존재하는 자원에 대한 변경 (Update)
DELETE : 존재하는 자원에 대한 삭제 (Dlete)
HEAD : 서버 헤더 정보를 획득. GET과 비슷하지만 Response Body 반환 X
OPTIONS : 서버 옵션들을 확인하기 위한 요청. CORS에서 사용
클라이언트가 원하는 데이터에 대한 주문서를 적어서 서버에 보내듯이, 서버도 응답에 대한 정보를 담아 클라이언트로 보내는데, 이런 정보가 담긴 메시지를 HTTP 메시지라고 부른다. HTTP 메시지는 클라의이언트의 요청에 대한 HTTP 메시지와 데이터 요청에 대한 응답 HTTP 메시지가 있다.
(요청 Request)
1번줄: 바로 위에서 설명한 HTTP 요청 메서드를 맨 앞에 적고 그 뒤에는 path, 그 뒤에는 프로토콜의 종류와 버전을 적는다. (GET / HTTP/1.1)
2번 줄: 리소스를 요청하는 경로. 즉, 요청하고자 하는 서버의 도메인을 적는다. 위의 예시에서 포트 번호가 생략된 것은 80번 포트(HTTP의 기본 포트)이기 때문이다.
2번 줄 이후: HTTP Request Headers 부분이다.
(응답 Response)
1번 줄: 프로토콜의 종류와 버전, HTTP 상태 코드, HTTP 상태 메시지를 적는다. (GET / HTTP/1.1)
2번 줄 이후: HTTP Reponse Headers 부분이다.
HTTP 상태 코드(HTTP Status Code)는 클라이언트의 요청에 대한 서버의 응답(Response) 정보이다.
상태 코드를 통해 에러의 정보를 알 수 있으므로 주요한 상태 코드를 외워두면 에러 핸들링에 도움이 된다.
300번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우이다.
400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우이다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생하는데, 가장 익숙한 상태 코드는 404 코드이다. 요청한 자원이 서버에 없다는 의미를 말한다.
https://developer.mozilla.org/ko/docs/Web/HTTP
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
이미지 및 설명 1
이미지 및 설명 2