1. HTTP/1.0
- 한 연결당 하나의 요청을 처리하도록 설계
- RTT 증가(RTT : 패킷 왕복시간)
- 이미지 스플리팅, 코드압축, 이미지 Base64 인코딩을 통해 해결
이미지 스플리팅 | 많은 이미지가 합쳐있는 하나의 이미지 다운로드 후 이를 기반으로 background-image의 position을 이용해 이미지를 표기( 많은 이미지 다운로드시 과부하가 발생) |
코드 압축 | 개행문자, 빈칸을 없애 코드크기를 최소화 |
이미지 Base64 인코딩 | 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하는 방법(37%정도 크기가 더 커진다.) |
* 인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리속도 향상, 저장공간 절약등을 위해 다른 형태나 형식으로 변환
2. HTTP/1.1
- HTTP/1.0과는 달리 매번 TCP연결을 하지 않고 첫 초기화 이후 keep-alive 옵션을 이용해 여러개의 파일을 송수신
- 다수의 리소스 처리 시 개수에 비례하여 대기시간 증가
- HOL Blocking : 같은큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될때 발생하는 성능 저하 현상
- 무거운 헤더구조(쿠키 등 많은 메타데이터가 압축되지 않음)
3. HTTP/2
- HTTP/1.X보다 지연시간 줄이고 응답시간을 더빠르게 한다.
- 멀티플렉싱 : 여러개의 스트림을 사용해 송수신 -> 특정 스트림 패킷 손실돼도 해당 스트림에만 영향. 단일 연결을 사용하여 병렬로 여러 요청을 받을 수 있고 응답을 줄 수 있다.
- 헤더압축 : HPACK 압축형식을 가진다.( 허프만 코딩 압축 알고리즘을 사용 -> 문자열 문자단위로 쪼갠 후 빈도높은 정보는 적은 비트수, 낮은 정보는 많은 비트 수를 사용해 전체 데이터양을 줄이는 원리)
- 서버 푸시 : 클라이언트 요청 없이 서버가 바로 리소스를 푸시
4. HTTPS
- 애플리케이션 계층과 전송계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP요청
- SSL/TLS : 전송계층에서 보안을 제공하는 프로토콜(제3자가 메시지 도청,변조 못하게 '인터셉터'를 방지), 보안세션을 기반으로 데이터를 암호화(인증메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용됨)
보안세션 | - 보안이 시작되고 끝난느 동안 유지되는 세션 - SSL/TLS 핸드셰이크를 통해 보안세션을 생성하고 이를 기반으로 상태정보등을 공유 - 클라이언트, 서버와 키를 공유하고 이를 기반으로 인증, 인증확인 등의 작업이 일어나는 단 한번의 1-RTT가 생긴 후 데이터를 송수신 - 클라이언트에서 사이퍼슈트를 서버에 전달 후 서버는 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는지 확인 - 제공 가능 시 인증 메커니즘이 시작, 암호화된 데이터의 송수신이 시작된다. |
- 사이퍼 슈트 : 프로토콜, AEAD사이퍼모드, 해싱알고리즘이 나열된 규약 - AEAD 사이퍼모드 : 데이터 암호화 알고리즘 |
인증메커니즘 | - CA에서 발급한 인증서를 기반 - CA에서 발급한 인증서는 공개키를 클라이언트에 제공, 사용자가 접속한 서버가 신뢰할 수 있는 서버임을 보장 - CA발급과정 : 자신의 사이트 정보와 공개키를 CA에 제출, 이후 CA는 공개키를 해시한 값이 지문(finger print)을 사용하는 CA의 비밀키 등을 기반으로 CA인증서를 발급 |
|
암호화 알고리즘 | - 대수곡선 기반의 ECDHE 또는 모듈신 기반의 DHE를 사용(둘다 디피-헬만 방식을 근간으로 한다.) - 공개값을 공유, 그 후 각자 비밀값과 혼합 후, 혼합값을 공유, 그다음 각자의 비밀값과 또 혼합하면 공통의 암호키 생성 - PSK(사전합의된 비밀키) 생성 되기때문에 보안 성립 |
|
해싱 알고리즘 | - 데이터를 추정하기 힘든 더 작고, 섞여있는 조각으로 만드는 알고리즘이다. - SHA-256알고리즘 : 해시함수 결과값이 256비트인 알고리즘 많은 블록체인 시스템에서 사용된다. 전처리를 하고 전처리된 메시지를 기반으로 해시를 반환 |
- 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값 - TLS 1.3은 사용자가 사이트에 재방문 시 SSL/TLS에서 보안 세션을 만들때 걸리는 통신을 하지 않아도 된다.(0-RTT) |
- SEO에 도움이 된다.(캐노니컬설정, 메타설정, 페이지속도 개선, 사이트맵 관리)
- 구축방법(CA인증키 기반, 서버 앞단에 로드밸런서 배치, HTTPS제공하는 CDS 배치)
5. HTTP/3
- TCP위에 돌아가는 HTTP/2와 달리 QUIC라는 계층위에서 작동, TCP가 아닌 UDP기반작동
- UDP기반이기에 통신 시작 시 3-way handshake과정이 없다.
- QUIC는 첫 연결 설정에 1-RTT만 소요(클라이언트가 서버에 어떤 신호 한번만 줘도 서바가 응답시 바로 본 통신 시작)
- QUIC는 순방향 오류 수정 메커니즘(FEC)이 적용되었다.(전송한 패킷이 손실됐다면 수신측에서 에러를 검출,수정 -> 낮은 패킷손실률을 가진다.)
'Computer Science > 네트워크' 카테고리의 다른 글
네트워크 기기 (0) | 2022.09.08 |
---|---|
TCP/IP 4계층 모델 (0) | 2022.09.07 |
네트워크 기초 (0) | 2022.09.05 |