次のようにローカル マシンでポート 4000 を開きました。
nc -lvup 4000
そして、次のように同じポートに接続しようとしました。
nc -vu 127.0.0.1 4000
そして、接続に成功し、テキストの送受信ができました。しかし、最初のスニペットで示したのと同じポートでリッスンし、UDPスキャンを試みると、
nmap -sU 127.0.0.1 -p 4000
結果は以下のようになります。
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000061s latency).
PORT STATE SERVICE
4000/udp closed icq
最初のテストでポートが明らかに開いていることが確認されているので、開いていると表示されるべきではないでしょうか? 本当に困惑しているので、意味を理解できるようにしてください。
答え1
いいえ。何が起こっているのか理解できません。これはUDPです。接続。
nc
2番目を実行して何かを入力すると、パケットが送信されます。その後他の手段で(通信の反対側、たとえば別のコンピュータ画面を見て) 通信が行われていることを確認します。 「リスニング」がない場合nc
、「送信」NC は、パケットが受信されたかドロップされたかの手がかりもなく、同じパケットを送信します。
も同様ですnmap
。パケットを送信しても応答がないため、パケットがブラックホールに消えたと判断します。
これは UDP です。このようなものです。受信の確認は本質的には行われません。アプリケーションで必要な場合は、アプリケーション自体で確認が行われます。ここで確認を行うアプリケーション レベルのプロトコルがないため、nmap は応答を受信せず、「開いているポート」も検出されません。
比較すると、TCP には確認 (ACK) が組み込まれているため、ポートが開いているかどうかを確実に検出できます。