[HTTP] Http Transfer

ShinJuYong·2022년 3월 14일
0

공부한것들

목록 보기
3/33

Http란?

HTTP는 HyperText Transfer Protocol의 줄임말로 웹 상의 브라우저(Client)와 서버(Server)가 데이터를 주고받을때 사용하는 Protocol이다. 이름에 HyperText가 들어가있지만 텍스트뿐만 아니라 미디어등의 데이터도 전송이 가능하다.

Http의 특징.

  • Request & Response
    HTTP통신은 Client의 요청(Request)와 그에 대한 Server의 응답(Response)로 이루어져있다.

    지금 Velog에서 글을 쓰는것 또한 내가 Velog에 서버로보내는 Request이다.

  • TCP/IP 통신 위에서 동작

    TCP/IP정리 참고
    TCP/IP 통신 위에서 동작하며 80번 포트를 사용한다.

  • 어떤 종류의 데이터라도 전송이 가능하다.
    텍스트,이미지,오디오등의 미디어 데이터도 전송이 가능하다.

  • 비연결성
    비연결성Request에대한 Response를 받으면 그 연결을 끊어버리는 것을 의미한다.
    연결에대한 리소스를 줄일 수 있는 장점이 있지만. 같은 Client에서 오는 요청도 계속해서 연결/해제 해야한다는 단점이 존재한다.
  • 클라이언트를 식별하지 못함.
    비연결성의 특징을 가지기 때문에 ServerClient를 식별하지 못한다.

    따라서 같은 Client에서 Request를 보내더라도 그 요청은 독립적으로 시행된다.

HTTP Method

HTTP를 이용하여 Client에서 ServerRequset를 보낼때 어떠한 목적으로 Request를 하는것인지 정의를 내릴 수 있다.(HTTP Method)
주요 메소드는 아래와 같다.

  • GET : 서버가 데이터를 달라는 요청을 할 때 사용
  • POST : 서버에게 데이터를 전송하는 요청을 할 때 사용
  • PUT : 서버에서 요청 URI의 데이터를 수정하거나 새로 추가 하도록 요청 할 때 사용
  • PATCH : 서버의 데이터를 일부 수정할 때 사용
  • DELETE : 서버의 요청 URI의 데이터를 삭제하도록 요청 할 때 사용

HTTP Status Code

서버응답을 전송할 때 같이 전송하는 코드를 의미한다.
3자리숫자로 이루어져 있으며 요청에 대한 서버의 상태를 나타내준다.
앞자리는 1~5의 숫자 중 하나이며 이 중 4와 5는비정상적인 상황, 즉 Error를 의미한다.

  • 1XX : 정보 응답
    100 Continue : 요청이 진행중이고 문제가 없다.
  • 2XX : 성공 응답
    200 OK : 요청이 성공적으로 완료됨.
    201 Created : Create Complete 보통 POST, PUT요청 뒤에 온다.
  • 3XX : 리다이렉션 메시지
    300 Multiple Choice : 요청에 대해 하나 이상의 응답이 가능함.
    301 Moved Permanetly : 요청한 리소스의 URI가 변경됨.
  • 4XX : Client Error
    400 Bad Request : 잘못된 문법
    401 Unauthorized : 인증되지 않은 클라이언트 요청
    403 Forbidden : 클라이언트가 리소스에 접근할 권리가 없음
    404 Not Found : 클라이언트가 요청한 리소스가 서버에서 찾을수 없음.
    408 Request Timeout : 요청 중 시간이 초과
  • 5XX : Server Error
    500 Internal Server Error : 서버에러를 처리 불가능
    502 Bad Gateway : 서버가 게이트웨이로부터 잘못된 응답을 받음.
    503 Service Temporarily Unavailable : 일시적으로 서버 사용불가능 (보통 점검상황 이거나 과부하로 인한 다운)
    504 Gateway Timeout : 서버가 게이트웨이의 역할을 하고있으며 다른 서버로부터 응답을 받지못함.

마무리

웹에서의 중요한 API는 결국 HTTP의 Requset와 Response를 어떻게 조절하냐에 달려있는거같다.
어떤 언어를쓰든, 어떤 프레임워크를 쓰던 기본이 제일중요

참조한곳
HTTP
MDN HTTP 문서

0개의 댓글