質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

Q&A

解決済

1回答

3269閲覧

httpdとsynの関連について

katosei

総合スコア32

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

0グッド

0クリップ

投稿2019/08/21 12:02

編集2019/08/22 14:37

聞きたいこと概要

port 80をLISTENするapacheがいるサーバにてsynを受けたら、
プロセス(スレッド)数は増えるのか?

わからない事

  1. apacheがport 80をLISTENする。
  2. クライアントがport 80にsynを送る

この後の状況として

  • apacheはsynを認識して、何かしらのアクションをするのか?
    それともOSがTCP接続完了まで世話をして、コネクションが張れてからapacheに渡すのか?
  • apacheが処理しきれない場合、一時的にsyn backlogに入り、SYN RECV状態になるかと思いますが、
    これはapacheが準備出来たらackを返すという事か?
  • apacheはどの時点で子プロセス(orスレッド)を立ち上げるのか?

(追加)調べた上でなおわからない事

疑問: プロセスが過負荷になると、なぜSYN_RECVで止まるのか?

synが来た時のOSとプロセスの動作

  1. apacheがシステムコールでbindする
  2. apacheがシステムコールでlistenする
  3. OSがsynを受けると、syn backlogにキューイング   ★サーバのステータス:SYN_RECV
  4. 3way handshakeを終えると、backlogにキューイング ★サーバのステータス:ESTABLISHED
  5. システムコールでaccept、プロセスにファイルディスクリプタを返す

これが正しいとすると、3から4になるのにどうしてプロセスの状態が影響するのかよくわかりません。
OSだけで完結しているように見えるので。

もしかして、acceptしてプロセスが受け取るまで、ESTABLISHEDにならないのでしょうか?
そうだとしたら、SYN_SENTで止まる気もしますが。

自分の理解でのTCPのステータスの順番(サーバ側側)
SYN_RECV => SYN_SENT => ESTABLISHED

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

synはTCPプロトコル上の話なので、apacheはそれを読んだりそれに対してアクション起こしたりしません

apacheはどの時点で子プロセス

そりゃport80が接続完了したら、ですね

投稿2019/08/21 12:10

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katosei

2019/08/21 12:35 編集

そうなると2点わからない事がありまして - apacheの処理が間に合わない時、SYN_RECV状態になる理由がわからない apacheの状態がTCPのステータスに影響している? 全てOS任せなら、ESTABLISHまで進めてから、apacheの応答待ちになる気がする - apacheには”ListenBackLog”なるディレクティブが存在しており、 この値を変更するとsyn floodの対処になるらしい。 でも接続済みコネクションの処理待ち数を設定するだけなら、syn flood対策にならないのでは? https://httpd.apache.org/docs/2.4/ja/mod/mpm_common.html#listenbacklog 自分が理解できていない点も多いので見当違いだったら申し訳ないのですが、 この辺はどうだかわかりますでしょうか?
y_waiwai

2019/08/21 13:45

syn flood対策の設定が存在するからといってapacheがsynを見ていることにはなりません syn flood攻撃で、なにがどうなってApacheがどういう影響を受けるのか、それに対してどういう対策があるのか、を詳しく調べてみてはどうでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問