検索
ホームページウェブフロントエンドhtmlチュートリアルHTTP、HTTPS、SPDY、HTTP2を一度に理解する


この記事の内容は、HTTP、HTTPS、SPDY、HTTP2 を一度に理解することに関するものであり、一定の参考値があるため、必要に応じて使用してください。お友達の方は参考にしていただければ幸いです。

HTTP、HTTPS、SPDY、HTTP2を一度に理解する

インターネット通信プロトコルのベテランとして、HTTP プロトコルは現在 3 回のバージョン変更を経ており、最新バージョンは HTTP2.0 です。これは誰もがよく知っていると思います。 。今日は HTTP の過去と現在について詳しく説明します。

HTTP/0.9

HTTP の最初のバージョンは 1991 年に誕生しました。この最初のバージョンは現在と比べて非常にシンプルで、HTTP ヘッダーやステータス コードがなく、バージョン番号もありませんでしたが、後に他のバージョンの HTTP と区別するためにバージョン番号が 0.9 に設定されました。 HTTP/0.9 は Get という 1 つのメソッドのみをサポートしており、リクエストは 1 行のみです。

GET /hello.html
応答も非常に単純で、HTML ドキュメント自体が含まれるだけです。

<HTML>
Hello world
</HTML>

TCP 接続が確立されると、サーバーは HTML 形式の文字列をクライアントに返します。送信後はTCP接続を切断してください。ステータス コードやエラー コードがないため、サーバー処理中にエラーが発生した場合は、問題の説明情報を含む特別な HTML ファイルのみが返されます。これは HTTP/0.9 の最も古いバージョンです。

HTTP/1.0

1996 年に HTTP/1.0 バージョンがリリースされ、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.1 は HTTP/1.0 の数か月後にリリースされました。 HTTP/1.1 は、HTTP/1.0 をさらに改良したものです。HTTP1.1 では、主に次の点が改善されています。

接続を再利用できる

パイプラインの追加: HTTP パイプラインは、送信中にサーバーからの応答を待たずに、複数の HTTP リクエストをバッチで送信します。パイプライン メカニズムは、永続的な接続を通じて完了する必要があります。ブラウザによる HTTP リクエストのバッチ送信により、特に送信遅延 (ラグ/レイテンシー) が大きい場合に、ページの読み込み時間を大幅に短縮できます。注意すべき点の 1 つは、GET メソッドや HEAD メソッドなどのパイプラインを使用できるのはべき等リクエストのみであることです。

チャンクエンコーディング送信: このエンコーディングはエンティティをチャンクで送信し、長さが送信の終了を示す 0 ブロックになるまでブロックごとに長さを示します。これは、エンティティの長さが不明な場合に特に便利です (データベースによって動的に生成されるデータなど)

etag、cache-control などのキャッシュ制御メカニズムをさらに導入します。

言語、エンコーディング、タイプなどを含むコンテンツ ネゴシエーション メカニズムを導入します。クライアントとサーバーが最も適切なコンテンツ交換について合意できるようにします。

要求メッセージと応答メッセージの両方が Host ヘッダー フィールドをサポートします。HTTP1.0 では、各サーバーは一意の IP アドレスにバインドされていると見なされます。の場合、リクエスト メッセージ内の URL にはホスト名 (hostname) が渡されません。しかし、仮想ホスト技術の発展により、物理サーバー上に複数の仮想ホスト (マルチホーム Web サーバー) が存在し、IP アドレスを共有できるようになりました。したがって、Host ヘッダーの導入が必要です。

OPTIONS、PUT、DELETE、TRACE、CONNECT メソッドを追加

HTTP/1.1 は多くの点で最適化されており、最も広く使用されているプロトコル バージョンとして、すでに多くのネットワークを満足させることができます。 Web ページがますます複雑になり、独立したアプリケーションに進化するにつれて、HTTP/1.1 ではいくつかの問題が徐々に明らかになります:

データを送信するときは、毎回接続を再確立する必要があります。不親切です

送信内容はプレーンテキストであり、安全性が十分ではありません

ヘッダーの内容が大きすぎ、リクエストのたびにヘッダーがあまり変更されないため、無駄が発生します

サービスへのキープアライブ 最後にはパフォーマンスへのプレッシャーがもたらされる

これらの問題を解決するために、HTTPS と SPDY が登場しました。

SPDY

実際、SPDY は新しいプロトコルではなく、HTTP の前のセッション層です。

2010 年から 2015 年にかけて、Google は実験的な SPDY プロトコルを実装することで、クライアントとサーバーの間でデータを交換する代替方法を実証しました。ブラウザーとサーバーサイドの開発者の注目を集め、応答量の増加を明確にし、データ転送の複雑さを解決します。 SPDY プロジェクトを開始するときのデフォルトの目標は、

ページ読み込み時間 (PLT) を 50% 削減することです。

Web サイトの作成者がコンテンツを変更する必要はありません。

ネットワーク インフラストラクチャを変更せずに、展開の複雑さを最小限に抑えます。

オープンソース コミュニティと協力して、この新しいプロトコルを開発しています。

実際のパフォーマンス データを収集して、この実験プロトコルが有効かどうかを検証します。

ページの読み込み時間を短縮するという目標を達成するために、SPDY は新しいバイナリ フレーミング データ レイヤーを導入して、多方向のリクエストと応答を可能にし、優先順位を付け、不要なネットワーク遅延を最小限に抑え、ネットワーク遅延をより効率的に利用することを目的としています。基礎となる TCP 接続。

HTTP/2.0

2015 年に HTTP/2.0 が登場しました。まず HTTP/2.0 の特徴を紹介します。

バイナリ フレーム層を使用する: HTTP のセマンティクス、ステータス コード、 URI およびヘッダー フィールドは、HTTP1.1 のパフォーマンス制限を突破し、送信パフォーマンスを向上させ、低遅延と高スループットを実現します。バイナリ フレーム層では、HTTP2.0 は送信されるすべての情報を小さなメッセージとフレームに分割し、バイナリ形式でエンコードします。HTTP1.x のヘッダー情報はヘッダー フレームにカプセル化され、リクエストの本文はヘッダー フレームにカプセル化されます。データフレーム。

バイナリ フレーミング

多重化: HTTP/1.x では、長時間の接続が有効になっている場合でも、帯域幅が十分な場合、リクエストはシリアルに送信されます。 HTTP/2.0 では、帯域幅の使用率を向上させるために複数のリクエストを並行して送信できる多重化方式が採用されています。

多重化

データ フローの優先順位: リクエストは同時に送信できるため、ブラウザーが主要な CSS または JS ファイルがページのレンダリングを完了するのを待っている場合、サーバー画像リソースの送信に重点を置いていますか? HTTP/2.0 では、データ フローの優先順位値を設定できます。この優先順位値により、クライアントとサーバーがさまざまなフローを処理するために使用するさまざまな優先順位戦略が決まります。

サーバー側プッシュ: HTTP/2.0 では、サーバーはリクエスト以外のコンテンツをクライアントに送信できます。たとえば、ページがリクエストされると、サーバーはページ関連のロゴ、CSS をプッシュします。サーバーはクライアントがこれらを使用すると考えるため、リクエストが来るまで待ってから送信するのではなく、他のファイルをクライアントに直接送信します。これは、すべてのリソースを 1 つの HTML ドキュメントに集めるのと同じです。

ヘッダー圧縮: ヘッダー テーブルを使用して、以前に送信されたキーと値のペアを追跡し、各リクエストと応答で同じコンテンツが送信されることはありません。

上記は、HTTP、HTTPS、SPDY、および HTTP2 を一度に理解するための完全な入門書です。Html5 チュートリアル について詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。 。



以上がHTTP、HTTPS、SPDY、HTTP2を一度に理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Springboot怎么使用内置tomcat禁止不安全HTTPSpringboot怎么使用内置tomcat禁止不安全HTTPMay 12, 2023 am 11:49 AM

Springboot内置tomcat禁止不安全HTTP方法1、在tomcat的web.xml中可以配置如下内容让tomcat禁止不安全的HTTP方法/*PUTDELETEHEADOPTIONSTRACEBASIC2、Springboot使用内置tomcat没有web.xml配置文件,可以通过以下配置进行,简单来说就是要注入到Spring容器中@ConfigurationpublicclassTomcatConfig{@BeanpublicEmbeddedServletContainerFacto

JAVA发送HTTP请求的方式有哪些JAVA发送HTTP请求的方式有哪些Apr 15, 2023 am 09:04 AM

1.HttpURLConnection使用JDK原生提供的net,无需其他jar包,代码如下:importcom.alibaba.fastjson.JSON;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.HttpURLConnection;

nginx中如何升级到支持HTTP2.0nginx中如何升级到支持HTTP2.0May 24, 2023 pm 10:58 PM

一、前言#ssl写在443端口后面。这样http和https的链接都可以用listen443sslhttp2default_server;server_namechat.chengxinsong.cn;#hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security:max-age=0将缓存设置为0可以撤销hstsadd_head

Nginx的HTTP2协议优化与安全设置Nginx的HTTP2协议优化与安全设置Jun 10, 2023 am 10:24 AM

随着互联网的不断发展和改善,Web服务器在速度和性能上的需求也越来越高。为了满足这样的需求,Nginx已经成功地掌握了HTTP2协议并将其融入其服务器的性能中。HTTP2协议要比早期的HTTP协议更加高效,但同时也存在着特定的安全问题。本文将为您详细介绍如何进行Nginx的HTTP2协议优化和安全设置。一、Nginx的HTTP2协议优化1.启用HTTP2在N

Python的HTTP客户端模块urllib与urllib3怎么使用Python的HTTP客户端模块urllib与urllib3怎么使用May 20, 2023 pm 07:58 PM

一、urllib概述:urllib是Python中请求url连接的官方标准库,就是你安装了python,这个库就已经可以直接使用了,基本上涵盖了基础的网络请求功能。在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。Python3.x中将urllib2合并到了urllib,之后此包分成了以下四个模块:urllib.request:它是最基本的http请求模块,用来模拟发送请求urllib.error:异常处理模块,如果出现错误可以捕获这些异常urllib

Nginx中HTTP的keepalive怎么配置Nginx中HTTP的keepalive怎么配置May 12, 2023 am 11:28 AM

httpkeepalive在http早期,每个http请求都要求打开一个tpcsocket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次tcp连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少time_wait状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-ali

Nginx http运行状况健康检查如何配置Nginx http运行状况健康检查如何配置May 14, 2023 pm 06:10 PM

被动检查对于被动健康检查,nginx和nginxplus会在事件发生时对其进行监控,并尝试恢复失败的连接。如果仍然无法恢复正常,nginx开源版和nginxplus会将服务器标记为不可用,并暂时停止向其发送请求,直到它再次标记为活动状态。上游服务器标记为不可用的条件是为每个上游服务器定义的,其中包含块中server指令的参数upstream:fail_timeout-设置服务器标记为不可用时必须进行多次失败尝试的时间,以及服务器标记为不可用的时间(默认为10秒)。max_fails-设置在fai

怎么利用Java实现调用http请求怎么利用Java实现调用http请求Jun 02, 2023 pm 04:57 PM

一、概述在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适。很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信、天气等)。在Java项目中调用第三方接口的方式有:1、通过JDK网络类Java.net.HttpURLConnection;2、通过common封装好的HttpClient;3、通过Apache封装好的CloseableHttpClient;4、通过SpringBoot-RestTemplate;二、Java调用第三方

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)