2016-04-12 7 views
0

"ソケット"と "トランスポート"に違いがありますか、それとも互換性がありますか?私は、同じことをするようなライブラリはたくさんあるのですが、名前の機能/メソッド/プロパティ/クラスのやり方がちょっと違うので尋ねます。ソケットとトランスポートの違いは何ですか?

「ソケット」はサーバ/ネットワークデバイスを接続するストリームであり、「トランスポート」は接続が使用する方式です(たとえば、TCPはトランスポートです)。

+0

あなたの質問は、これらの2つの単語の正確な違いに関連していますか?または** SSL **対** TSL **。輸送とソケットは互換的に使用されており、時々混乱を理解することができます。 – izk

+0

それはその2つの言葉の間です。私はSSLとTLSの違いを知っています。 –

答えて

1

「ソケット」または「トランスポート」には違いがありますか、または は互換性がありますか?

これまでのところ、単語transportは1つの単語として渡されていません。私はいつもトランスポート層をどこからでも読むことができました。私はの外部参照を引用しています(混乱しています)。 Javaのネットワーキングライブラリであっても、(限定された経験の範囲内で)独立した実在のエンティティとしてトランスポートについて聞いたことはありませんでした。

私は同じ ことを行うように見えるのライブラリの多くを見るが、唯一の方法名 関数/メソッド/プロパティ/クラスに若干異なるので、私はのみお願いします。

私はあなたがTLS/SSLのために混乱していると思います。 TLSはSSLの後継です。これとソケットとトランスポートを関連付けるべきではありません。 BTW、TLS/SSLはアプリケーションレイヤプロトコルです。

私の理解では、「ソケット」で一緒にサーバ/ネットワーク 機器を接続ストリームおよび「トランスポート」である(例えば、TCPはトランスポートです)接続が を使用する方式です。

あなたの両方のステートメントは間違っています(少なくとも確実です)!ソケットはストリームではありません。 TCPはトランスポートではなく、TCP/IPのトランスポートプロトコルです。

簡単に言えば、network socketは、コンピュータネットワークを介した接続のエンドポイントです。ソケットは内部的には単純に整数であり、使用する接続を識別します。ソケットはアドレスを持つ必要はありませんが(例えばデータを送信する場合のみ)、プログラムがソケットをアドレスにバインドすると、そのアドレスに送信されたデータを受信するためにソケットを使用することができます。

一方、transport layerは、インターネットプロトコルスイートとオープンシステムインターコネクション(OSI)のネットワークスタックにおけるプロトコルの階層化アーキテクチャの概念的な分割方法です。最もよく知られているTCP/IPのトランスポートプロトコルは、TCP(Transmission Control Protocol)です。

0

PHPはこれらのコンセプトを混乱させて使用していると思います。例えば、transport definitionおよびstream socketsという概念。 私はPHPプログラマではありませんが、気づいたことから、その名前は直感的ではありません。

オペレーティングシステムでは、ソケットは、アプリケーションが特定のプロトコルで通信するためのオペレーティングシステムAPIです。

ネットワークとオペレーティングシステムには、OSIとTCP/IPという2つのレイヤード通信モデルがあります。どちらの場合も、ネットワークレイヤー上で実行されるトランスポートレイヤーがあります。このトランスポート層の主な機能は、ネットワーク層によって提供されるサービスを、異なるアプリケーション(TCP/IPモデルのアプリケーション層で実行される)によって使用される異なるTSAP(トランスポートサービスアクセスポイント)間で多重化することです。トランスポート層プロトコルのいくつかの例は、TCP、UDP、SCTPである。 TSAPの概念は、TCP/UDP/SCTPポートとして知られています。

異なるソケットの種類があります(それぞれTCPとUDP)ストリームとデータグラムソケット(Linuxの場合)、生socekts、UNIXドメインソケット、パケットソケットは

今すぐ

など、AF_INETソケットが可能UDP用ストリームソケット(ストリーム指向であるため)またはUDP用のデータグラムソケット One explanation here

具体的には、TCPとUDPでは、ソケットはタプル(送信元IP、送信元ポート、送信先IP、送信先ポート)で定義されます。

SSLとTLSはTCPの上で実行されますが(UDPにも何かありますが...)、これはアプリケーション層プロトコルですが、ここでは分離線はあまり明確ではありません。 Javaやその他の上位言語では、SSLやTLSを使用してセキュアなソケットを使用しています。

私が上記のリンクから読んだところから、PHPにはストリームソケットの概念があります。これはソケットの一般的なオペレーティングシステムの概念とは異なります。彼らは裸のオペレーティングシステムソケットからあなたを抽象化します。ストリームソケットを使用すると、さまざまなトランスポート(tcp、udp、ssl、unixなど)を選択できます。私はそれが異なるメカニズム(プロトコルだけでなく、UNIXソケットのようなメカニズムも含む)をデータ転送のものとみなし、stream socketsで読んだ場合、舞台裏で "トランスポート"と呼ばれるTCP用の実際のストリームソケットとデータグラムいわゆる「トランスポート」用のUDPソケット。

udpトランスポートのためにストリームソケットを呼び出すのが混乱します。 PHPがUDPソケットをストリーム指向のソケットとして見せるかどうかはわかりません。その場合は意味をなさないでしょう(私はこの部分をPHPの専門家に任せます)。

最後に、この説明の後で、ソケットとトランスポートは、オペレーティングシステムの一般的な概念とPHPの両方で互換性のある概念ではないと結論づけたいと思います。

関連する問題