質問編集履歴

1

頂いた内容を元に追記

2019/08/22 14:37

投稿

katosei
katosei

スコア32

test CHANGED
File without changes
test CHANGED
@@ -32,10 +32,42 @@
32
32
 
33
33
 
34
34
 
35
+ # (追加)調べた上でなおわからない事
35
36
 
36
37
 
37
38
 
39
+ 疑問: プロセスが過負荷になると、なぜSYN_RECVで止まるのか?
38
40
 
39
- ---
40
41
 
42
+
43
+ synが来た時のOSとプロセスの動作
44
+
45
+
46
+
47
+ 1. apacheがシステムコールでbindする
48
+
49
+ 2. apacheがシステムコールでlistenする
50
+
51
+ 3. OSがsynを受けると、syn backlogにキューイング   ★サーバのステータス:SYN_RECV
52
+
53
+ 4. 3way handshakeを終えると、backlogにキューイング ★サーバのステータス:ESTABLISHED
54
+
55
+ 5. システムコールでaccept、プロセスにファイルディスクリプタを返す
56
+
57
+
58
+
59
+ これが正しいとすると、3から4になるのにどうしてプロセスの状態が影響するのかよくわかりません。
60
+
41
- 以上、よろくおねがします
61
+ OSだけで完結るように見えるので
62
+
63
+
64
+
65
+ もしかして、acceptしてプロセスが受け取るまで、ESTABLISHEDにならないのでしょうか?
66
+
67
+ そうだとしたら、SYN_SENTで止まる気もしますが。
68
+
69
+
70
+
71
+ 自分の理解でのTCPのステータスの順番(サーバ側側)
72
+
73
+  SYN_RECV => SYN_SENT => ESTABLISHED