Envaderを利用して、ncコマンドを使って通信してみた。


30代後半、未経験からIT業界のエンジニア転職へ挑戦している、kobakichiです。

今回もEnvaderを利用して、Linuxコマンドを体験しました。
コマンドラインからデータを送受信するためのコマンド、ncコマンドの使い方を実践しながら学んだので、振り返りとしてのまとめです。

Envaderは環境構築をせずに、ブラウザでLinux環境を色々試せて便利なので重宝しています。

気になる方はリンクを貼っておきますので、参考にどうぞ。

Envader

コース一覧

今回使用したシナリオ

参考にさせていただいた記事

nc(netcat)コマンドのいろんな使い方

TCP/IP - TCP

TCP/IP - UDP

nc コマンド 使い方メモ

ネットワーク診断の現場から(netcat編・その1)

nc(netcat)コマンド

netcatを略したもの。

NetWorkをcatnate(連結)するという意味らしく、クライアントとサーバの間に入って2者を連結する役割を担うためにこう表現されているのかも知れません。

このコマンドで、TCPまたはUDPを使ってクライアントとサーバーの間でデータを送受信する際に使われます。

ncコマンドの利用用途

サーバーを運用していて、急にサーバへの通信が不安定になったり、接続が出来なくなったりした時に疎通確認の目的で使われるのが多いみたいです。

ただそればかりではなく、クライアントサーバシステムの構築Webサーバを立てるプロキシサーバを立てるなど、用途は色々とあるようです。

こちらの記事に面白そうな内容が記載されていました。
nc(netcat)コマンドのいろんな使い方

基本的な使い方

接続したいIPアドレスポート番号を指定して接続を開始します。
ここで、ポート番号を指定しないとエラーが発生するので注意。

nc サーバーのIPアドレス サーバーのポート番号

もし自分の環境にncコマンドがインストールされていなかった場合には、下記のコマンドでインストールができます。

apt install nmap-ncatIP

# または

yum install nmap-ncatIP

オプションでTCPで通信するのかUDPで通信するのかを決められるのですが、指定しなかった場合のデフォルトではTCPでの通信になるようです。

オプション

ncコマンドのオプション例

オプション 説明
-t TCPで通信する
-u UDPで通信する
-l 自分がサーバーとして、相手からの接続を待ち受ける
-p -lコマンドを使用した時に、ポート番号を指定する
-o 指定したファイルに結果を出力する

TCP/UDPとは?

TCP...Transmission Control Protocolの略
インターネットで通信される際に利用されるプロトコル(決まり事)の一つ
OSI参照モデル 第4層 トランスポート層に該当し、信頼性の高い通信を実現するために利用されます。
コネクション型通信と言われ、通信開始前に相手との間で仮想的な通信路を確保するようになっています。(3ウェイハンドシェイクと呼ばれる)
HTTP通信、メールの送受信などが該当。

UDP...User Dategram Protocolの略
インターネットで通信される際に利用されるプロトコル(決まり事)の一つ
TCPと同様にOSI参照モデル 第4層 トランスポート層に該当し、3ウェイハンドシェイクなどは行われずに信頼性よりも速度を重視したプロトコルです。
コネクションレス型と言われ、通信開始前の相手との通信経路の確保などは行われません。
よりリアルタイム性が求められる通信に対して使用されます。(動画など。)

リモートサーバへ接続する

実際にncコマンドを使ってみます。
Graet!と表示されるのはEnvaderのシナリオの都合なので、通常は表示されません。

# 172.19.1.11の4001番ポートへ接続(TCP)
envader@172-19-1-2:~$ nc 172.19.1.11 4001                                                    
Great!
# 172.19.1.11の4001番ポートへ接続(TCP)して、log.txtへ内容を出力
envader@172-19-1-2:~$ nc 172.19.1.11 4001 -o log.txt
Great!
# UDPで172.19.1.11の4001番ポートへ接続
envader@172-19-1-2:~$ nc -u 172.19.1.11 4001

ポート番号を指定しないでエラーになる例

# ポート番号を指定していない
envader@172-19-1-2:~$ nc -u 172.19.1.11
no port[s] to connect to
# -lオプションで通信を待ち受ける(UDPオプションも使用)
envader@172-19-1-2:~$ nc -ulp 7777
Well done!!

# Well doneもEnvaderの仕様です。

まとめ

今回はncコマンドの基本的な使い方をEnvaderを利用して実践しながら学びました。

環境の都合上、webサーバーなどは立てていませんが、自分の環境にて色々試してみるのも面白いなと感じました。

最後まで読んでいただき、ありがとうございました。