네트워크 | HTTP

sojung·2021년 11월 28일
0

Network

목록 보기
1/4

1. HTTP는 무엇일까

  • HTTP(Hypertext Transfer Protocol)
  • 클라이언트(웹에서는 브라우저)와 서버 간에 데이터를 주고 받기 위한 방식
  • 응용계층에 위치

2. HTTP 특징

  • stateless : 이전 상태를 알 수 없다.
  • connectionless : 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. -> 이러한 문제를 해결하기 위해 Cookie와 Session 등장

3. HTTP 요청 메소드

메소드설명
POST요청된 자원 생성CREATE
GET자원 요청READ
PUT요청된 자원 수정UPDATE
DELETE요청된 자원 삭제DELETE
HEAD자원의 Header만 요청. Body는 요청하지 않는다.
OPTIONS서버 옵션들을 확인하기 위한 요청. CORS에서 사용

4. HTTP 동작방식

  • 서버/클라이언트 모델을 따른다.
    서비스 제공자(service provider)과 서비스 요청자(service requester)로 구분되는 네트워크 모델
  • TCP/IP 위에서 작동하고, 기본 포트는 80번이다.
    TCP : 데이터의 흐름 관리, 데이터의 정확성 확인
    IP : 패킷을 목적지까지 전송하는 역할

클라이언트가 URI를 통해 요청(Request)를 보내면, 서버는 해당 요청(Reqeust)을 받아 처리하여 클라이언트에게 응답(Response)하는 형태

Request

웹 브라우저는 웹 서버에 데이터를 요청하는 클라이언트 프로그램이다.
HTTP 형식으로 메소드 + URI(요청하는 자원의 위치 명시) + HTTP 프로토콜 버전을 포함하여 서버에 요청한다. 그 외에 Host, Content-Type, Cookie 등이 Request Header에 포함된다.

Response

HTTP 형식으로 응답코드, 응답메시지를 포함하여 응답한다. 그 외에 Content-Type, Set-Cookie 등이 Response Header에 포함된다.

URI(Uniform Resource Identifiers)
HTTP와는 독립된 다른 체계이다. HTTP는 전송 프로토콜이고, URI는 자원의 위치를 알려주기 위한 프로토콜이다.
클라이언트(웹에서는 브라우저)는 URI에 자원의 위치를 담는다.

http://www.test.co.kr/index.html
1. http : 자원에 접근하기 위한 http 프로토콜을 사용
2. www.test.co.kr(도메인 주소) : index.html이라는 자원의 인터넷상 위치


Content-Type

HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터의 형식을 알려주고, 헤더에 포함된다. HTTP 표준 스펙을 따르는 브라우저와 웹서버는 Content-Type 헤더를 기준으로 HTTP 메시지에 담긴 데이터를 분석하고 파싱한다.
만약 Content-Type 헤더가 없다면 데이터를 전송하는쪽(브라우저나 웹서버)에서는 특정한 형식의 데이터일지라도 데이터를 받는 입장에서는 단순히 텍스트 데이터로 받아들인다.
HTTP 요청이 GET방식인 경우에는 무조건 URL 끝에 쿼리스트링으로 value=text 형식으로 보내지기 때문에 Content-Type은 필요가 없다. 하지만 POST나 PUT처럼 메시지 BODY에 데이터를 보낼 때는 Content-Type를 추가해야한다.


5. HTTP 상태 코드

2XX : 성공

상태코드response설명
200OK(성공)요청이 성공적으로 처리되었다. 서버가, 요청한 페이지를 제공하였다.

3XX : 리다이렉션

상태코드response설명
302FOUND(임시 이동)요청한 리소스의 URI가 일시적으로 변경되었다.

4XX : 클라이언트 에러

상태코드response설명
401Unauthorized(권한 없음)인증이 필요하다.
403Forbidden(금지됨)서버가 요청을 거부하였다. 예를 들어 사용자가 리소스에 대한 필요 권한을 갖고 있지 않는 경우이다.
404Not Found(찾을 수 없음)서버가 요청한 페이지(리소스)를 찾을 수 없다. 예를 들어 서버에, 존재하지 않는 페이지를 요청할 경우이다.
405Method Not Allowed(허용되지 않는 메소드)예를 들어, POST 방식으로 요청을 받는 서버에 GET 요청을 보내는 경우, 읽기 전용 리소스에 PUT 요청을 보내는 경우, 필수 메소드인 GET과 HEAD를 제거할 경우에 발생한다.

5XX : 서버 에러

상태코드response설명
500Internal Server Error(내부 서버 오류)서버에 오류가 발생하여 요청을 수행할 수 없다.
501Not Implemented(구현되지 않음)서버에 요청을 수행할 수 있는 기능이 없다. 예를 들어 서버가 요청 메소드를 인식하지 못할 경우이다.
502Bad Gateway서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버로부터 잘못된 응답을 받는 경우이다.
profile
걸음마코더

0개의 댓글