HTTP 통신

박찬효·2022년 9월 6일
0

HTTP 통신 정의

HTTP란 Hyper Text Transfer Protocol의 두문자어로, 웹 브라우저와 웹 서버가 HTML로 작성된 웹 페이잔 동영상, 음성 파일 등등을 주고 받기 위한 프로토콜(통신규약)입니다.

프로토콜(Protocol)이란?

  • 프로토콜은 규칙(약속)이란 의미이다.

  • 컴퓨터 네트워크(관계망)에서 데이터를 주고받을 때, 이러한 규칙에 맞춰 개발함으로써 서로 정보를 교환할 수 있게 된 것이다.

  • 웹 문서를 주고 받을 때는 HTTP를 사용해야하고 파일을 주고 받을 때는 FTP, 메일은 SMTP,POP 등 전송 계층과 유형에 따라 다양하게 만들어져 있다.

HTTP 특징

  1. 클라이언트 - 서버 구조로 동작한다.

    • 이전에는 클라이언트와 서버가 따로 나누어져 있지 않았다. 하지만 요즘에는 프론트엔드, 백엔드로 나누는 것처럼 클라이언트 -서버 구조로 나뉘어서 개발한다.

    • 클라이언트는 서버에 요청을 보내고, 서버에서 응답을 주기만을 기다린다.

    • 서버는 클라이언트가 보낸 요청을 분석해서, 응답을 보낸다.

  2. 무상태 프로토콜

  • Stateful vs Stateless
    - Stateful - 상태를 유지한다.
    - 서버가 클라이언트의 이전 요청을 모두 알고 있다.
    - 서버가 여러대라고 가정을 했을때 항상 같은 서버와 통신이 유지되어야 한다.
    - 한 대의 서버가 죽어버리면 대응이 어렵다.

  • Stateless - 상태를 유지하지 않는다
    - 서버가 클라이언트의 이전 요청을 전혀 알지 못한다.
    • 서버가 여러대라고 가정했을때, 아무 서버와 통신을 해도 무방하다.
    • 한 대의 서버가 죽더라도 다른 서버로 대응이 쉽게 가능하다.
  1. 비 연결성 (connectionless)
    • 소켓 통신은 기본적으로 연결을 유지해서 사용한다.
    • 연결을 항상 유지하고 있기 때문에 빠른 데이터 통신이 가능하다.
    • 클라이언트가 늘어날 수록 서버의 과부하가 커진다.

    • HTTP 통신은 클라이언트와 서버간의 데이터 통신이 끝나면 연결을 끊어버린다.
    • 서버의 자원을 효율적으로 사용 가능하다.
    • TCP / IP 연결을 계속해서 새로 맺어야 한다.

HTTP 요청 메시지 (request)

HTTP 요청 메시지(request)는 다음 그림과 같이 요청 행, 요청 헤더, 메시지 본문이라는
세 부분으로 구성 되어있다.

이 요청 행은 다음과 같은 세 가지 정보를 담고 있습니다.

  1. GET : 요청 메서드

  2. http://www.gmail.com : URL

  3. HTTP/1.1 : HTTP의 버전

요청 메서드는 송수신 방법으 뜻하며 , GET, POST, PUT, DELETE 등이 요청메서드에 속한다.

GET

  • 존재하는 자원에 대한 요청

POST

  • 새로운 자원을 생성

PUT

  • 존재하는 자원에 대한 변경

DELETE

  • 존재하는 자원에 대한 삭제

HTTP 상태 코드

요청 메서드가 클라이언트에서 설정해야 할 정보라면 HTTP 상태 코드 (HTTP Status Code)는 서버에서 설정 해주는 응답(Response) 정보입니다.

2xx - 성공

200 : GET 요청에 대한 성공
204 : No Content. 성공했으나 응답 본문에 데이터가 없음
205 : Reset Content. 성공했으나 클라이언트의 화면을 새로 고침하도록 권고
206 : Partial Conent. 성공했으나 일부 범위의 데이터만 반환

3xx - 리다이렉션

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

301 : Moved Permanently, 요청한 자원이 새 URL에 존재
303 : See Other, 요청한 자원이 임시 주소에 존재
304 : Not Modified, 요청한 자원이 변경되지 않았으므로 클라이언트에서 캐싱된 자원을 사용하도록 권고. ETag와 같은 정보를 활용하여 변경 여부를 확인

4xx - 클라이언트 에러

400번대 상태 코드는 대부분 클라이언트의 코드가 잘못된 경우입니다. 유효하지 않은 자원을 요청했거나 요청이나 권한이 잘못된 경우 발생합니다. 가장 익숙한 상태 코드는 404 코드입니다. 요청한 자원이 서버에 없다는 의미죠.

400 : Bad Request, 잘못된 요청
401 : Unauthorized, 권한 없이 요청. Authorization 헤더가 잘못된 경우
403 : Forbidden, 서버에서 해당 자원에 대해 접근 금지
405 : Method Not Allowed, 허용되지 않은 요청 메서드
409 : Conflict, 최신 자원이 아닌데 업데이트하는 경우. ex) 파일 업로드 시 버전 충돌

5xx - 서버 에러

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

501 : Not Implemented, 요청한 동작에 대해 서버가 수행할 수 없는 경우
503 : Service Unavailable, 서버가 과부하 또는 유지 보수로 내려간 경우

profile
개발자가 되기 위한 1인

0개의 댓글