聞きたいこと概要
port 80をLISTENするapacheがいるサーバにてsynを受けたら、
プロセス(スレッド)数は増えるのか?
わからない事
- apacheがport 80をLISTENする。
- クライアントがport 80にsynを送る
この後の状況として
- apacheはsynを認識して、何かしらのアクションをするのか?
それともOSがTCP接続完了まで世話をして、コネクションが張れてからapacheに渡すのか? - apacheが処理しきれない場合、一時的にsyn backlogに入り、SYN RECV状態になるかと思いますが、
これはapacheが準備出来たらackを返すという事か? - apacheはどの時点で子プロセス(orスレッド)を立ち上げるのか?
(追加)調べた上でなおわからない事
疑問: プロセスが過負荷になると、なぜSYN_RECVで止まるのか?
synが来た時のOSとプロセスの動作
- apacheがシステムコールでbindする
- apacheがシステムコールでlistenする
- OSがsynを受けると、syn backlogにキューイング ★サーバのステータス:SYN_RECV
- 3way handshakeを終えると、backlogにキューイング ★サーバのステータス:ESTABLISHED
- システムコールでaccept、プロセスにファイルディスクリプタを返す
これが正しいとすると、3から4になるのにどうしてプロセスの状態が影響するのかよくわかりません。
OSだけで完結しているように見えるので。
もしかして、acceptしてプロセスが受け取るまで、ESTABLISHEDにならないのでしょうか?
そうだとしたら、SYN_SENTで止まる気もしますが。
自分の理解でのTCPのステータスの順番(サーバ側側)
SYN_RECV => SYN_SENT => ESTABLISHED
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/21 12:35 編集
2019/08/21 13:45