HTTP 프로토콜

RHUK2·2021년 4월 28일
1

Network

목록 보기
1/6

📢 22/05/18 복습


📚 Reference


MDN Web Docs, https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
DevTaek 의 개발노트, https://hyuntaeknote.tistory.com/3
캡틴판교, https://joshua1988.github.io/web-development/http-part1/

참고 사이트에 내용을 개인적으로 복습하기 편하도록 재구성한 글입니다.
자세한 설명은 참고 사이트를 살펴보시기 바랍니다.


HTTP 프로토콜이란?


HTTP(HyperText Transfer Protocol) 프로토콜은 클라이언트가 서버로부터 HTML, CSS, 이미지, 비디오와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. 한마디로 클라이언트와 서버가 서로 대화하기 위한 의사소통 수단입니다.

클라이언트는 서버에게 요청(Request)을 하게 되고 서버는 클라이언트에게 요청에 대한 응답(Response)를 하게 됩니다.


HTTP 특성


Connectionless

HTTP는 비연결적인 특성을 가집니다. 이는 클라이언트가 서버에 요청을 하고 서버가 요청에 대한 응답을 하게 되면 바로 연결을 끊어버립니다.

Stateless

HTTP는 상태를 저장하지 않습니다. 이는 비연결적인 특성으로 인해 연결이 끊어지면 클라이언트가 이전에 요청한 결과를 저장하지 않습니다. 즉, 클라이언트가 이전 요청과 같은 데이터를 얻기 위해서는 서버로 동일한 요청을 시도해야 합니다.

이러한 특성 덕에 다수의 요청 처리와 서버의 부하를 줄일 수 있어 성능 상의 이점이 생깁니다. 다만, 💥 상태를 유지해야하는 서비스의 경우 문제가 발생합니다. 대표적으로 로그인이 있습니다.

서버에서는 지속적으로 클라이언트가 누구인지 파악해야 하는데 위의 두 가지 특성 때문에 어려움이 존재합니다. 💥 이러한 문제를 해결하기 위해 쿠키와 세션이라는 기술을 활용하여 HTTP의 한계를 극복하고 로그인을 구현할 수 있습니다.


클라이언트에서 설정해야하는 요청 정보


URL

URL(Uniform Resource Locator)은 네트워크 상에서 자원을 가지고 있는 웹 페이지를 찾기위한 주소를 말합니다. 그 주소에 접속하려면 해당 URL에 맞는 프로토콜을 알아야 하고, 그와 동일한 프로토콜로 접속해야 합니다.

HTTP 요청 메서드

HTTP 요청 메서드는 URL을 통해 자원이 위치한 웹 페이지에 도착한 후에, 데이터에 대한 특정 동작을 수행하기 위한 것입니다.

GET
존재하고 있는 데이터 요청

POST
새로운 데이터의 생성

PUT
존재하고 있는 데이터에 대한 변경

DELETE
존재하고 있는 데이터의 삭제

OPTIONS
지원하는 Request 목록을 받아올 때 사용한다.


서버에서 설정해주는 응답 정보


HTTP 상태 코드

2xx번대의 상태 코드는 대부분 성공을 의미합니다.

200
GET 요청에 대한 성공

204
No Content. 성공했으나 응답 본문에 데이터가 없음

205
Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고

206
Partial Conent. 성공했으나 일부 범위의 데이터만 반환

3xx번대의 상태 코드는 대부분 클라이언트가 이전 주소로 데이터를 요청하여 서버에서 새 URL로 리다이렉트를 유도하는 경우입니다.

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, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌

5xx번대 상태 코드는 서버 쪽에서 오류가 난 경우입니다.

501
Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우

503
Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우


그림으로 보는 HTTP 프로토콜


profile
생각 많이 하지 않기 😎

0개의 댓글