クライアントサーバのパケットの流れをPythonのプログラムで観察してみた
以前の記事で簡単なクライアントサーバをPythonで実行してWiresharkでパケットの情報を確認しましたが、どのPythonの命令でパケットを送信しているか確かめてみました。
【注意】
申し訳ございません。
この確認試験は、私がどのタイミングでパケットが出されているのか確認したいがためにテストしています。
テスト環境
以下のページの内容を前提にテストをしています。
クライアントサーバのパケットの流れ
[サーバー] IPアドレス:127.0.0.2 ポート番号:49152 |
[クライアント] IPアドレス:127.0.0.1 ポート番号:61867 |
|
[サーバー] ※サーバの起動 # ****************************** # ソケット-サーバ機能(001) # ****************************** # モジュールのインポート # 低水準ネットワークインターフェース import socket # グローバル変数 # ダイナミックポート番号(49152~65535) D_PORT_NO = 49152 # クライアントアクセス回数 access_cnt = 0 # ソケットの作成 # AF_INET:ネットワーク層はIPv4を利用 # SOCK_STREAM:TCPプロトコルを利用する server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 接続させたいホスト名(またはアドレス)とポート番号を設定 server.bind((“127.0.0.2", D_PORT_NO)) # クライアントからの接続の待ち受け開始 # 最大接続数は2に設定 server.listen(2) # クライアント接続時の処理 while True: # 通信用ソケットの取得 # client:クライアントのソケット情報 # addr(アドレス):リモート接続のアドレス client, addr = server.accept() ※クライアントからの要求待ち |
[クライアント] | |
[サーバー] | [クライアント] ※クライアントの起動 # ****************************** # ソケット-クライアント機能(002) # TCPクライアント # ****************************** # モジュールのインポート import socket # グローバル変数 # 接続先ホストの名前(localhost) HOST = “127.0.0.2" # サーバ側のダイナミックポート番号(49152~65535)v D_PORT_NO = 49152 # 受信バッファの大きさ BUFSIZE = 4096 # ソケットの作成 # AF_INET:ネットワーク層はIPv4を利用 # SOCK_STREAM:TCPプロトコルを利用する client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
[サーバー] | <<< | [クライアント] # サーバとの接続 client.connect((HOST, D_PORT_NO)) |
[クライアントからサーバへパケット発生] |
||
[サーバー] # メッセージの送信 client.sendall(sending_message.encode(“UTF-8")) |
>>> | [クライアント] |
[サーバからクライアントへパケット発生] |
||
[サーバー] | [クライアント] # サーバからのメッセージの受信 server_reception_data = client.recv(BUFSIZE) |
|
[サーバー] #クライアントの接続を切断 client.close() |
>>> | [クライアント] |
[サーバからクライアント へパケット発生] |
||
[サーバー] | <<< | [クライアント] # サーバーの接続を切断 client.close() |
[クライアントからサーバへパケット発生] |
クライアントサーバのパケットの流れをPythonのプログラムで観察してみたのまとめ
いかがでしたか、予想通りだったのではないでしょうか。
でも実際にテストしてみて私は納得できました。
パケットの分析もホワイトハッカーの技術ではないでしょうか。
これからも「パケット」を意識して確認したいと思います。