Bleeding edge

2022/09/19 - TIL 본문

ConnecTo

2022/09/19 - TIL

codevil 2022. 9. 19. 20:00

1. HTTP의 진화 과정

표준 이전의 HTTP

HTTP/0.9: 문서화된 최초의 HTTP 버전

HTTP/1.0 기존 HTTP의 기능을 확장한 버전

HTTP/1.1 표준화된 HTTP

최초의 HTTP의 요청 메서드는 GET한가지 종류였습니다. 웹이 인기가 생기면서 기존의 HTTP 사양 만으로는 사용자들의 모든 요구사항을 충족할 수 없게 되었고 당시에 명시적인 규약이 없었기에 서버와 클라이언트의 기능이 구현되지 않았습니다.

96년도에 HTTP WG는 96년이 이르면서 HTTP/1.0의 사양을 만들었고 이 이전의 버전에 대해서는 HTTP/0.9라는 이름을 붙였습니다.

  • HTTP1 1996
    1. 버전정보가 명시되고, 요청 응답사이에 이를 전송하였습니다
    2. 요청 메서드가 GET, HEAD, POST 세가지로 확장되었습니다
    3. 상태 코드가 추가되어 클라이언트 측에 요청 결과에 따라 동작할 수 있게 되 었습니다
    4. 요청과 응답에 대한 부가적인 메타데이터를 담는 헤더 필드가 추가되었습니다
    5. HTTP 헤더(Content-Type)의 도움으로 HTML 이외의 파일도 전송할 수 있게되었습니다.
  • HTTP1.1 1997 ASCII over TCP
    1. 연결 상태 유지 : HTTP 1.0에서는 요청에 따른 응답이 수신되면 TCP연결을 바로 종료하는데 다수의 HTTP 요청이 발생하는 경우 매번 TCP 핸드셰이크 과정을 새로 거쳐야해서 속도가 느려졌습니다. HTTP 1.1에서는 한번 연결한 연결을 다시 재사용하도록 설정되었습니다. 이로 인해 연결을 맺고 끊는과정을 줄어들어서 지연이 개선되었지만 연결을 유지하는 시간이 길어질 수록 서버에 부하가 생기기 떄문에 연결을 유지하는 시간을 제한합니다(이를 Keep alive라고 부릅니다)
    2. 파이프라이닝 : 클라이언트가 여러 요청을 연달아 보내야 할 때 각 응답을 기다리는 것이 아니라 발생한 요청은 일단 전송하고 보내는 방식입니다.
    3. 청크 전송 인코딩
    4. 캐시 제어
    5. 호스트
  • HTTPS 1996
  • HTTP 그 자체는 암호화되지 않은 텍스트만 통신하기 때문에 중간에 누군가가 통신 내용을 가로채거나 사용자의 정보를 탈취할 수 있기에, SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 프로토콜 암호화 방식이 생겼습니다.
  • RESTfulREST는 XML이나 JSON 같은 데이터 포맷이 등장하고 웹 브라우저에서도 비동기로 서버 요청을 보낼 수있는 AJAX가 등장하며 REST구조의 웹서비스들이 각광받게 됩니다.
  • HTTP를 기반으로 웹의 장점을 최대한 활용할 수 있는 아키텍처로 REST(Representational State Transfer)가 제안되었습니다. REST는 HTTP 메서드를 활용하여 CRUD(Create, Read, Update, Delete)를 구현하고, URI를 통하여 자원을 명시하는 아키텍처입니다.
  • HTTP2 2015 Binary Multiplexed over TCP
    1. 이진 프로토콜 : HTTP1.1은 텍스트 기반 프로토콜 이기 떄문에 아스키코드로 작성되어있었습니다. 아스키코드는 사람은 읽기 쉬웠지만 불필요하게 데이터가 커지게 됩니다. HTTP2는 이를 해결하기 위해 텍스트 기반의 전송이 아닌 바이너리 프레이밍을 사용합니다.
    2. 응답 다중화 : HTTP 1.1는 TCP연결에서 한번에 하나의 요청만 처리가 가능하고 순서를 반드시 지켜야했지만, HTTP 2 에서는 TCP 연결에서 요청을 동시에 처리할 수 있는데 이것은 TCP 연결을 스트림, 메시지, 프레임이라는 더욱 세분화한 단위로 다룹니다. 응답 다중화는 큰 파일이 중간에 있으면 뒤에 있는 파일의 다운이 느려지는 HOLB를 해결할 수 있습니다
    3. 헤더필드 압축 : 달라진 부분만 다시 전송하는 허프만 코딩기법을 사용합니다 이는, 불필요하게 발생하는 오버헤드를 최소할 수 있습니다.
  • HTTP3 2022 Binary over Multiplexed QUIC

'ConnecTo' 카테고리의 다른 글

2022/09/21 - TIL  (1) 2022.09.21
2022/09/20 - TIL  (0) 2022.09.20
2022/09/16 - TIL  (0) 2022.09.16
2022/09/15 - TIL  (0) 2022.09.15
2022/09/14 - TIL  (0) 2022.09.14