サンプル集 |
■VC ■C# ■Java ■BorlandC ■LinuxC ■MS-DOS ■bash ■Excel VBA ■VBScript ■PHP ■HTML ■perl ■iPhone ■Android ■Lua ■other |
Linuxコマンド |
用語集 |
debian メモ |
apache2 メモ |
MySQL メモ |
Oracle メモ |
HOME |
PC間での通信をwiresharkでキャプチャしてみます。
構成は以下になります。
アプリは VC の winsock2 Aで作成したものを利用します。 このアプリはクライアントとサーバーの2つがあり、クライアントがサーバへ接続して文字列を受信して表示するという単純な動作をします。
PC(2)でサーバーを起動させたあとPC(1)でクライアントを起動し通信内容をwiresharkでキャプチャします。
PC(1)では送信先及び送信元のIPがPC(2)であるものだけを表示するようにフィルターをかけました。
[Statistics]-[Flow Graph...]を選択します。
「Displayed packets」と「TCP flow」を選択し「OK」を押します。
PSH,ACK - Le・・・と表示されている行を選択し内容を確認してみます。
Dataが16byteで、「HELLO winsock2!!」を10.10.31.106から受信している事が確認できました。
PC(2)では送信元及び送信先のIPがPC(1)であるものだけを表示するようにフィルターをかけました。
PC(2)から先ほどPC(1)で確認した内容と同じデータを送信していることが確認できました。
シーケンスの確認
通信シーケンスの内容を確認します。
最初の3行はTCPのコネクション確立で行われる3ウェイハンドシェイクのシーケンスです。
4行目の「PSH,ACK - Le・・・」はデータのPC(2)からPC(1)へのデータの送信シーケンスです。 16byte送信しているので、次の行の「FIN,ACK」の Seqは16足されて17になっています。
5行目以降は切断のシーケンスです。 通常のTCPの切断シーケンスは4ステップあるそうですが、なぜか3つで終わっています。 またRSTパケットがPC(1)からPC(2)へ送られています。
FlagsのAcknowledgmentとResetがSetになっています。
以下のようなシーケンスになるべきなようです。
なぜRSTパケットが送信されているのかは不明ですが、とりあえず通信のキャプチャは上手くいきました。
Copyright (C) 2016 ymlib.com