HTTP 프로토콜

izi·2021년 1월 28일
0
post-thumbnail

Hypertext Transfer Protocol

HTTP는 웹 서버와 브라우저가 파일 등의 정보를 송수신하는데 사용하는 클라이언트와 서버 프로토콜이다.

  • 1989년 영국의 컴퓨터 과학자인 팀 버너스 리(Tim Berners-Lee)가 월드 와이드 웹(World Wide Web)을 고안하면서 설계한 프로토콜이다.
  • 주로 HTML 문서를 주고 받는데 사용한다.
  • HTML(HyperText Markup Language) : 웹을 이루는 구성 요소이다.
    웹 페이지가 어떤 구조로 이루어져 있는지 브라우저가 알 수 있도록 하는 마크업 언어!! ❌프로그래밍 언어 아님❌
    - HyperText : 웹 페이지를 다른 페이지로 연경하는 링크이다.
    - Markup Language: 태그 같은 수많은 요소를 사용 <h1>이런 태그</h1>하는 언어
  • Protocol : 규칙이다. 특정 기기 간에 데이터를 주고받기 위해 정의되었다.
    “나는 이렇게 줄게! 넌 저렇게 받아! 난 너가 준거 요렇게 받을게!

✅ HTTP는 client-server 모델을 따르는 protocol이다.

client-server protocol

  • 클라이언트(client) : 요청을 보내는 쪽 (일반적으로 웹 브라우저)
    • 엔지니어들과 자신들의 애플리케이션을 디버그하는 웹 개발자들이 사용하는 프로그램들은 예외
  • 서버(server) : 요청을 받는 쪽 (일반적으로 데이터를 보내는 원격지 컴퓨터)
  • 요청(requests) : 클라이언트에 의해 전송되는 메시지
  • 응답(responses) : 서버가 요청에 대해 전송하는 메시지
  1. 웹 브라우저(Client)가 HTTP(규칙)를 통해 웹 서버(Server)로부터 웹 페이지나 그림 정보를 요청한다.
  2. 웹 서버(Server)는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다.
  • 예를 들면 ‘http://www.tta.or.kr’과 같이 ‘http://’로 시작되는 URL을 지정한다.
  • 여기에 있는 데이터를 HTTP(규칙)을 사용하여 서버에서 클라이언트로 전송한다.

HTTP 프로토콜로 데이터를 주고받기 위해서는 아래와 같이 요청(Request)을 보내고 응답(Response)을 받아야 한다.

URL이란?

  • protocol : 규약 http, ftp, telnet
  • host : 웹 서버의 위치
    • IP 주소 : 도메인 아니면 Ip 주소를 쓴다. ex) 127.0.0.1
    • domain name : host name의 일부분, 보통 도메인으로 불림 ex) example.com, kr, net
  • port : USB 포트를 생각해보자. 연결되는 gate로 컴퓨터와 다른 컴퓨터와 서로 연결되는 통로
    • 표준 HTTP 포트 80, HTTPS는 443이다. 표준 포트를 사용할 경우 보통 생략한다.
  • resource path : 파일 위치다. 자원에 대해 웹서버에서 추상화한 경로다. 없으면 표시되지 않는다.
  • 매개변수(query or parameter) : 웹 서버에서 보내는 추가 파라메터
  • fragment identifier : 부분 식별자

HTTP 프로토콜의 특징

  1. HTTP 프로토콜은 stateless 프로토콜이다. 상태가 없지만 세션은 있다.
  • 상태가 없다 : 상태를 저장하지 않는다. 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다.
  • 서버는 세션같이 별도 추가 정보를 관리하지 않아도 된다.
    • 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능상의 이점
  1. 일반적으로 네트워크 프로토콜은 TCP/IP 프로토콜 위에서 동작한다. HTTP 기본 포트는 80번이다.

프록스(proxy)란 무엇인가?

  • 웹 브라우저와 서버 사이에 수많은 컴퓨터와 머신이 HTTP 메시지를 이어 받고 전달하는데 그 중 애플리케이션 계층에서 동작하는 것이다.
  • 서버 대신 클라이언트의 요청을 중계 받는다.
    • 요청과 응답 사이에는 여러 개체들이 있다. 게이트웨이 또는 캐시 역할을 하는 프록시 등

Application Layer protocol

응용 계층(Application layer)은 [OSI 7계층]에서 7계층을 담당하는 녀석으로 HTTP가 속해있다.

  • 실제로 브라우저와 요청을 처리하는 서버 사이에 좀 더 많은 컴퓨터들이 존재한다.(라우터, 모뎀 등)
  • 웹의 계층적 설계 덕분에 이들은 네트워크와 전송 계층 내로 숨겨지고 HTTP는 애플리케이션 계층의 최상위에 있다.

HTTP 요청 메소드(Http Request Methods)

URL을 통해 서버에 특정 데이터를 요청할 수 있다.
요청하는 데이터에 특정 동작을 수행해야 할 때 Http Request Methods를 이용한다.

  • HTTP Verbs라고도 부름.
  1. GET : 존재하는 자원에 대한 요청
  2. POST : 새로운 자원을 생성
  3. PUT : 존재하는 자원에 대한 변경
  4. DELETE : 존재하는 자원에 대한 삭제
  • 기타 요청 메소드 HEAD, OPTIONS(CORS에서 사용) 등이 있다.

HTTP 상태 코드(HTTP Status Code)

서버에서 설정해주는 응답(Response) 정보이다.
이 상태 코드로 에러 처리를 할 수 있다.

2XX 성공을 의미함

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

3XX 리다이렉션

클라이언트가 이전 주소로 데이터를 요청함 서버에서 새 URL로 리다이렉트를 유도하는 경우

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

4XX 클라이언트 에러

클라이언트의 코드가 잘못됐거나 유효하지 않은 자원을 요청했거나 권한이 잘못된 경우

  • 400 : Bad Request 잘못된 요청
  • 401 : Unauthorized 권한 없음 Authorization 헤더가 잘못된 경우
  • 402 : 이 응답 코드는 나중에 사용될 것을 대비해 예약됨. 지금 사용되고 있지 않음.
  • 403 : Forbidden 서버에서 해당 자원에 대해 접근 금지
  • 404 : Method Not Allowed 요청한 자원이 서버에 없음

5XX 서버 에러

서버쪽에서 오류가 난 경우

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

참고

프런트엔드 개발자가 알아야하는 HTTP 프로토콜 Part 1

HTTP 개요

HTTP 상태 코드

0개의 댓글