クライアントサーバのパケットの流れを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() |
[クライアントからサーバへパケット発生] |