HTTP(Hyper Text Transfer Protocol)란?
하이퍼텍스트를 전송하는 프로토콜로 HTML문서를 브라우저와 웹 서버가 서로 통신하기 위해 사용하는 주요 프로토콜 중 하나 입니다.
텍스트와 하이퍼텍스트의 차이
텍스트 - 문자로만 작성되어 있는 문서
하이퍼텍스트 - 문자뿐만 아니라 이미지,파일 등 다양한 텍스트가 저장되어 있는 문서
HTTP 특징
브라우저(클라이언트)에서 요청(Request)를 보내면 웹 서버는 요청을 처리하고 응답(Response)해줍니다.
기본 포트는 80번 포트이다. (HTTPS는 기본 포트가 443이다.)
연결 상태를 유지하지 않는 비상태연결성(Stateless, Connectless)프로토콜
비상태연결성(Stateless, Connectless)이란?
브라우저가 서버에 연결하고 요청해서 응답 받으면 연결을 끊어버리는 것으로 이전에 보낸 데이터 요청과 다음에 보낼 데이터 요청이 서로 관련이 없는 독립적인 형태가 됩니다.
장점 : 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고 다수의 요청 처리 및 서버 부하를 줄일 수 있습니다. 그래서 접속 유지를 최소화하고 불특정 다수를 대상으로 하는 서비스에 유리합니다.
단점 : 연결을 끊어버리기 때문에 클라이언트의 이전 상태를 알 수 없어 로그인을 해도 정보유지가 불가능합니다. 이런 단점을 해결하기 위해서 쿠키(Cookie)와 세션(Session)이 생겨났습니다.
URL(Uniform Resource Locator)이란?
서버에 자원을 요청하기 위해 입력하는 영문 주소이고 자원의 위치표시 및 하위디렉토리를 포함하는 의미입니다.
URL과 도메인의 차이
도메인 : 사람이 긴 IP주소를 이해하고 기억하기 어렵기 때문에 이를 위해 각 IP에 이름을 부여 할 수 있게 했는데, 이것을 도메인이라고 한다. - 해당 서버의 주소를 뜻함
URL : 해당 서버의 주소 + 하위 디렉토리까지 포함
HTTP 요청 메서드
앞서 살펴본 URL을 통해 서버에 특정 데이터를 요청할 수 있는데 요청하는 데이터의 특정 동작을 수행학기 위해서는 HTTP 요청 메서드(Http Request Methods)를 이용 합니다.
HTTP 주요 요청 메서드
GET: 존재하는 자원에 대한 요청
POST: 새로운 자원을 생성
PUT: 존재하는 자원에 대한 변경
DELETE: 존재하는 자원에 대한 삭제
그 외 HTTP 메서드
HEAD: 서버 헤더 정보를 획득. GET과 빗스하나 Response Body를 반환하지 않음
OPTIONS: 서버 옵션들을 확인하기 위한 요청. CORS에서 사용
HTTP 상태코드
사용자의 브라우저(클라이언트)에서 HTTP 메서드로 요청(Request)을 보내게 되면 서버에서는 응답(Response)에 대한 정보를 보내주게 되는데 그 정보 중 하나를 HTTP 상태코드라고 한다.
상태코드는 100 ~ 500까지 다양하게 있지만 그 중 주요한 상태코드 몇개만 알아보겠습니다.2xx - 성공
요청을 성공적으로 받았으며 인식했고 수용하였다
200: GET 요청에 대한 성공
204: No Content. 성공했으나 응답 본문에 데이터가 없음
205: Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
206: Partial Conent. 성공했으나 일부 범위의 데이터만 반환
3xx - 리다이렉션
요청 완료를 위해 추가 작업 조치가 필요하다
301: Moved Permanently. 요청한 자원이 새 URL에 존재
303: See Other. 요청한 자원이 임시 주소에 존재
304: Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캣이된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인
4xx - 클라이언트 에러
요청의 문법이 잘못되었거나 요청을 처리할 수 없다
400: Bad Request, 잘못된 요청
401: Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
403: Forbidden, 서버에서 해당 자원에 대해 접근 금지
405: Method Not Allowed, 허용되지 않은 요청 메서드
409: Conflict, 최신 자원이 아닌데 업데이트하는 경우. 예) 파일 업로드 시 버전 충돌
5xx - 서버 에러
서버가 명백히 유효한 요청에 대해 충족을 실패했다
501: Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
503: Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우
HTTP 응답 처리
응답이 제대로 도착하였고, 해당하는 메시지 본문이 html 태그로 이루어져 있다면 브라우저는 해당 태그를 해석한 뒤 페이지를 구축합니다.
이 때, 이미지나 비디오에 해당하는 추가적인 데이터가 필요하다면 브라우저는 해당 공간을 우선 빈 상태로 두고, 다시 HTTP 리퀘스트 메시지를 생성하여 요청합니다.
만약 이미지 2개, 동영상 1개가 필요하다면 처음 요청 한번, 이미지 요청 두번, 동영상 요청 한번으로 총 4번의 요청을 시도합니다. 리퀘스트 메시지에 쓸 수 있는 URI는 하나뿐이기 때문입니다다.
만약 이미지 2개, 동영상 1개가 필요하다면 처음 요청 한번, 이미지 요청 두번, 동영상 요청 한번으로 총 4번의 요청을 시도합니다. 리퀘스트 메시지에 쓸 수 있는 URI는 하나뿐이기 때문입니다다.
HTTPS란
기존의 HTTP 프로토콜에서 SSL 인증서가 등록된 프로토콜을 의미 합니다.
HTTP 프로토콜은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않아 데이터를 쉽게 도난당할 수 있습니다. 그래서 SSL(보안 소켓 계층)을 사용함으로 이 문제를 해결 할 수 있게 되었습니다.
또한, HTTPS를 사용하게 되면 구글의 검색엔진 최적화(SEO)에 노출될 확률이 HTTP보다 높아집니다
단점 : HTTP에 비해 많이 느린편이다.