찾다
웹 프론트엔드HTML 튜토리얼HTTP, HTTPS, SPDY, HTTP2를 한번에 이해


이 글의 내용은 HTTP, HTTPS, SPDY, HTTP2를 한번에 이해하는 것에 관한 내용으로, 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

HTTP, HTTPS, SPDY, HTTP2를 한번에 이해

인터넷 통신 프로토콜의 베테랑으로서 HTTP 프로토콜은 현재 세 가지 버전 변경을 거쳤습니다. 현재 최신 버전은 모두가 익숙할 것으로 생각되는 HTTP2.0입니다. 오늘은 HTTP의 과거와 현재에 대해 잘 소개하겠습니다.

HTTP/0.9

HTTP의 초기 버전은 1991년에 탄생했습니다. 이 초기 버전은 지금에 비해 매우 간단합니다. HTTP 헤더도 없고, 상태 코드도 없으며, 이후 버전 번호도 없습니다. 0.9로 결정되어 다른 HTTP 버전과 구별됩니다. HTTP/0.9는 Get이라는 한 가지 방법만 지원하며 요청에는 한 줄만 있습니다.

GET /hello.html
응답도 매우 간단하며 HTML 문서 자체만 포함되어 있습니다.

<HTML>
Hello world
</HTML>

TCP 연결이 설정되면 서버는 HTML 형식의 문자열을 클라이언트에 반환합니다. 전송 후 TCP 연결을 닫습니다. 상태 코드와 오류 코드가 없기 때문에 서버 처리 중 오류가 발생하면 문제 설명 정보가 포함된 특수 HTML 파일만 반환됩니다. 이는 HTTP/0.9의 초기 버전입니다.

HTTP/1.0

1996년에 HTTP/1.0 버전이 출시되어 HTTP의 전송 내용이 크게 풍부해졌고, 텍스트 외에도 사진, 비디오 등도 전송할 수 있어 HTTP의 기반이 마련되었습니다. 인터넷의 발달. HTTP/0.9와 비교하여 HTTP/1.0은 주로 다음과 같은 특징을 가지고 있습니다.

요청 및 응답은 HTTP 헤더를 지원하고 상태 코드가 추가되며 응답 개체의 시작 부분은 응답 상태 라인입니다.

프로토콜 버전 정보를 전송해야 합니다. 요청과 함께 HEAD, POST 메서드를 지원합니다.

HTML 파일 이외의 다른 유형의 콘텐츠 전송을 지원합니다.

일반적인 HTTP/1.0 요청은 다음과 같습니다.

GET /hello.html HTTP/1.0
User-Agent:NCSA_Mosaic/2.0(Windows3.1)
200 OK
Date: Tue, 15 Nov 1996 08:12:31 GMT
Server: CERN/3.0 libwww/2.17
Content-Type: text/html
<HTML>
一个包含图片的页面
<img  src="/static/imghwm/default1.png"  data-src="/smile.gif"  class="lazy" alt="HTTP, HTTPS, SPDY, HTTP2를 한번에 이해" >
</HTML>

HTTP/1.1


HTTP/1.0 몇 달 후, HTTP/1.1이 출시되었습니다. HTTP/1.1은 HTTP/1.0보다 더 개선되었습니다. HTTP1.1에서는 주로 다음과 같은 개선 사항이 있습니다:

연결을 재사용할 수 있습니다.

파이프라인 추가: HTTP 파이프라인은 일괄 처리 기술로 여러 HTTP 요청을 제출하는 것입니다. 전송 과정에서 서버의 응답을 기다릴 필요가 없습니다. 파이프라인 메커니즘은 지속적인 연결을 통해 완료되어야 합니다. 브라우저의 HTTP 요청 일괄 제출은 특히 전송 지연(지연/대기 시간)이 높은 경우 페이지 로딩 시간을 크게 단축할 수 있습니다. 한 가지 주목할 점은 멱등성 요청만 GET 및 HEAD 메서드와 같은 파이프라인을 사용할 수 있다는 것입니다.

청크 인코딩 전송: 이 인코딩은 엔터티를 청크로 전송하고 길이가 전송 끝을 나타내는 0 블록이 될 때까지 블록별로 길이를 나타냅니다. 이는 엔터티의 길이를 알 수 없는 경우(예: 데이터)에 특히 유용합니다. 데이터베이스에 의해 동적으로 생성됨)

etag, 캐시 제어와 같은 더 많은 캐시 제어 메커니즘 도입

언어, 인코딩, 유형 등을 포함한 콘텐츠 협상 메커니즘을 도입하고 클라이언트와 서버가 가장 많은 것을 교환하는 데 동의할 수 있도록 합니다. 적절한 콘텐츠

요청 메시지와 응답 메시지 모두 지원됩니다. 호스트 헤더 필드: HTTP 1.0에서는 각 서버가 고유한 IP 주소에 바인딩된 것으로 간주됩니다. 따라서 요청 메시지의 URL은 호스트 이름을 전달하지 않습니다. 그러나 가상 호스트 기술의 발달로 인해 하나의 물리적 서버에 여러 개의 가상 호스트(멀티 홈 웹 서버)가 존재할 수 있으며, 이들은 IP 주소를 공유합니다. 따라서 Host 헤더의 도입이 필요합니다.

새로운 옵션, PUT, DELETE, TRACE, CONNECT 방법

HTTP/1.1은 가장 널리 사용되는 프로토콜 버전으로 여러 측면에서 최적화되었지만 이미 많은 네트워크 요구 사항을 충족할 수 있지만 웹 페이지가 점점 더 복잡해짐에 따라 HTTP/1.1은 독립적인 애플리케이션으로 발전하면서 점차 몇 가지 문제를 노출했습니다.

데이터를 전송할 때 매번 연결을 다시 설정해야 하는데, 이는 특히 모바일 단말기에 불리합니다.

전송 내용이 일반 텍스트이므로 충분히 안전하지 않습니다.

헤더 내용이 너무 크고, 요청할 때마다 헤더가 많이 변하지 않아 낭비가 발생합니다

keepalive는 서버에 성능 압박을 가져옵니다

이러한 문제를 해결하기 위해 HTTPS와 SPDY가 등장했습니다. .

SPDY

사실 SPDY는 새로운 프로토콜이 아니고 HTTP 이전의 세션 레이어입니다.

2010년부터 2015년까지 Google은 실험적인 SPDY 프로토콜을 구현하여 클라이언트와 서버 간에 데이터를 교환하는 대안적인 방법을 시연했습니다. 브라우저와 서버 측 개발자의 초점을 포착하여 증가하는 응답량을 식별하고 복잡한 데이터 전송을 해결합니다. SPDY 프로젝트 시작 시 기본 목표는 다음과 같습니다.

페이지 로드 시간(PLT)을 50% 줄입니다.

웹사이트 작성자가 아무것도 수정할 필요가 없습니다.

네트워크 인프라를 변경하지 않고도 배포 복잡성을 최소화합니다.

이 새로운 프로토콜을 개발하기 위해 오픈 소스 커뮤니티와 협력하고 있습니다.

실제 성능 데이터를 수집하여 이 실험 프로토콜이 효과적인지 확인하세요.

페이지 로드 시간 단축이라는 목표를 달성하기 위해 SPDY는 다방향 요청 및 응답을 가능하게 하는 새로운 바이너리 프레이밍 데이터 계층을 도입하고, 우선순위를 지정하고, 불필요한 네트워크 지연을 최소화하고 제거하여 기본을 더욱 효율적으로 사용합니다. TCP 연결.

HTTP/2.0

2015년에는 HTTP/2.0이 나왔습니다. 먼저 HTTP/2.0의 특징을 소개하겠습니다.

바이너리 프레이밍 계층 사용: 애플리케이션 계층과 전송 계층 사이에 바이너리 프레이밍 계층을 추가하여 HTTP의 의미를 변경하지 않고 달성합니다. HTTP 메서드, 상태 코드, URI 및 헤더 필드의 경우 HTTP1.1의 성능 한계를 극복하고 전송 성능을 향상하며 낮은 대기 시간과 높은 처리량을 달성합니다. 바이너리 프레이밍 계층에서 HTTP2.0은 전송된 모든 정보를 더 작은 메시지와 프레임으로 나누고 이를 바이너리 형식으로 인코딩합니다. HTTP1.x의 헤더 정보는 헤더 프레임에 캡슐화되며 요청 본문은 다음과 같이 캡슐화됩니다. 데이터 프레임.

Binary Framing

Multiplexing: HTTP/1.x의 경우 긴 연결이 활성화되어 있어도 대역폭이 충분하면 요청이 순차적으로 전송됩니다. HTTP/2.0은 대역폭 활용도를 높이기 위해 여러 요청을 병렬로 보낼 수 있는 다중화 방법을 채택합니다.

Multiplexing

데이터 흐름 우선순위: 요청이 동시에 전송될 수 있으므로 브라우저가 주요 CSS 또는 JS 파일의 처리가 완료되기를 기다리는 상황이 있는 경우 페이지 렌더링 중에 서버가 이미지 리소스 전송에 집중하는 경우 어떻게 해야 합니까? HTTP/2.0은 데이터 흐름에 대한 우선순위 값을 설정할 수 있습니다. 이 우선순위 값은 클라이언트와 서버가 다양한 흐름을 처리하는 데 사용하는 다양한 우선순위 전략을 결정합니다.

서버 측 푸시: HTTP/2.0에서는 서버가 클라이언트에 요청 이외의 내용을 보낼 수 있습니다. 예를 들어 페이지가 요청되면 서버가 페이지 관련 내용을 직접 푸시합니다. 로고, CSS 및 기타 파일을 클라이언트는 요청을 보내기 전에 요청이 올 때까지 기다리지 않습니다. 서버는 클라이언트가 이러한 것들을 사용할 것이라고 생각하기 때문입니다. 이는 하나의 HTML 문서에 모든 리소스를 모으는 것과 같습니다.

헤더 압축: 헤더 테이블을 사용하여 이전에 전송된 키-값 쌍을 추적하고 저장합니다. 동일한 콘텐츠의 경우 각 요청 및 응답으로 전송되지 않습니다.

위 내용은 HTTP, HTTPS, SPDY, HTTP2를 한 번에 이해하기 위한 완전한 소개입니다. Html5 튜토리얼에 대해 더 자세히 알고 싶다면 주의하세요. PHP 중국어 웹사이트.



위 내용은 HTTP, HTTPS, SPDY, HTTP2를 한번에 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 segmentfault에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
HTML 태그 및 속성에 일관된 코딩 스타일을 사용하는 것의 중요성을 설명하십시오.HTML 태그 및 속성에 일관된 코딩 스타일을 사용하는 것의 중요성을 설명하십시오.May 01, 2025 am 12:01 AM

일관된 HTML 인코딩 스타일은 코드의 가독성, 유지 가능성 및 효율성을 향상시키기 때문에 중요합니다. 1) 소문자 태그 및 속성 사용, 2) 일관된 압입 유지, 3) 단일 또는 이중 인용문을 선택하고 고수하십시오. 4) 프로젝트에서 다양한 스타일을 혼합하지 않으십시오.

Bootstrap 4에서 멀티 프로 젝트 회전 목마를 구현하는 방법은 무엇입니까?Bootstrap 4에서 멀티 프로 젝트 회전 목마를 구현하는 방법은 무엇입니까?Apr 30, 2025 pm 03:24 PM

솔루션 Bootstrap4에서 다중 프로 젝트 회전 목마를 구현하는 것은 부트 스트랩 4에서 멀티 프로 젝트 회전 목마를 구현하는 것은 쉬운 일이 아닙니다. 부트 스트랩 ...

DeepSeek 공식 웹 사이트는 마우스 스크롤 이벤트를 관통하는 효과를 어떻게 달성합니까?DeepSeek 공식 웹 사이트는 마우스 스크롤 이벤트를 관통하는 효과를 어떻게 달성합니까?Apr 30, 2025 pm 03:21 PM

마우스 스크롤링 이벤트 침투의 효과를 달성하는 방법은 무엇입니까? 웹을 탐색하면 종종 특별한 상호 작용 디자인이 발생합니다. 예를 들어, DeepSeek 공식 웹 사이트에서 � ...

HTML 비디오의 재생 제어 스타일 수정 방법HTML 비디오의 재생 제어 스타일 수정 방법Apr 30, 2025 pm 03:18 PM

HTML 비디오의 기본 재생 제어 스타일은 CSS를 통해 직접 수정할 수 없습니다. 1. JavaScript를 사용하여 사용자 정의 컨트롤을 만듭니다. 2. CSS를 통해 이러한 통제를 아름답게합니다. 3. video.js 또는 plyr와 같은 라이브러리를 사용하여 호환성, 사용자 경험 및 성능을 고려하면 프로세스를 단순화 할 수 있습니다.

휴대 전화에서 기본 선택을 사용하면 어떤 문제가 발생합니까?휴대 전화에서 기본 선택을 사용하면 어떤 문제가 발생합니까?Apr 30, 2025 pm 03:15 PM

휴대 전화에서 기본 선택을 사용하는 데있어 잠재적 인 문제는 모바일 애플리케이션을 개발할 때 종종 상자를 선택해야 할 필요가 있습니다. 일반적으로 개발자 ...

휴대 전화에서 기본 선택을 사용하는 단점은 무엇입니까?휴대 전화에서 기본 선택을 사용하는 단점은 무엇입니까?Apr 30, 2025 pm 03:12 PM

휴대 전화에서 기본 선택을 사용하는 단점은 무엇입니까? 모바일 장치에서 애플리케이션을 개발할 때는 올바른 UI 구성 요소를 선택하는 것이 매우 중요합니다. 많은 개발자 ...

Three.js 및 Octree를 사용하여 방에서 3 인칭 로밍의 충돌 처리를 최적화하는 방법은 무엇입니까?Three.js 및 Octree를 사용하여 방에서 3 인칭 로밍의 충돌 처리를 최적화하는 방법은 무엇입니까?Apr 30, 2025 pm 03:09 PM

Three.js 및 Octree를 사용하여 방에서 3 인칭 로밍의 충돌 처리를 최적화하십시오. 3.js의 Octree를 사용하여 방에서 3 인칭 로밍을 구현하고 충돌을 추가하십시오 ...

휴대 전화에서 기본 선택을 사용할 때 어떤 문제가 발생합니까?휴대 전화에서 기본 선택을 사용할 때 어떤 문제가 발생합니까?Apr 30, 2025 pm 03:06 PM

모바일 장치에서 애플리케이션을 개발할 때 휴대폰에 대한 기본 선택 문제는 종종 사용자가 선택 해야하는 시나리오에 직면합니다. 네이티브 셀 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.