ネットワークにおけるソケットの理解確認

八王子さん  
(No.1)
【質問】
私のネットワークにおけるソケットの理解が正しいか否か知りたいです。

【背景】
仕事上、ソケットという概念の前にwebsocketを知っていたので、下記午後問の設問1の(1)を解いた際に「ソケットはwebsocketができる前から普通にあった概念だったのか。全然違うっぽいのに名前ややこしいな?」と混乱しました。

https://www.ap-siken.com/s/kakomon/01_aki/pm05.html

ソケット?TCPなどの確立されたコネクションを1まとまりとしたもの。送信元先IP、ポートの組み合わせで1カウント。サーバ毎にソケットの数は128個など上限が決まっているため、確立できるコネクション数も決まっている。web通信に限らずどの通信でもソケットの概念はある。

websocket?web通信(HTTP(S))確立後に、これを再利用する形で確立できる特別なソケット?プロトコル?通信規格?
クライアントとサーバどちらもwebsocketをサポートしている必要があるが、利用出来れば従来の一方方向のHTTP通信とは違い、サーバからもデータを送信できる。
Websocketとは通信規格名であり、読んで字のごとく『web通信時のソケット』という意味ではない?
2023.09.01 08:36
Rさん 
(No.2)
■Socket
>>TCPなどの確立されたコネクションを1まとまりとしたもの。L3、L4のやり取りの部分です。
TCPやUDPのように、IPアドレスとポート番号を用いて1つの通信する際に1ソケットです。
ソケットの流れは

・サーバ側
ソケットの作成→IPアドレスと待ち受けポート番号のバインド→listen
listen状態でクライアントからの接続があればその都度プロセスを実行する。

・クライアント側
ソケットの作成→(IPアドレスと待ち受けポート番号のバインド。オプションです)→目的のサービスへのconnect

となります。
この過程で接続が維持され、発生するプロセスで規定された順序、書式の処理(いわゆるプロトコル)が行われます。
C#やJAVAなどの言語では、Socketに関するクラスが含まれているので作ってみると面白いです。
その中でデータのやり取りを考えることでオリジナルのアプリケーション層のプロトコルを作成できます。

Socketの最大数は
・TCP/UDPなどのポート番号の数までしか生成できない(16ビット=65536個)
・OSが持っているソケットプールの上限(OSによって違うので深く調べないとわからないです)
・物理的なメモリ量。ソケット通信を行う=プロセスが発生しているのでメモリの最大量や、処理のメモリ利用量も関連するでしょう。

他にも、アプリの設定で抑制していることもあります。

■Webソケット
Webソケットは、ブラウザとWebサーバ間で相互通信を行うためのプロトコルです。
本来WebはHTTP、HTTPSはクライアントからの契機でのみ通信が発生します。

チャットや配信などのサービスはそれだと負担が大きすぎるので別のプロトコルが必要になってきました。

そこでWebSocketというHTTPとは別のプロトコルが作成されました。
ただし、ポート番号は80番、443番で動作するように考慮されています。
HTTP/1.1においてUpgradeヘッダーを利用することでWebSocketに切り替えて通信を続けるようになっています。
データが発生したほうから相互にリアルタイムに送りあうことができます。
2023.09.01 17:31
八王子さん  
(No.3)
読む限りだいたい私の理解で合ってそうですかね?ありがとうございました。
2023.09.02 17:09

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop