HTTP 프로토콜 정리

이택준·2022년 4월 13일
0

HTTP 프로토콜이란?

  • Hyper Text Transfer Protocol 의 약자로 웹 개발에서 뺄 수 없는 통신 프로토콜이다 웹에서 브라우저와 서버간 데이터를 주고받을 때 사용한다.
  • OSI 7계층중 응용계층에 해당한다
  • TCP/IP 모델에서도 응용계층에 해당한다
  • 버전에 따라 HTTP 1.0, HTTP 1.1, HTTP 2.0 이 있다

    HTTP 버전별 차이

특징

  • 상태가 없는 stateless 프로토콜이다 쉽게 말하면 이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 뜻

    stateful : server side에 client와 server의 동작, 상태 정보를 저장하는 형태로 세션 상태에 기반하여 server의 응답이 달라진다. 대표적인 예로 TCP 통신이 있다.
    stateless : serverside에 client와 server의 동작, 상태정보를 저장하지 않는 형태로 server의 응답이 client와의 세션 상태와 독립적임 대표적인 예로 UDP 통신이 있다

  • 일반적으로 80포트를 사용해서 통신한다

HTTP 요청 메서드

클라이언트가 웹서버에게 요청하는 목적 및 그 종류를 알리는 수단

가장 많이 사용되는 메서드

GET

URL(URI) 형식으로 서버에 데이터를 요청한다.
?로 URL과 보낼 데이터를 구분하고 &로 각각의 데이터들을 구분한다. 각각의 데이터와 그에 해당하는 값은 =로 구분한다.

예시) GET http://localhost:8000/post?id=1&category=game HTTP/1.0

문제점

주소창에 사용자가 입력한 정보가 그대로 노출된다
이미지, 동영상 같은 바이너리 파일의 데이터를 보내고 싶어도 URI나 헤더가 너무 커져서 웹서버에서 처리할 수 없기 때문에 보낼수가 없다 (그래서 POST를 사용)

POST

GET메서드와 달리 body에 보내고 싶은 정보를 넣어 서버에 데이터를 전송한다.
body는 요청헤더 다음 한줄을 비우고 그다음에 위치한다. PUT과 DELETE를 POST로 구현이 가능하다

예시) POST http://localhost:8000/post HTTP/1.0
...
Content-Length: 18 ← 보내는 데이터의 길이
...
Content-Type: application/x-www-form-urlencoded ← 보내는 데이터의 타입
...

id=1&category=game ← 보내고 싶은 데이터

문제점

보내는 데이터가 바이너리 데이터일때 그안에 '='나 '&'가 포함될 수 있는데 이게 문제를 발생시킬 수 있다. 이에 대한 해결책으로 멀티파트 인코딩 방법을 사용한다

그 외

  • PUT
    서버에 데이터를 저장,수정을 요청한다
  • PATCH
    서버에 데이터 수정을 요청한다

    PUT과 PATCH의 차이점

  • DELETE
    서버에 데이터를 삭제를 요청한다
  • OPTIONS
    서버가 허용하는 메서드 목록을 조회할때 사용한다. 허용되지 않은 메서드가 요청되면 "405 Method Not Allowed"응답을 보낸다
  • HEAD
    헤더 정보를 요청한다. 응답메시지에 body가 없음
  • TRACE
    요청 리소스가 수신되는 경로를 보여준다

상태코드

  • 200번대 (통신이 성공적으로 수행되었다)
상태코드이름의미
200OKGET 요청 성공
201CreatePOST로 생성 성공
202Accepted요청 접수O, 리소스 처리X
204No Contents요청 성공, 표시할 내용 없음
  • 300번대(리다이렉트가 필요하다)
상태코드이름의미
300Multiple Choice요청한 URI에 여러 리소스가 존재함
301Move Permanently요청한 URI가 새 위치로 영구적으로 이동했다(GET 또는 HEAD 요청에 대한 응답)
304Not Modified마지막 요청 이후 요청한 페이지가 수정된적이 없음
  • 400번대(클라이언트측에서 오류가 발생하였다)
상태코드이름의미
400Bad Request서버가 요청 구문을 인식하지 못함
401Unauthorized인증 오류
403Forbidden권한이 없는 리소스를 요청하고 있다
404Not Found요청한 리소스를 못찾겠다
405Method Not AllowedAPI에서 정의되지 않은 메서드를 호출
406Not Acceptable요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음
408Request Timeout요청 대기시간 초과
409Conflict서버가 요청을 수행하는 중에 충돌이 발생했음
429Too Many Request요청 횟수 상한 초과
  • 500번대(서버측에서 오류가 발생하였다)
상태코드이름의미
500Internal Server Error서버 내부 오류
502Bad Gateway게이트웨ㅔ이 오류
503Service Unavailable서비스 이용 불가
504Gateway Timeout게이트웨이 시간 초과

참고 링크들

HTTP GET 메소드와 POST 메소드 비교
HTTP 메서드
HTTP 메서드 간략 설명
상태코드(Gyoogle)
상태코드(위키피디아)
Stateful, Stateless
HTTP메서드랑 특징, 상태코드
HTTP프로토콜 버전별 비교

profile
개발지식을 배워가는중

0개의 댓글

관련 채용 정보