コネクション、ソケット、ポートについて

佐々木さん  
(No.1)
スレッドタイトルの内容の解釈が正しいのか確認お願いしたいです。
番号を付けておくので指摘やご教授いただけたら幸いです。

①コネクション=TCP通信ではられるもの(http等のプロトコルでもコネクション?(スリーウェイハンドシィエク等があるにはある)がある)、UDPでは行われない物

②ウェブソケットはTCPのコネクションをせずに繋ぎっぱなしにしてブラウザとサーバーでやり取りが出来る仕組み

③ソケットとは?
https://www.ap-siken.com/kakomon/01_aki/pm05.html
元年秋の問題に出題

>>また,サーバのソケットの最大数は128に設定されていた。
これは②のウェブソケットとは別で、もっと下のレイヤーの話の事なのでしょうか?
ウェブソケットは論理的な物で処理が許す限り限界値がないと思うのですが、②とは別で③のソケット数が決まっているもの?

④ポートでのコネクションについて。
https://www.ap-siken.com/kakomon/30_aki/pm05.html
30年秋に出題
>>Webサーバ1~3で利用可能なTCPポートが一時的に枯渇する事象が発生していることが分かった。
TCPポートが枯渇と言う意味が全く理解できないです。ご教授お願いします。

例えばサーバAでホームページをHTTP2/TLS1.2/TCP/ポート443で待機していた場合
クライアントA,B,CがサーバAでにホームページの情報を貰いに来ますよね?
サーバーAは同じポートでやり取りしているはずなのに不思議です。

この問題に限ってはLB(ロードバランサ)が
クライアントAは、サーバAのポート1を使え。
クライアントBは、サーバBのポート1を使え。
クライアントCは、サーバAのポート2を使え。
クライアントDは、サーバBのポート2を使え。

みたいな感じのシステムでこのシステムを使うのにコネクションをはらないといけないと言う前提のシステム(そういうシステムがある?)があって、そういう問題と言うことでしょうか?

⑤大きな疑問なのですが、このWebサーバ(④のサーバ)はいくつもポートを開けて待っている状態で始まってLB(ロードバランサ)がわり振っていると言う事でしょうか?
実際によくある話(使われるシステム)なのでしょうか?
2022.09.29 03:08
Rさん 
(No.2)
①その通りです。

②TCPコネクションは行われます。HTTPはクライアントからのリクエストを契機に通信が行われ、レスポンスが返ったらTCPコネクションが切断されます。Webソケットを利用することでTCPコネクションを切断せずに接続したままデータのやり取りを行います。

③Webソケット通信はHTTPで行われますので、アプリケーション層の話です。
令和3年春のネットワーク「問5. チャット機能の開発に関する問題」の図2にあるように、HTTPのヘッダにUpgradeとConnectionを追加して行われます。

④TCPポートが枯渇について
送信元のポートと宛先のポートを分けて考える必要があります。
今回の問題が発生した個所では送信元はWebサーバ1~3、宛先はDBサーバとなります。
ポートが枯渇するのはWebサーバ1~3で発生する問題です。

ポート番号は以下のように用途が分かれています

1.ウェルノウンポート番号(0~1023)
2.登録済みポート番号(1024~49151)
3.ダイナミックポート番号(49152~65535)

1、2はサービス側の待ち受けポートです。
3は送信元がサービスとやり取りする際の、レスポンスを受け取るポートです。このポートはその名の通り、通信を行う際に動的に割り当てられます。

仕組み的にサービス側のポートは唯一の窓口になるんですが、ダイナミックポートに関してはコネクションを確立しただけ消費していきます。タイムアウトしたり、明示的に切断すれば再利用可能です。
今回の問題はこのWebサーバ1~3においてダイナミックポート使い過ぎ問題が発生しているわけですね。
2022.09.29 15:51
佐々木さん  
(No.3)
ありがとうございます。完全に理解しました。
2022.09.29 23:41

返信投稿用フォーム

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

その他のスレッド


Pagetop