크래프톤정글6주차 - HTTP

김태성·2024년 2월 23일
0
post-thumbnail

(블리자드 홈페이지에서 주소를 잘못 들어가거나 삭제된 페이지의 url로 접근하면 나오는 404페이지)

이 404 에러는 http status code 중 하나이며,
code 중 에러에 관한 400번대 중 하나인데
404의 뜻은 '요청한 페이지를 찾을 수 없음'이다.

우리가 일상적으로 보고 있던 웹 브라우저 또한 웹 서버와 소통하기 위한 프로토콜을 사용해야 하고, 이 프로토콜이 우리가 공부해야 할 HTTP이다.

프로토콜 이기 때문에 일종의 규약이며 정해진 문법에 따라 사용해야 한다.

정말 자세하게 알고싶다면 밑의 링크 사이트의 http 리스트를 정독하면 된다.
https://developer.mozilla.org/ko/docs/Web/HTTP
깊게 파고들면 끝도없다.

HTTP

Http는 Application 계층에 있는 통신 프로토콜이다.

기반 프로토콜
가장 많이 사용하고 있는건 http 1.1이며, TCP 기반으로 작동한다.
또한 HTTP2도 TCP 기반으로 작동하고 있지만 , 많이 쓰이고 있진 않다.

HTTP 프로토콜에 대한 추가적인 설명이다.

  • HTTP 0.9 : 초기 버전이라 간단한 기능만 있음.
    처음 나왔을때는 버전 번호가 없어서 구분을 위해 0.9버전이라 부름.
    요청은 단일라인으로 구성되며 리소스에 대한 경로로 사용가능한 메서드가 GET 밖에 없었음.
    헤더 또한 없었으며 HTML 이외의 파일은 전송 할 수 없다는 것을 의미함.
  • HTTP 1.0 : 브라우저 / 서버 모두 융통성을 가지도록 확장되었음.
    버전 정보가 요청에 전송되기 시작(HTTP/1.0 이 GET 라인에 붙은 형태)
    상태 코드 라인 또한 응답의 시작부분에 붙어 브라우저가 요청에 대한 성공/실패를 확인 할 수 있음
    HTTP헤더 개념은 요청/응답 모두를 위해서 도입되었고 , 메타데이터 전송을 허용하고 프로토콜을 극도로 유연하고 확장 가능하게 만들었음.
    새로운 HTTP 헤더의 도움으로 HTML 외의 다른 문서를 전송하는 기능이 추가됨.

  • HTTP1.1 : 지금 표준 프로토콜
    커넥션 재사용을 도입해(종료 전까지 계속 열어놓음) 시간을 절약
    파이프라이닝을 추가해서 레이턴시를 낮춤
    청크된 응답 지원(크기가 큰 데이터를 여러개로 잘라서 보낸다는 뜻)
    추가적인 캐시 제어 매커니즘 도입

아래는 흐름의 예시이다.

GET /en-US/docs/Glossary/Simple_header HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0)
Gecko/20100101 Firefox/50.0
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US, en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header

200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding

(content)

GET /static/img/header-background.png HTTP/1.1
Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header

200 OK
Age: 9578461
Cache-Control: public, max-age=315360000
Connection: keep-alive
Content-Length: 3077
Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache

(image content of 3077 bytes)

특징

  • 클라이언트/서버의 구조
  • 단순하며 , 확장이 용이하다
  • 무상태(stateless) : 서버는 클라이언트의 상태를 저장하고 있지 않는다
  • 비연결성 : 기본적으로 서버/클라이언트 간의 연결을 유지하지 않는다.
    • 비연결성의 한계
      • 매번 TCP/IP 연결을 맺어야 하고
      • HTML , JS , CSS 등 수많은 자원들에 각각 맺어짐.
    • 극복
      • 현재는 HTTP 지속연결로 문제를 해결하였음.

HTTP 메시지

종류 : 요청/응답 메시지

요청메시지

  • HTTP 메서드(GET , POST , PUT , PATCH , DELETE...)
  • 요청 대상
  • HTTP 버전
  • HTTP 헤더(Accept , Host...)

응답 메시지

  • HTTP 버전
  • HTTP 상태코드(2xx , 3xx , 4xx , 5xx)
  • HTTP 헤더(Content - Type , Content - Length)
  • HTTP 메시지 바디(전송 할 데이터가 담겨있음)

이후 내용은 너무 복잡해지니 여기서 컷

profile
닭이 되고싶은 병아리

1개의 댓글

comment-user-thumbnail
2024년 2월 23일

HTTP 잘 학습하고 가요~~

답글 달기

관련 채용 정보