Front-end 로드맵 따라하기
(요약) 키워드로 알아보기
HTTP(Hypertext Transfer Protocol)란 ?
- World Wide Web의 기초이며 하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는 데 사용된다.
HTTP는네트워크 장치 간에 정보를 전송하도록 설계된응용 프로그램 계층프로토콜이며 네트워크 프로토콜 스택의 다른 계층 위에서 실행됩니다.HTTP를 통한 일반적인 흐름은 클라이언트 시스템이 서버에 요청한 다음 응답 메시지를 보내는 것을 포함된다.
- HTTP는 요청과 반응으로 이루어진 프로토콜이다.
더 알아보기
HTTP정의 :
1. 모든 것이 HTTP(HyperTextTransferProtocol) 하이퍼텍스트 전송 규약 이다.
HyperText 이라는것은, 아주예전에 text만 링크가 들어있는 문서를 주고받을때 썼었다.
하지만 요즘 시대는 HyperText가 아닌, Hypermedia로 보는게 더 맞지 않나 싶다.
즉, text타입의 HTML, Json뿐만아니라 mp3, video 같은 다양한 미디어 들도 HTTP를 통해서 주고 받을 수 있기 때문이다.
***HyperText에 대한 개념이 부족하면 여기참고
지금은 모든것을 HTTP프로토콜에 담아서 전송한다.(HTTP메시지에 모든것을 전송)
- HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML(API)
- 거의 모든 형태의 데이터 전송 가능
- 서버간에 데이터를 주고 받을 때도 대부분 HTTP사용
- 지금은 HTTP 시대!
HTTP는 클라이언트와 서버간의 데이터를 주고 받을 때 암호화 처리가 되어있지 않아, 제3자가 그 데이터를 가로채서 읽을 수가 있다. 하지만 HTTPS는 SSL/TLS와 같은 조금더 암호화된 안전한 방식으로 주고 받으므로, 제 3자가 더이상 그 내용을 볼 수 없다.
HTTP HTTPS 변천과정을 살펴보자!
- 2019년 최근에 아직도 활발히 개발중인 HTTP v3 <- v2와 비교했을때 그렇게 크게 달라지는 내용은없고, HTTPS만 지원
- 기존의 TCP프로토콜을 기본베이스로 만든 HTTP와는 다르게 UDP를 베이스로해서 만들었다.
- 2015년 HTTP v2 <- v1에서 조금 문제가됐던것을 개선해서 v2가 나오게된다. HTTP v2는 대부분의 브라우저에서 v2로만 동작이 가능하다.즉, HTTP v2를 이용하면서 보안이 없는 HTTP는 브라우저에서 허용을 해주지 않는다.
많은 브라우저가 현재 HTTP v2와 HTTPS를 결합해서 사용하고있다.- 텍스트가 아닌 텍스트를 바이너리 형태로 로우데이터 형태로 서로 주고받음, 그러므로 제3자가 한 눈에 보기에도 어렵다.
- 헤더 부분 또한 압축을 해서 주고받는다.
- 버전2에서는 멀티플랙싱이 가능해짐(여러개의 파일을 동시에 주고받을 수 있다)
- 보안/성능이 개선이 됨 등..
- 1997년 HTTP v1 <- HTTP로도 사용가능하고, HTTPS로 보안을 보안해서 사용가능
- 텍스트 기본
- 압축하지 않은 버전으로 사이즈가 크다
- 한 번에 하나의 파일만 주고 받을 수 있다.
- 조금 비효율적인면이 많았다.
- 1994년 보안이 조금 더 개선된 HTTPS나옴.
- 1989년 HTTP개발
HTTP/1.1에 대해서 공부하는게 가장 중요하다.
Q..
2 나 3이 더 중요하지 않나요?
A.
1.1에 대부분에 스펙이 다 들어있고, 2나 3버전은 성능개선에 초점에 맞춰져있다.
버전이 있는데, 인터넷상에서 문서를보면, 50%이상의 확률로 RFC2616버전으로 설명이 되어있는 문서나 책이 되게 많다. (그다음 버전이2014년에 나왔는데, 이런거는 발전이 되게 느리기 때문이다. 그리고 RFC7230~7235로 잘게 쪼개지게된다.)
HTTP/1.1이나 HTTP/2는 TCP위에서 동작한다. 그리고 HTTP/3는 UDP기반으로 개발이 되어있다.
TCP는 안정적이지만,3 way handshake도 해야되고(Socket방식으로 통신한다는 것은 TCP프로토콜을 직접 사용하는 방법과 이 전 강의에서 설명해주신 Socket라이브러를 이용하여 TCP의 3wayhandshaking기능을 수행하는 방법)
기본적으로 안에 데이터도 너무 많고, 기본적인 메커니즘 자체가 속도가 굉장히 빠른지는않는다.
그래서 이거를 UDP프로토콜위에 그냥 애플리케이션 레벨에서 성능을 최적화시켜서 나온것이 HTTP/3이다.
지금은, HTTP2/3이 굉장히 급속도로 퍼지고있다.
하지만, HTTP/1.1의 스펙을 잘 알면된다.
결론적으로, 개발자에게 있어서 HTTP는 ?
HTTP를 이용해서 클라이언트와 서버간의 통신을 할때는 request를 잘 보내고, response를 어떤식으로 보내야하는지 이부분에 초점을 두고 어떻게 잘 request를 만들고, response를 해주냐 이것이 관건인것이다.
WWW (World Wide Web)란?
WWW는 기본적으로는 하이퍼텍스트 기반으로 연결된 문서들의 집합체로 정의할 수 있으며 이 문서들은 HTML(Hypertext Mark-up Language)로 작성되며 HTTP를 기본 프로토콜로 사용한다.
함께보면 좋은 자료
최근댓글