読み取りと書き込みは、すべてのシステムのデータに適用できる基本的な操作です。 TCPは、伝送制御プロトコルと略され、ネットワーク上のコンピューターがメッセージを送受信しやすくするコネクション型通信プロトコルです。これは、インターネットプロトコル(IP)を採用するネットワークで最も広く使用されているプロトコルです。一緒に使用する場合は、TCP/IPと呼ばれることもあります。 UDPは、ユーザーデータグラムプロトコルと略され、インターネット上のアプリケーション間に低遅延で損失耐性のある接続を構築するために使用される通信プロトコルです。この記事では、Ubuntu 20.04(Linux OS)でTCPおよびUDPプロトコルを使用してネットワーク間でディスクを読み書きするために使用されるコマンド「Netcat」について説明します。
Netcatユーティリティアプリケーションには、ネットワークを管理し、システム間のデータレベルを監視するためのいくつかの命令が含まれています。 TCPおよびUDPプロトコルは、インターネットなどのコンピュータネットワークの基盤です。これは、ネットワークツールのスイスアーミーナイフと見なされており、ネットワークおよびシステム管理者の武器庫で最も効果的なツールの1つです。 Netcatは、Linux、Windows、Mac OS X、およびBSDで実行されるクロスプラットフォームプログラムです。 Netcatを使用して、接続の問題をデバッグおよび分析したり、開いているポートをスキャンしたり、データを転送したり、プロキシとして機能したりできます。
Netcatを使用してネットワーク全体でデータを読み書きする
macOSおよびUbuntuやDebianなどの一般的なLinuxディストリビューションでは、Netcatパッケージがプリインストールされています。 「Netcat」ユーティリティの一部を以下に示します。
- Netcatを介してポートスキャンを実行する
- Netcatを介したファイルの送信
- Netcatを介してWebサーバーを作成する
構文:
$ nc [options] host port |
Ubuntuシステムでは「nc」または「netcat」のいずれかが使用されます。
TCP接続が確立され、Netcatによってホスト/ホストとポート/ポートがデフォルトで提供されます。 UDP接続を作成する場合は、-uオプションを使用します。
$ nc -u host port |
Netcatを介してポートスキャンを実行する
最も普及しているNetcatアプリケーションの1つは、ポートスキャンです。単一のポートまたはポートの範囲をスキャンするオプションがあります。
TCP:
開いているポートをスキャンします:
Netcatを使用して30〜60の範囲で開いているポートをスキャンするには、以下のコマンドを実行します。
$ nc -z -v 10.0.2.15 30-60 |
-z 開いているポートをスキャンするだけで、データを送信しないようにNCに指示します。
-v 詳細についての情報を伝えます。
grepコマンドを使用して結果をフィルタリングします:
$ nc -z -v 10.0.2.15 2>&1 | grep succeeded |
この範囲では接続は成功しませんでした。
UDP:
スクリプトに-uパラメータを追加するだけで、以下のコマンドでUDPポートを確認できます。
$ nc -z -v -u 10.0.2.15 30-60 |
この範囲にはUDPポートはありません。
Netcatを介したファイルの送信
基本的なクライアントまたはサーバーモデルを確立することにより、Netcatを使用して1つのホストから別のホストにデータを転送できます。これは、受信ホストで-lオプションを使用して、Netcatが特定のポートでリッスンするように設定し、複数のコンピューターから標準のTCP接続を作成して、ファイルを転送することで実現されます。
受信側で以下のコマンドを実行します。これにより、着信接続用にポート6666が開き、出力結果がファイルに転送されます。
$ nc -l 6666 > linux1.txt |
Linux1.txtは書き込み用に開くファイル名であり、要件に応じてファイル名を変更できます。
これで、受信ホストが送信ホストに接続され、ファイルが送信されます。
$ nc google.com 6666 < linux2.txt |
Netcatを介したWebサーバーの作成
まず、nanoコマンドを使用して単純なHTML「linux、html」ファイルを作成します。
$ nano linux.html |
下記のコンテンツを入力するか、HTMLファイルのルールに従って要件に応じてコンテンツを追加できます。
<html> <head> <title> Linux<title> <head> <html> |
「Ctrl+S」で保存し、「Ctrl+X」でファイルを閉じます。
$ printf 'HTTP/1.1 200 OK\n\n%s' "$(cat linux.html)" | netcat -l 8888 |
これでブラウザで、以下のリンクからファイルにアクセスできます:
http://server-ip:8888 |
結論:
Netcatは、ネットワーク接続を介してデータを読み書きするためにTCP/UDPプロトコルを使用する基本的なLinuxユーティリティです。これは、他のアプリケーションやプログラムによって直接または単に操作できる信頼性の高いバックエンドツールとなることを目的としています。この記事では、TCPおよびUDPプロトコルでのNetcatの使用法と、ポートのスキャン、ファイルの送信、Webサーバーの作成などの他の使用法について説明します。