HTTP란?
인터넷 상에서 정보를 주고받는 규칙 및 프로토콜
HTTP/1.0
- 하나의 연결당 하나의 요청만 처리하도록 설계
- RTT(패킷이 목적지에 도달하고 다시 출발지로 돌아오기 까지 걸리는 시간)이 증가함
- 이를 해결하기위해 이미지 스플리팅, 코드압축, Base64인코딩 등의 기법을 사용
* 이미지 스플리팅 : 이미지가 합쳐있는 하나의 이미지를 다운로드 받는것
* 코드압축 : 코드의 빈칸, 개행을 없애는 것
* base64인코딩 : 64진법 문자열로 인코딩 하는 방법. 이미지에 대한 서버에 HTTP요청을 할 필요 없어짐. 하지만 크기가 커진다.
* 인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리속도향상, 저장공간 절약을 위해 다른 형태나 형식으로 변환하는 것
HTTP/1.1
- Keep-alive 옵션 : 여러개의 파일을 송수신 가능하게 하는 옵션(TCP 연결, 해제를 위한 3-handshake 불필요)
- HOL blocking(head of line blocking) : 네트워크에서 같은 큐에 있는 첫번째 패킷이 지연되여 뒤의 패킷에 영향을 주는 것
HTTP/2
- 멀티플랙싱 : 여러개의 스트림으로 송수신. HOL blocking을 해결한다.
* 스트림 : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터요소
- 해더압축 : 허프만 코딩을 통해 큰 해더로 인한 문제점 해결
* 허프만 코딩 : 문자열을 문자단위로 쪼개서 빈도수를 세고, 빈도가 높은 음절은 적은 비트를 사용하고 빈도가 낮은 음절은 높은 비트를 사용하여 전체 데이터에 필요한 비트수를 줄이는 것
- 서버푸시 : 클라이언트의 요청없이 서버에서 푸시하는 것(HTML 파일 요청시 HTML, CSS모두 받는 것)
HTTP/3
- UDP를 기반으로 돌아감
- 초기연결 설정시 지연시간 감소
HTTPS
- 애플리케이션 계층과 전송 계층 사이에 신뢰계층인 SSL/TLS를 넣은 것
- SSL/TLS(Secure Socket Layer/ Transport Layer Secure) : 전송계층에서 보안을 제공하는 프로토콜
- 클라이언트와 서버가 통신할 때 제 3자가 메시지를 도청하거나 변조하지 못하게 하는 것