回答:
HTTPはアプリケーションプロトコルです。これは基本的に、HTTP自体を使用して、リモートエンドポイントとの間で情報を転送できないことを意味します。代わりに、HTTPの場合はTCPである基本プロトコルに依存します。
興味がある場合は、OSIレイヤーの詳細をご覧ください。
一方、ソケットは、ほとんどのオペレーティングシステムがネットワークと通信できるように提供するAPIです。ソケットAPIは、トランスポート層以下のさまざまなプロトコルをサポートします。
つまり、TCPを使用する場合はソケットを使用します。ただし、ソケットを使用してHTTPを使用して通信することもできますが、その場合はHTTP仕様(RFC2616)に従ってメッセージをデコードまたはエンコードする必要があります。これは、ほとんどの開発者にとって大きなタスクになる可能性があるため、開発者フレームワーク(.NETなど)にクライアントを準備WebClient
しHttpWebRequest
ました。
HTTPでは、高レベルのHTTPプロトコルを使用します(これはソケットの上で動作します)。これはセッションレスです。つまりGET google.com
、接続が閉じられた後に、テキストリクエストと同様にテキストリクエストを送信し、テキストまたはバイナリデータを受信します(HTTP 1.1では永続的な接続が利用可能です)。
MSDNの例:
public static void Main (string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create (args[0]);
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
Console.WriteLine ("Content length is {0}", response.ContentLength);
Console.WriteLine ("Content type is {0}", response.ContentType);
// Get the stream associated with the response.
Stream receiveStream = response.GetResponseStream ();
// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
Console.WriteLine ("Response stream received.");
Console.WriteLine (readStream.ReadToEnd ());
response.Close ();
readStream.Close ();
}
ソケットを使用すると、レベルを下げて、実際に接続を制御し、生のバイトを送受信します。
例:
var remoteEndpoint=new IPEndPoint(IPAddress.Loopback, 2345);
var socket = new Socket(remoteEndpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(remoteEndpoint);
socket.Send(new byte[] {1, 2, 3, 4});
Connection
ヘッダーの設定方法によって異なります;)
HTTP接続
- HTTP接続は、ソケットで実行されるプロトコルです。
- HTTP接続は、ネットワーク接続の上位レベルの抽象化です。
- HTTP接続では、実装はこれらすべての高レベルの詳細を処理し、HTTP要求(一部のヘッダー情報)を送信し、サーバーからHTTP応答を受信するだけです。
ソケット接続
- ソケットは、システム間でデータを転送するために使用されます。2つのシステムを接続するだけで、IPアドレスはIPベースのネットワーク上のマシンのアドレスです。
- ソケット接続を使用すると、2つのシステム間のネットワーク接続用に独自のプロトコルを設計できます。
- ソケット接続では、TCP / IP接続のすべての下位レベルの詳細に注意する必要があります。
HTTPプログラミングまたはHTTP要求は 、システムに言語仕様プロトコルがある場合にソケットプログラミングが使用されるのと同様に、疎結合およびプラットフォーム中立言語テクノロジ通信に使用されます。
2つのエンドポイントが互いに通信できるようにするには、両方が一連のルールに従う必要があります。コンピュータでは、これらのルールセットはプロトコルと呼ばれます。
たとえば、ブラウザのようなエンドポイントやWebサーバーのようなエンドポイントの場合、情報を通信および交換できるように、両方ともhttpと呼ばれる一連のルールまたはプロトコルに従う必要があります。したがって、World Wide Webおよびこの種の通信では、このhttpプロトコルに基づいて話す人だけが正常に相互に通信できます。
ソケットは単なるエンドポイントです。httpプロトコルにしたがい、ページをリクエストするクライアントとしてwwwで通信したり、接続をリッスンするサーバーとして機能したりできます。または、ssh、ftpなどの別のルールまたはプロトコルのセットに従い、他の方法で通信することもできます。
ソケットプログラミングでは、ソケットを作成し、それをIPアドレスとポート番号にバインドしてポート番号として機能させ、http、ssh、ftpなど、使用したい通信に基づいて必要なものに従うように指示します。ソケット。