ネットワークプロトコル
5293 ワード
ネットワーク7層プロトコル
OSIのレイヤー
機能
プロトコルファミリー
アプリケーション層
ファイル転送、Eメール、ファイルサービス、仮想端末
TFTP,HTTP,SNMP,FTP...
ひょうげんそう
データフォーマット、コード変換、データ暗号化
契約なし
セッションレイヤ
他のノードとの連絡を解除または確立する
契約なし
でんそう
エンドツーエンドのインタフェースを提供
TCP,UDP
ネットワーク層
パケットのルーティングの選択
IP,ICMP,ARP,RARP
データリンク層
アドレス付きフレームおよびエラー検出機能の転送
SLIP,CSLIP,PPP
ぶつりそう
物理メディア上でバイナリデータとしてデータを転送する
ISO2110,IEEE802,IEEE802.2
ぶつりそう
ネットワーク線のインタフェースタイプ、光ファイバのインタフェースタイプ、各種伝送媒体の伝送速度などの物理装置標準を定義する.主な役割は、ビットストリーム(1,0から電流の強弱に変換して伝送し、目的地に着いたら1,0に変換する、すなわち、私たちがよく言うデジタルモード変換とモード数変換)であり、この層のデータをビットと呼ぶ.
データリンク層
フォーマットされたデータをどのように伝送するか、データ伝送エラーの検出と修正を含むフレームの物理チャネルでの伝送をどのように制御するか、データの信頼性の高い伝送を保証するかを定義した.
ネットワーク層
IPによるドメイン名のアドレッシング.
IPプロトコルは、あるコンピュータからネットワークを介して別のコンピュータにデータを送信する責任を負います.データは複数の小さなブロックに分割され、IPパケットを介して送信される.IPパケットの特徴はブロックごとに送信され、複数のルートを通過するが、送達が保証されず、順序も保証されない.
1つのIPパケットは、送信されるデータに加えて、ソースIPアドレスとターゲットIPアドレス、ソースポートとターゲットポートを含む.
でんそう
例えばTCPは、大量のデータを送信するために使用される.TCPプロトコルは、2台のコンピュータ間で信頼性の高い接続を確立し、パケットが順番に到着することを保証します.TCPプロトコルは、握手によって接続を確立し、各IPパケット番号に対して、相手が順番に受信していることを確認し、パケットが失われた場合、自動的に再送します.
TCPがメッセージセグメントを発行すると、タイマが起動し、宛先がこのメッセージセグメントを受信したことを確認するのを待っています.確認情報をタイムリーに受信できなかったら、このメッセージセグメントを再送信します.TCP受信側が送信側からTCPメッセージセグメントを受信すると、この確認は直ちに送信されるものではなく、通常は数分の1秒遅延する確認を送信する.
TCPは、そのヘッダとデータのチェックサムを維持します.これはエンドツーエンドのチェックサムであり、受信したメッセージセグメントのチェックサムに問題がある場合、TCPは、受信を確認する情報を送信せずに、受信をタイムアウトして再送する.最も信頼できる方法は,確認が得られない限り,確認情報が受信されるまでデータを再送することである.
TCP三回握手
1.クライアントはsynパケット(syn=j)をサーバに送信し、SYN_SEND状態、サーバー確認待ち;
2.サーバはSYNパッケージを受け取り、クライアントのSYN(ack=j+1)を確認しなければならない.同時に自分もSYNパケット(syn=k)、すなわちSYN+ACKパケットを送信する.サーバがSYN_に入るRECV状態;
3.クライアントはサーバのSYN+ACKパケットを受け取り、サーバに確認パケットACK(ack=k+1)を送信し、このパケットの送信が完了し、クライアントとサーバはESTABLISHED状態に入る.3回の握手を終え、データ転送を開始.
どうして3回握手する必要がありますか? 3回の握手だけで、クライアントとサーバは互いに双方向の接続を確認し、デュアルワークデータ伝送を実現することができます.
四度手を振る
1.クライアントはFIN(fin=i)を送信し、クライアントからサーバへのデータ転送をオフにし、クライアントがFIN_に入るWAIT_1ステータス;
2.サーバはFINを受け取った後、ACK(ack=i+1)個のクライアントを送信し、確認シーケンス番号は受信シーケンス番号+1であり、サーバはCLOSE_に入るWAIT状態;
3.サーバは、クライアントへのサーバのデータ転送を停止するFIN(fin=j)を送信し、サーバはLAST_に入るACK状態;
4.クライアントがFINを受け取った後、クライアントはTIME_に入るWAIT状態は、次にサーバにACK(ack=j+1)を送信し、サーバはCLOSED状態に入り、4回の手を振る.
どうして4回手を振ったの? サーバはクライアントのフラクチャ要求を受信すると,データと確認コードを送信することができ,この2つの部分は2つに分かれており,より多くのステップが必要である.
少量のデータを送信するUDP.UDPプロトコルを使用して接続を確立する必要はなく、相手のIPアドレスとポート番号を知るだけで、パケットを直接送信することができますが、データが届くかどうかは保証されません.
UDPは信頼性の低いデータ伝送であるにもかかわらず、TCPと比較して、その伝送速度は速く、必要なリソースは少なく、信頼性の高い到着を要求しないデータ伝送にはUDPプロトコルを使用することができる.
TCPとUDPの違い
1.TCP伝送が遅く、UDP伝送が速い.UDPは接続に向いていないから.
2.TCP伝送は接続を確立する必要があり、UDPは必要ない;TCP伝送が信頼でき、UDPが信頼できない;
3.TCP伝送はストリームモードを使用し、UDP伝送はデータレポートモード(DatagramePacket伝送データを使用)を使用する.
4.TCPはデータの正確性を保証し、UDPはパケットを失う可能性がある.TCPは伝送順序を保証し、UDPは保証しない.
5.TCPは大量のデータを伝送するのに適しており、UDPは分割されず、ビッグデータを伝送するのに適していない.
6.システム資源に対する要求はTCPが多く、UDPが少ない.
セッションレイヤ
アプリケーション間の通信を確立および管理します.
ひょうげんそう
異なるシステムプラットフォーム間の通信構文の問題を解決します.
アプリケーション層
HTTP,ハイパーテキスト転送プロトコルは,サーバがローカルブラウザにハイパーテキストを転送する転送プロトコルである.
HTTPの特徴
1.簡単で迅速で、クライアントがサーバーに要求する時、方法とパスを伝達するだけです.
2.柔軟で、HTTPは任意のタイプのデータオブジェクトを伝送し、Content-Type属性によってタグ付けされる.
3.接続がなく、接続ごとに1つの要求だけを処理し、サーバーはクライアントの要求を処理し、クライアントの応答を受け取った後、すぐに接続を切断し、伝送時間を節約する.
4.ステータスなし、トランザクションの記憶力がありません.後続要求の処理に前の情報が必要であれば,再送が必要であり,伝送データ量が増大する.
HTTP REQUEST
1.要求明細:要求方法 要求URL(getメソッドのデータはurlの後に続く) HTTPプロトコルバージョン
2.要求ヘッダ:サーバが使用する追加情報を説明するために使用されます.host,user_があります.Agnet、refer、cookie、accept、connectionなどの情報;
3.空白行
4.要求データ
HTTP RESPONSE
1.ステータスライン:HTTPプロトコルバージョン ステータスコード message;
2.メッセージヘッダ:クライアントが使用する必要があるいくつかの付加情報は、Date、Server、Content-Type、Content-Longthなどがある.
3.空白行
4.本文への応答
HTTPステータスコード
200#リクエストが成功しました.つまり、サーバが成功301#永続リダイレクト302#一時リダイレクト403#を返してアクセスを禁止します.一般的には、サーバ権限が400#エラーリクエストを拒否し、リクエストに構文の問題があるか、リクエストを満たすことができません.403#サーバ権限の問題で404#サーバがユーザ要求のページ500#サーバ内部エラーを表示できなくなりました.大部分はサーバの設定または内部プログラムに問題が発生しました501#アクセス中のウェブサイトをブラウザが要求したコンテンツ502#のゲートウェイに設定していません.プロキシサーバがバックエンドサーバを要求した場合、バックエンド・サーバが使用できないか、対応するゲートウェイ・サーバが完了していません.これは、通常、リバース・エージェント・サーバの下のノードに問題が発生したためです.503#サービスは現在使用できません.サーバのオーバーロードやダウンタイムによるもの、またはリバースエージェントサーバの後ろにサービスを提供できるノードがない可能性があります.504#ゲートウェイタイムアウト、一般的にゲートウェイエージェントサーバがバックエンドサーバを要求する場合、バックエンドサーバは指定された時間内に処理要求を完了していない.多くの場合、サーバがオーバーロードしたため、特定の時間内にフロントエンドエージェントサーバにデータを返さなかった.505#Webサイトでは、Webページを要求するためのブラウザのHTTPプロトコルバージョンはサポートされていません(最も一般的なのはHTTP/1.1です).
getとpostの違い
1.getリクエスト、データはurlの後ろに付いています.postリクエストのデータはリクエストパケットのパケットに格納される.
2.getリクエストのurl長に制限があり、postは理論的にデータサイズの制限がない(サーバでは実際にデータコミットのサイズを設定することができ、phpを例にとると、php.iniのpost_max_sizeはコミットデータのサイズを設定することができる).
3.postのセキュリティはgetのセキュリティよりも高い.getのデータはurlに露出しているからだ.
OSIのレイヤー
機能
プロトコルファミリー
アプリケーション層
ファイル転送、Eメール、ファイルサービス、仮想端末
TFTP,HTTP,SNMP,FTP...
ひょうげんそう
データフォーマット、コード変換、データ暗号化
契約なし
セッションレイヤ
他のノードとの連絡を解除または確立する
契約なし
でんそう
エンドツーエンドのインタフェースを提供
TCP,UDP
ネットワーク層
パケットのルーティングの選択
IP,ICMP,ARP,RARP
データリンク層
アドレス付きフレームおよびエラー検出機能の転送
SLIP,CSLIP,PPP
ぶつりそう
物理メディア上でバイナリデータとしてデータを転送する
ISO2110,IEEE802,IEEE802.2
ぶつりそう
ネットワーク線のインタフェースタイプ、光ファイバのインタフェースタイプ、各種伝送媒体の伝送速度などの物理装置標準を定義する.主な役割は、ビットストリーム(1,0から電流の強弱に変換して伝送し、目的地に着いたら1,0に変換する、すなわち、私たちがよく言うデジタルモード変換とモード数変換)であり、この層のデータをビットと呼ぶ.
データリンク層
フォーマットされたデータをどのように伝送するか、データ伝送エラーの検出と修正を含むフレームの物理チャネルでの伝送をどのように制御するか、データの信頼性の高い伝送を保証するかを定義した.
ネットワーク層
IPによるドメイン名のアドレッシング.
IPプロトコルは、あるコンピュータからネットワークを介して別のコンピュータにデータを送信する責任を負います.データは複数の小さなブロックに分割され、IPパケットを介して送信される.IPパケットの特徴はブロックごとに送信され、複数のルートを通過するが、送達が保証されず、順序も保証されない.
1つのIPパケットは、送信されるデータに加えて、ソースIPアドレスとターゲットIPアドレス、ソースポートとターゲットポートを含む.
でんそう
例えばTCPは、大量のデータを送信するために使用される.TCPプロトコルは、2台のコンピュータ間で信頼性の高い接続を確立し、パケットが順番に到着することを保証します.TCPプロトコルは、握手によって接続を確立し、各IPパケット番号に対して、相手が順番に受信していることを確認し、パケットが失われた場合、自動的に再送します.
TCPがメッセージセグメントを発行すると、タイマが起動し、宛先がこのメッセージセグメントを受信したことを確認するのを待っています.確認情報をタイムリーに受信できなかったら、このメッセージセグメントを再送信します.TCP受信側が送信側からTCPメッセージセグメントを受信すると、この確認は直ちに送信されるものではなく、通常は数分の1秒遅延する確認を送信する.
TCPは、そのヘッダとデータのチェックサムを維持します.これはエンドツーエンドのチェックサムであり、受信したメッセージセグメントのチェックサムに問題がある場合、TCPは、受信を確認する情報を送信せずに、受信をタイムアウトして再送する.最も信頼できる方法は,確認が得られない限り,確認情報が受信されるまでデータを再送することである.
TCP三回握手
1.クライアントはsynパケット(syn=j)をサーバに送信し、SYN_SEND状態、サーバー確認待ち;
2.サーバはSYNパッケージを受け取り、クライアントのSYN(ack=j+1)を確認しなければならない.同時に自分もSYNパケット(syn=k)、すなわちSYN+ACKパケットを送信する.サーバがSYN_に入るRECV状態;
3.クライアントはサーバのSYN+ACKパケットを受け取り、サーバに確認パケットACK(ack=k+1)を送信し、このパケットの送信が完了し、クライアントとサーバはESTABLISHED状態に入る.3回の握手を終え、データ転送を開始.
どうして3回握手する必要がありますか? 3回の握手だけで、クライアントとサーバは互いに双方向の接続を確認し、デュアルワークデータ伝送を実現することができます.
四度手を振る
1.クライアントはFIN(fin=i)を送信し、クライアントからサーバへのデータ転送をオフにし、クライアントがFIN_に入るWAIT_1ステータス;
2.サーバはFINを受け取った後、ACK(ack=i+1)個のクライアントを送信し、確認シーケンス番号は受信シーケンス番号+1であり、サーバはCLOSE_に入るWAIT状態;
3.サーバは、クライアントへのサーバのデータ転送を停止するFIN(fin=j)を送信し、サーバはLAST_に入るACK状態;
4.クライアントがFINを受け取った後、クライアントはTIME_に入るWAIT状態は、次にサーバにACK(ack=j+1)を送信し、サーバはCLOSED状態に入り、4回の手を振る.
どうして4回手を振ったの? サーバはクライアントのフラクチャ要求を受信すると,データと確認コードを送信することができ,この2つの部分は2つに分かれており,より多くのステップが必要である.
少量のデータを送信するUDP.UDPプロトコルを使用して接続を確立する必要はなく、相手のIPアドレスとポート番号を知るだけで、パケットを直接送信することができますが、データが届くかどうかは保証されません.
UDPは信頼性の低いデータ伝送であるにもかかわらず、TCPと比較して、その伝送速度は速く、必要なリソースは少なく、信頼性の高い到着を要求しないデータ伝送にはUDPプロトコルを使用することができる.
TCPとUDPの違い
1.TCP伝送が遅く、UDP伝送が速い.UDPは接続に向いていないから.
2.TCP伝送は接続を確立する必要があり、UDPは必要ない;TCP伝送が信頼でき、UDPが信頼できない;
3.TCP伝送はストリームモードを使用し、UDP伝送はデータレポートモード(DatagramePacket伝送データを使用)を使用する.
4.TCPはデータの正確性を保証し、UDPはパケットを失う可能性がある.TCPは伝送順序を保証し、UDPは保証しない.
5.TCPは大量のデータを伝送するのに適しており、UDPは分割されず、ビッグデータを伝送するのに適していない.
6.システム資源に対する要求はTCPが多く、UDPが少ない.
セッションレイヤ
アプリケーション間の通信を確立および管理します.
ひょうげんそう
異なるシステムプラットフォーム間の通信構文の問題を解決します.
アプリケーション層
HTTP,ハイパーテキスト転送プロトコルは,サーバがローカルブラウザにハイパーテキストを転送する転送プロトコルである.
HTTPの特徴
1.簡単で迅速で、クライアントがサーバーに要求する時、方法とパスを伝達するだけです.
2.柔軟で、HTTPは任意のタイプのデータオブジェクトを伝送し、Content-Type属性によってタグ付けされる.
3.接続がなく、接続ごとに1つの要求だけを処理し、サーバーはクライアントの要求を処理し、クライアントの応答を受け取った後、すぐに接続を切断し、伝送時間を節約する.
4.ステータスなし、トランザクションの記憶力がありません.後続要求の処理に前の情報が必要であれば,再送が必要であり,伝送データ量が増大する.
HTTP REQUEST
1.要求明細:要求方法 要求URL(getメソッドのデータはurlの後に続く) HTTPプロトコルバージョン
2.要求ヘッダ:サーバが使用する追加情報を説明するために使用されます.host,user_があります.Agnet、refer、cookie、accept、connectionなどの情報;
3.空白行
4.要求データ
POST / HTTP 1.1
Host:www.xxx.com
User-Agent:Mozilla...
Connection:Keep-Alive
Cookie:...
a=1&b=2
HTTP RESPONSE
1.ステータスライン:HTTPプロトコルバージョン ステータスコード message;
2.メッセージヘッダ:クライアントが使用する必要があるいくつかの付加情報は、Date、Server、Content-Type、Content-Longthなどがある.
3.空白行
4.本文への応答
HTTP 1.1 200 OK
Date:2019
Server:nginx 1.9
Content-Type:text/html;charset:UTF-8
...
HTTPステータスコード
200#リクエストが成功しました.つまり、サーバが成功301#永続リダイレクト302#一時リダイレクト403#を返してアクセスを禁止します.一般的には、サーバ権限が400#エラーリクエストを拒否し、リクエストに構文の問題があるか、リクエストを満たすことができません.403#サーバ権限の問題で404#サーバがユーザ要求のページ500#サーバ内部エラーを表示できなくなりました.大部分はサーバの設定または内部プログラムに問題が発生しました501#アクセス中のウェブサイトをブラウザが要求したコンテンツ502#のゲートウェイに設定していません.プロキシサーバがバックエンドサーバを要求した場合、バックエンド・サーバが使用できないか、対応するゲートウェイ・サーバが完了していません.これは、通常、リバース・エージェント・サーバの下のノードに問題が発生したためです.503#サービスは現在使用できません.サーバのオーバーロードやダウンタイムによるもの、またはリバースエージェントサーバの後ろにサービスを提供できるノードがない可能性があります.504#ゲートウェイタイムアウト、一般的にゲートウェイエージェントサーバがバックエンドサーバを要求する場合、バックエンドサーバは指定された時間内に処理要求を完了していない.多くの場合、サーバがオーバーロードしたため、特定の時間内にフロントエンドエージェントサーバにデータを返さなかった.505#Webサイトでは、Webページを要求するためのブラウザのHTTPプロトコルバージョンはサポートされていません(最も一般的なのはHTTP/1.1です).
getとpostの違い
1.getリクエスト、データはurlの後ろに付いています.postリクエストのデータはリクエストパケットのパケットに格納される.
2.getリクエストのurl長に制限があり、postは理論的にデータサイズの制限がない(サーバでは実際にデータコミットのサイズを設定することができ、phpを例にとると、php.iniのpost_max_sizeはコミットデータのサイズを設定することができる).
3.postのセキュリティはgetのセキュリティよりも高い.getのデータはurlに露出しているからだ.