HTTPプロトコル
HTTPは、その単純な、分散ハイパーメディア情報システムのための迅速な方法へのオブジェクト指向のアプリケーション層に属するプロトコルです。
HTTP / 0.9、HTTP / 1.0、HTTP / 1.1、HTTP / 2.0
(1)HTTPプロトコル:ステートレスステートレス
サーバーは、ソースの訪問者を追跡することはできません
(2)ステートレスのHTTPプロトコルを解決する方法
クッキーストアクライアント セッション・サーバ・ストレージ
(3)のhttp業務:訪問のコース
リクエスト:リクエスト・ レスポンス:レスポンス
クッキーの分類
(1)脂肪クッキー:ユーザー・アクセスの記録については、お勧めしません、ユーザーのプライバシーを漏洩することは容易です
(2)薄いクッキー:ユーザの閲覧にのみユーザIDを特定し、より詳細な情報は、ショッピングカート内のアイテムのように、ユーザ情報、サーバーに格納されています。セッションのメカニズムは、この機能を実現することができ、それはサイトでのユーザーアクセスの行動を記録することができ、セッションはユーザーのCookieに関連付けられています。セッションが小さいデータメモリ、ユーザの記録動作に格納されています。クッキーを持つユーザーは、そのユーザーの前に情報を閲覧することを、対応するセッション情報については、サーバのルックスにアクセスした場合。
クッキーとセッションはステートレスHTTP欠陥を構成するユーザアクセスの行動を追跡するための重要な手段です。
HTTP要求パケット
HTTPレスポンスメッセージ
HTTPプロトコルステータスコードの分類
状態(ステータスコード):
1xx:100-101メッセージの警告
の2xx:200-206成功
の3xx:300-305リダイレクト
の4xx:400から415エラークラス情報、クライアントエラー
5xxの:500から505エラークラス情報、サーバー側のエラー
200:成功、パケットの応答エンティティ本体部分における要求データ; OK 301:URLポイントリソース要求には、削除された;しかし、ヘッダ場所によって応答パケットがリソースの現在位置の新しい位置を示し、移動永久に永久的なリダイレクト 302:一時的に一時的なリダイレクト移動リソースの場所の新しい場所を示す暫定応答メッセージ 304:クライアントは、条件式にリクエストを送信しますが、サーバーの変更上のリソースが発生していない、クライアントがこのレスポンスのステータスコードに応答して通知されたが、変更されていない 401:アクセスリソースへの順に口座番号とパスワードの認証を入力する必要があります。無断 403:要求が禁止されている;禁じ 404:クライアントから要求されたリソースを見つけることができませんサーバーが、見つかりません 500:内部サーバーエラー、内部サーバーエラー 502:プロキシをからバートゲートウェイ、バックエンドサーバは、ゲートウェイに接続しないよう、擬似応答を受信した サービスが利用できない、サーバが要求を処理するために一時的な過負荷またはサーバの維持:503 ゲートウェイタイムアウト:504
HTTPヘッダフィールド
1>情報HTTPヘッダフィールドは、最も豊富に含まれています。ヘッダーフィールドは、要求と応答パケットの両方に存在しており、カバーHTTPパケットに関連するコンテンツ情報。ヘッダフィールドを顧客端末のパケットボディサイズやサーバ、言語、および認証情報コンテンツを利用提供することで使用して ヘッダフィールドは、フィールド名およびフィールド値のヘッダ部分によって>フィールドコロンによって構成設定HTTPヘッダ2「:」パーティション 単一のHTTPヘッダーフィールドに対応する3>フィールド値が複数の値を有していてもよい 4>パケットヘッダ明細書において同じヘッダフィールド名の2つ以上のヘッダフィールドに現れる内部処理ロジックブラウザによれば、明らかではありません異なる優先順位が異なっていてもよく、結果は、均一でなくてもよいです
ヘッダーカテゴリー:
一般的なヘッダ:要求パケットおよび応答パケットは、ヘッダ部分の両方に使用する 要求ヘッダー:要求ヘッダを送信を使用した場合、クライアントからサーバへのパケット。相補体は、優先度として要求コンテンツ関連情報、顧客情報、追加のコンテンツを要求し 、応答ヘッダ:ヘッダは、サーバ側からの応答パケットを使用して、クライアントに返さ。応答の追加コンテンツを補完する、クライアントは、追加のコンテンツ情報取り付けるために必要とされる 要求パケットと応答パケットの一部のヘッダに使用するエンティティ:エンティティヘッダを。企業のリソースコンテンツ更新時間に関連する補足情報 拡張ヘッダ
通用首部:
日付:作成時刻パケットの 接続:そのようキープアライブなどの接続状況、閉じる ビア:中間ノードのパケットパス(プロキシ、ゲートウェイ)を表示する キャッシュなどの制御バッファ、長い:のCache-Control MIME-バージョン:送信側使用をMIMEバージョン 警告:エラー通知
リクエストヘッダ:
受け入れ:サーバーの通知それらの薬学的にメディアタイプは 、受け入れ文字セット:クライアント許容文字セット のAccept-エンコード:クライアントは、薬学的なGZIPとして、フォーマットをコードする クライアント受け入れ言語:受け入れ言語
クライアントIP:リクエストクライアントのIP ホスト:サーバー名とリクエストのポート番号 のReferer:現在の前にURL URIへジャンプ ユーザーエージェント:エージェント・クライアント、ブラウザのバージョン
条件式のリクエストヘッダ:
期待:クライアントが必要なサーバの動作のリストを要求することを可能にする 場合は、修正-ので:要求されたリソースが変更されたかどうかを指定した時間は、発生したので、 上記とは対照:以来場合は、未修飾- の場合-なし-マッチ:ローカルキャッシュをドキュメントに保存されているのETagタグがたEtagサーバのドキュメントに一致しない 場合は、試合:上記とは対照的に、
セキュリティリクエストヘッダ:
許可:な口座番号やパスワードなど、サーバに認証情報を送信する クッキー:クライアントがサーバにクッキーを送信します
エージェントリクエストヘッダ:
プロキシ認証:プロキシサーバーへの認証
レスポンスヘッダ:
情報:
年齢:最初の作成から長い応答時間を開始した サーバーソフトウェア名とバージョン:サーバーを
場合表現のさまざまな方法を使って、リソース:ネゴシエーションヘッダ
受け入れ-範囲:レンジタイプのサーバーが要求受け入れることができ 、サーバのリストを表示するために他のヘッダのを:ヴァリ
セキュリティレスポンスヘッダ:
Set-Cookie:クライアントに設定されたCookie WWW認証:クライアントリストへのサーバーからの挑戦
エンティティヘッダ:
許可:このリソース要求エンティティに記載されている方法が使用できる 場所:顧客にどこにある実際のエンドエンティティ伝える コンテンツエンコード:エージェントによる符号化 のContent-言語:ときに最も適切なボディランゲージの理解 のContent-Lengthを:ボディ長 コンテンツ場所:真の位置エンティティ コンテンツタイプ:対象物体の種類、テキストなど
キャッシュ関連:
ETag:ラベルは、企業が拡張 有効期限:エンティティ期限切れ のLast-Modified:過去には、時間を変更
クッキー
HTTPはステートレスなプロトコルです。議定書そのものではない保存された要求と応答との間の通信状態。HTTPでこのレベル、要求または応答を送信するためのプロトコルは、何も続く治療を持っていたこと。これは、プロトコルの拡張性、およびHTTPプロトコルは、具体的にとてもシンプルに設計されていることを保証するために、すぐに多数のトランザクションを処理することです。Webが発展し続けている。しかし、多くの企業が保存する状態を通信する必要があります。クッキーは、技術を導入しました。クライアントの状態を制御するための要求と応答メッセージを書き込むことによって、技術クッキークッキー情報を使用してクッキーの状態管理。クッキーは、クッキー保存するために、サーバ通知からクライアントを送信し、応答メッセージ中のSet-Cookieによるヘッダフィールド情報と呼ばれます。クライアントがサーバに要求を送信し、次の時間がダウンすると、クライアントは自動的にリクエストメッセージて送信してCookie値を追加しました。サーバー発見クッキーがクライアントによって送信されたとき、私たちは情報が最終的に得られる前に、それはからの接続要求は、比較に記録されているサーバー、状態クライアントに送信されているかどうかをチェックします
Set-Cookieヘッダーフィールド
Set-Cookieヘッダーフィールドの例:
Set-Cookie:状態=有効。有効期限が切れる=金、2017年11月24日20時30分02秒GMT。パス= /;
意味:
NAME = VALUEクッキー与えられた名前とその値、これは必須アイテムがされ 、ブラウザを閉じるまで= DATE前にクッキーの有効な、明示的に指定しない場合、デフォルトの有効期限が切れる パス=クッキーのアプリケーションがオブジェクトとして、サーバ上のファイルディレクトリへのパス、もし既定のドキュメントファイルのディレクトリを指定しない 指定されていない場合は、ドメイン=ドメイン名は、該当するCookieオブジェクトとして、デフォルトはクッキーのドメインネームサーバを作成することです HTTPSのセキュアな通信時にのみ送信されますクッキーを確保 HttpOnlyのクッキーを制限するためには、することはできませんがJavaScriptのスクリプティング
カールツール
カールファイル転送ツールは、コマンドラインモードで動作するようにURL構文基づいており、それはFTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILEおよびLDAPやその他のプロトコルをサポートしています。カールサポートHTTPS認証、HTTP-POST、PUTおよび他の方法と、FTPアップロード、Kerberos認証、HTTPアップロード、プロキシ、クッキー、ユーザ名/パスワード認証、ファイルのダウンロードHTTP、HTTPファイルのアップロード、HTTPプロキシパイプライン(プロキシトンネリング)は、また非常に強力な、FTPサーバにファイルをアップロードするためのIPv6、SOCKS5プロキシサーバー、HTTP経由でプロキシサーバーをサポートしています
カール[オプション] [URL ...]
-A / -ユーザエージェント<文字列 > サーバーへのユーザー・エージェントが提供 -e / -リファラ<URL>ソースURL --cacert <ファイル> CA証明書(SSL)は、 -k / -安全でないSSL証明書に無視することができます接続 --compressedが求められると、圧縮形式の戻り / -Hを-ヘッダ<線>からサーバに定義された送信ヘッダ情報 パケットのヘッダ情報を含む-i表示ページコンテンツ -I / -ヘッドのみを表示ヘッダ情報応答パケット -D / -ダンプ-ヘッダー<ファイル > URL指定されたファイルに格納されたヘッダ情報 --basic使用HTTP基本認証 -u / -ユーザー<ユーザー[:パスワード]> とユーザーパスワードサーバ -L場合そこに再送信要求が3xx応答コードを、新しい場所に -O URLローカルにファイルを保存するために、デフォルトのファイル名を使用して -o <ファイル>指定されたファイルに保存されているネットワークファイル、 伝送速度レートを設定---リミット<料金> - 0 / - HTTP使用してHTTP1.0番号0、1.0 冗長さらに詳細- -v / HTTP機能使用して、-Cオプションファイル -c / -クッキージャー<ファイル名>は、クッキーは、URLに保存されています指定されたファイルで のプロキシ<proxyhost [:ポート]> - -x / プロキシサーバーのアドレスを指定します 指定されたサーバに要求を送信する要求<コマンド>方法- -X / -U / -プロキシ・ユーザー<ユーザー :パスワード> パスワードとユーザのプロキシ FTPサーバにアップロードし、ローカルファイルを指定するには、-Tオプション --data / -d POSTメソッド使用して転送データを指定 -b名=データをセットクッキー値は、サーバーへのサーバーの応答バックから取得されます
:の例192.168.34.100ホストの/ var / www /のHTML /ディレクトリ下のファイルアクセス情報
[[email protected]] #curl 192.168.34.100 上海へようこそ
例2:サーバーの使用状況にユーザーエージェントを設定-A
[[email protected]] #curl -A 'IE20' http://192.168.34.100 上海へようこそ
例3:URLソースは、Baiduのウェブサイトを介してジャンプするには、-eオプションを使用します
[[email protected]] #curl -A 'IE20' -e 'www.baidu.com' http://192.168.34.100 上海へようこそ
追跡、ホストが模倣Baiduのことである見ることができます
例4:-iオプション:表示するページのコンテンツ、メッセージのヘッダ情報を含みます
[[email protected]] #curl -i http://192.168.34.100 HTTP / 1.1 200 OK 日:金、2019年11月29日4時00分51秒GMT サーバー:Apacheの/ 2.4.6(CentOSの)はOpenSSL / 1.0。 PHP / 5.4.16 2Kは、FIPS のLast-Modified:木、2019年11月28日午後一時43分21秒GMT のETag: "14-598684bf4e1c0" のAccept-範囲は:バイト のContent-Lengthを:20 のContent-Type:text / htmlのを。文字セット= UTF-8 の上海へようこそ
例5:指定したファイル-cオプションの使用状況に保存されたクッキー内のURL:
[ルート@ centos7html] #curl -c /data/cookie.txt http://192.168.34.101/setcookie.phpデータディレクトリに保存されているWebページにcookie.phpます
elinksツール:
elinks [OPTION] ... [URL] ...
-dump:非対話型モードでは、標準出力へのURLの出力の内容 -source:印刷元を
デモ:
[ルート@ centos7html] #elinks -dump 192.168.34.100 上海へようこそ [ルート@ centos7html] #elinks -source 192.168.34.100 上海へようこそ
httpdがユーティリティが付属しています
htpasswdの:基本認証ベースのファイルの実装、アカウントのパスワードファイル生成ツール使用 のapachectl:httpdがサービス制御スクリプト、サポート開始と停止が付属しています rotatelogsの:ログローリングツール のaccess.log - > のaccess.log、access.1。ログ- > のaccess.log、acccess.1.log、access.2.log
httpdのストレステストツール
AB、WebBenchの、http_load、Seige JMeterのオープンソース LoadRunnerの事業は、我々は、関連する証明書持って 、網易実際の要求の生産環境をコピーして、それを保存:tcpcopyを
AB [OPTIONS] URL
のhttpd-toolsパッケージから
-n:要求の総数 -c:同時シミュレーション -k:永続的な接続モードテスト中
調整するために開くことができるファイルの数#-nのulimit
例:
ホストでログAログファイルを導入し、m.txt命名/ htmlのディレクトリの下には/ var / WWW保存されています
[[email protected]] #cpは/ var / log / /var/www/html/m.txtメッセージ [[email protected]] #cd / var / www / htmlと設定 [ルート@ centos7html] #ls index.htmlをm.txt
ABコマンドを使用して、ホストBで行うストレステスト、実行要求2000、パラレルアナログ100の数
[ルート@ centos7html] #ab -c 100 -n 2000 http://192.168.34.100/m.txt 2000个请求数、模拟100个并行数 これはApacheBench、バージョン2.3である<$リビジョン:1430300 $> 著作権1996アダムTwiss、ゼウス・テクノロジー株式会社、http://www.zeustech.net/ は、Apache Software Foundation、http://www.apache.org/にライセンス (我慢して)ベンチマーキング192.168.34.100 完成した200件のリクエスト 400件のリクエストを完了には 600件のリクエストを完了します 完成した800件のリクエスト 完了千のリクエスト 完了1200の要求 完了1400の要求 完了1600の要求 完了1800の要求 完了2000の要求 仕上がり2000人の要求 サーバソフトウェア:Apacheの/ 2.4.6 サーバーのホスト名:192.168.34.100 サーバーポート:80 ドキュメントパス:/m.txt 文書の長さ:207バイト 同時実行レベル:100 0.943秒:テストにかかる時間 コンプリートリクエスト:2000 失敗した要求:0 書き込みエラー:0 2xx以外の応答:2000 合計転送:834000のバイト HTMLは転送:414000のバイト 毎秒要求:2120.15 [#/秒(平均)每秒访问多少个文件 要求あたりの時間:47.167 [MS](平均) 時間要求当たり:平均0.472 [ミリ秒](すべての同時要求を横切ります) 転送速度:863.38 [バイト/秒]受信 接続タイムズ(ミリ秒) 分間平均[+/- SD]メジアン、最大 接続2:0 3.4 1 23 処理:9 43 6.6 43 60 待機中:5 43 6.7 43 60 合計:29 45 6.5 45 67 リクエストの割合が一定時間(ms)以内に配信 50%45 66%48 75%49 80%51 90%54 95%57 98%59 99%61 100%67(最長要求)
例-nのulimit:ファイルサイズを調整し、あなたがより多くの同時ファイルAB作ることができます
#ulimit -n 10240 [centos7html @ルート] [ルートcentos7html @] #ulimit -a コアファイルサイズ(ブロック、-c)0 データSEGサイズ(バイト、-d)無制限の スケジューリング優先度(-e)0 ファイルサイズ(ブロック、-f)無制限の ペンディング信号(-i)5782 最大ロックされたメモリ(キロバイト、-l)64 最大メモリサイズ(バイト、-m)無制限の オープンファイル(-n)10240 パイプのサイズ(512バイト、-p)8 POSIXメッセージキュー(バイト、-q)819200 リアルタイム優先順位(-r)0 スタックのサイズ(キロバイト、-s)8192 CPU時間(秒、-t)無制限 最大ユーザ・プロセス(-u)5782 の仮想メモリ(キロバイト、-v)無制限 無制限のファイルロック(-x)
このとき、ファイルサイズへのアクセスが10240に変更されている、あなたは、ファイルが大きいほど、並列にアクセスすることができます