○接続開始時
c→s@SYN
s→c@SYN,ACK
c→s@ACK
○接続終了時
s→c@FIN,ACK
c→s@ACK
c→s@FIN,ACK
s→c@ACK
接続開始のは3ウェイハンドシェークとか呼ばれるもので
終了も似たようなものです。
大体この接続開始、終了の辺りはどこの解説ページにも
書かれているので比較的参考ページは多いと思います。
tcpdumpなどでパケットを見ているとこの接続開始、終了部分と
実際のデータのやり取り部分が見れたりしますが、
そこはそれでまた違うフラグが使われてたりします。
基本的にSYNから始まるというのがルールみたいなので
iptablesの設定で
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
という設定で接続開始がSYN以外なら捨てるというのがあるんですね。
SYNなどのフラグには他にもいくつか種類があります。
SYN@接続開始の最初に使うフラグ
ACK@受信確認に使う
FIN@接続終了に使う
PSH@素早いパケットの送受信に使用
URG@緊急データ転送に使う
RST@接続のリセットに使う
通常はSYN以外は全てのパケットにACKが付くらしいです。
といっても交互にやってる時がそれなのかな?
相手から送られてきた要求に対し、レスポンスを返すのと
同じパケットで受信したよって省略しちゃうみたいです。
途中のデータのやり取りはPSH,ACKが交互に行き交うような
感じのようです。
iptablesの設定をやってる最中でお仕事の方でも
触る機会があったので(つまりネットワークトラブルが
あったという事)早速入手した知識を活用してたりします。
更にはtcpdumpでパケットを見るとかより深い部分にまで
手を出さざるを得なくて、ある意味一石二鳥だったりします。
プログラマの筈なんだけどねっ。
PR