HTTP

  • 클라이언트와 서버 사이에 이루어지는 요청/응답(Request/Response) 프로토콜
  • HyperText Transfer Protocol : Hyper Text를 전송하기 위한 프로토콜
  • Hyper Text : 웹문서를 구성하고 있는 언어 HTML
  • 프로토콜 : 상호간에 정의한 규칙. 특정기기 간에 데이터를 주고받기 위해 정의됨

특징

1. Connecetionless

  • 비연결성 프로토콜
  • 클라이언트와 서버가 연결을 맺은 후
    클라이언트 요청에 대해 서버가 응답을 하고나면, 맺고 있었던 연결을 종료시키는 것
  • 잦은 연결/해제에 따른 오버헤드를 줄이고자 HTTP1.1 에서는 KeepAlive 속성 사용 가능
  • KeepAlive : 지정된 시간동안 서버와 클라이언트 사이에 패킷교환이 없는 경우, 상대방의 상태를 확인하기 위해 패킷을 주기적으로 보내고, 이에 대한 응답이 없으면 접속을 종효하는 것

2. Stateless

  • 상태가 없는 프로토콜
  • 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리됨을 의미
    => 이전 데이터의 요청과 다음 데이터 요청이 서로 관련없음
    => 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고, 다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능상의 이점이 생김

3. TCP/IP, 80

  • 일반적으로 TCP/IP 통신 위에서 동작
  • 기본포트는 80번

과정

1. 접속(Connect)

2. 요청(Request)

3. 응답(Response)

4. 닫기(Close)



메시지 구조

Request

Request Line

HTTP Method / Reqeust Target / HTTP버전
ex) GET /restapi/v1.0 HTTP/1.1

  • HTTP Method
    요청의 의도를 담고 있음 GET/POST
  • Request Target
    HTTP 요청이 전송되는 목표 주소
  • HTTP 버전
    버전에 따라 요청 메시지 구조나 데이터가 다를 수 있어서 버전을 명시함

Header

HTTP 요청 그 자체에 대한 정보를 담고 있음
key:value 로 이루어져 있음

  • 헤더정보
    • Host : 요청이 전송되는 Target의 호스트 url 주소
    • User-Agent : 요청을 보내는 클라이언트의 정보 (ex. 웹브라우저의 정보)
    • Accept
      • 해당 요청이 받을 수 있는 응답 body 데이터 타입의 정보
      • 모든 타입을 허용하는 경우 */*로 지정
      • MIME type : Multipurpose Internet Mail Extensions
        바이너리 데이터인 첨부파일을 아스키 코드로 인코딩하여 본문에 덧붙이겠다는 뜻
        메인타입/서브타입 으로 구성
    • Connection
      • 해당 요청이 끝난 후 클라이언트와 서버간의 연결을 계속 유지할 것인지 끊을 것인지 알려주는 헤더
      • Keep Alive : 네트워크 연결 유지
      • close : 더 이상 요청을 보내지 않으니 연결을 닫아라
    • Content-Type
      • HTTP 요청이 보내는 메시지 body 타입을 알려줌
      • MIME type
    • Content-Length : 요청이 보내는 메시지 body의 총 사이즈 정보

Empty Line

  • 공백(빈줄)
  • Header와 Body를 분리해주는 역할

Body

  • HTTP 요청이 전송하는 실제 데이터를 담고 있는 부분
  • 전송하는 데이터가 없다면 body부분은 비어있음
  • GET 메서드 등의 경우 Body 부분 생략 가능함



Response

Status Line

HTTP 버전 / Status Code / Status Text
ex) HTTP/1.1 200 OK

  • HTTP qjwjs
  • Status Code : 응답 상태를 나타내는 코드 → Status Code
  • Status Text : 응답 상태를 간략하게 글로 설명 → Status Text
  • HTTP 요청 메시지의 헤더와 동일 → Header
  • 단 User-Agent 헤더 대신 Server 헤더가 사용됨

Empty Line

Body

  • HTTP 요청 메시지의 body와 동일
  • 전송하는 데이터가 없으면 비어 있음




상태 Code & Text

100번대 : 정보 응답

  • 요청을 받았으며, 작업을 계속함
  • 요청을 처리중이라는 것을 알려주는 코드

200번대 : 성공 응답

대부분 성공을 의미함

  • 200 OK : 요청에 대한 성공

300번대 : 리다이렉션 메시지

클라이언트가 요청을 마치기 위해 추가 동작을 취해야 함

400번대 : 클라이언트 에러

  • 400 Bad Request : HTTP 요청이 잘못된 요청일 때, 주로 input값이 잘못됐을 때 사용
  • 401 Unauthorized : 인증 실패, 주로 사용자 로그인 필요한 경우 사용
  • 403 Forbidden : 접근 권한이 없음
    ex. 회원만 볼수 있는 페이지를 비회원이 보려고 하는 경우
  • 404 Not Found : 페이지 없음

500번대 : 서버 에러

서버가 요청을 수행하지 못함

  • 500 Internal Server Error : 서버 내부 처리 중 오류 발생







HTTP & HTTPS 차이

HTTP

HyperText Transfer Protocol
하이퍼 텍스트 전송 프로토콜

HTTPS

HyperText Transfer Protocol Secure
하이퍼 텍스트 전송 프로토콜 보안

  • 일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는 다는 것.
    => 데이터가 쉽게 도난당할 수 있음
  • SSL 인증서 : 데이터 암호화
  • TLS(전송계층보안)프로토콜 : 데이터무결성 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웨사이트와 통신하고 있음을 입증하는 인증 기능 제공

참고


0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN