Lệnh nc -l hoạt động như thế nào trong Linux

Tác giả: VPS chính hãng 18 tháng 10, 2023

Trong Linux, lệnh “nc” là một công cụ mạnh mẽ cho phép người dùng thực hiện nhiều tác vụ mạng khác nhau. Nó bao gồm việc gửi và nhận dữ liệu qua kết nối TCP hoặc UDP và quét các cổng mở trên hệ thống từ xa. Người dùng có thể sử dụng lệnh này để kiểm tra kết nối mạng, thử nghiệm lập trình mạng hoặc phát triển các ứng dụng dựa trên mạng đơn giản. Hướng dẫn này sẽ trình bày lệnh “nc -l” với cách triển khai thực tế trong Linux.

Lệnh “nc” và tùy chọn lệnh “nc -l” là gì?

Lệnh Netcat (nc) là một tiện ích dòng lệnh để đọc và ghi dữ liệu giữa hai mạng máy tính. Giao tiếp xảy ra bằng cách sử dụng TCP hoặc UDP. Lệnh này khác nhau tùy thuộc vào hệ thống (netcat, nc, ncat và các lệnh khác). Netcat là một công cụ quan trọng cần thành thạo đối với các quản trị viên hệ thống và mạng nhờ các tính năng khắc phục sự cố kết nối phong phú và khả năng sử dụng tập lệnh.

Nó có thể tạo ra hầu hết mọi loại kết nối mà bạn cần và có một số khả năng tích hợp thú vị. Các trường hợp sử dụng phổ biến bao gồm:

  • Proxy TCP đơn giản.
  • Máy khách và máy chủ HTTP dựa trên Shell-script.
  • Kiểm tra trình nền mạng.
  • SOCKS hoặc HTTP cho ssh.

Trong Linux, lệnh “nc -l” khởi động máy chủ TCP hoặc UDP để lắng nghe các kết nối mạng đến trên một cổng được chỉ định. Tức là nó được chỉ định rằng nc sẽ lắng nghe kết nối đến thay vì bắt đầu kết nối đến máy chủ từ xa. Sẽ có lỗi khi sử dụng tùy chọn này kết hợp với các tùy chọn -p, -s hoặc -z. Ngoài ra, mọi thời gian chờ được chỉ định bằng tùy chọn -w đều bị bỏ qua.

Cú pháp của lệnh nc -l

Cú pháp cơ bản của lệnh nc -l như sau:

$ nc -l [options] [hostname] [port]

Mô tả của cú pháp trên được đề cập dưới đây:

  • Tùy chọn “-l” chỉ định rằng lệnh nc khởi động máy chủ để nghe.
  • Đối số “hostname” chỉ định giao diện mạng.
  • Đối số “port” đề cập đến số cổng mà máy chủ lắng nghe.

Lệnh nc -l hoạt động như thế nào trong Linux?

Dưới đây là một số ví dụ về cách sử dụng lệnh nc -l trong máy chủ Linux/VPS Linux:

Ví dụ 1: Máy chủ TCP đơn giản

Người dùng có thể sử dụng lệnh “nc -l” để tạo một máy chủ TCP đơn giản lắng nghe trên cổng 1234:

$ nc -l -p 1234

 

Tạo một máy chủ TCP đơn giản trên cổng 1234

Tạo một máy chủ TCP đơn giản trên cổng 1234

Khi một máy khách kết nối với máy chủ này, nó có thể gửi và nhận dữ liệu qua kết nối mạng. Hình dưới đây cho thấy cuộc trò chuyện ở phía máy khách:

$ nc 127.0.0.1 1234
Cuộc trò chuyện ở phía máy khách được hiển thị sau khi dùng lệnh nc

Cuộc trò chuyện ở phía máy khách được hiển thị sau khi dùng lệnh nc

Bằng cách này người dùng có thể thực hiện các cuộc hội thoại thông qua lệnh “ns -l” trong Linux.

Ví dụ 2: Gửi và nhận dữ liệu

Người dùng có thể sử dụng lệnh “nc -l” để gửi và nhận dữ liệu, bao gồm các tệp qua kết nối mạng. Để thực hiện việc này, hãy sử dụng lệnh “nc –l” bằng cách chỉ định cổng “1234” để gửi dữ liệu qua kết nối TCP:

$ nc -l 1234 < file2.txt

 

Lệnh nc -l để gửi và nhận các tệp qua kết nối mạng

Lệnh nc -l để gửi và nhận các tệp qua kết nối mạng

Lệnh này gửi nội dung của tệp có tên “file2.txt” đến máy chủ TCP đang chạy trên máy cục bộ trên cổng 1234.

Mặt khác, người dùng có thể sử dụng toán tử “>” để nhận dữ liệu qua kết nối TCP:

$ nc -l 1234 > file2.txt

Kết quả đầu ra sẽ cho thấy “file2.txt” cụ thể đã được nhận qua cổng “1234” ở phía máy khách.

=>> Tùy chọn -f của lệnh tail hoạt động như thế nào?

Ví dụ 3: Máy chủ UDP

Để khởi động máy chủ UDP nghe trên một cổng được chỉ định, hãy sử dụng lệnh “nc -u -l”. Ví dụ: lệnh sau khởi động máy chủ UDP nghe trên cổng 1234:

$ nc -u -l 1234
Để khởi động máy chủ UDP sử dụng lệnh nc -u -l

Để khởi động máy chủ UDP sử dụng lệnh nc -u -l

Khi máy chủ gửi dữ liệu đến máy khách qua UDP, client nhận và xử lý dữ liệu.

Ví dụ 4: Quét cổng

Người dùng có thể sử dụng lệnh “nc” với tùy chọn “-zv” để quét các cổng đang mở trên hệ thống từ xa. Ví dụ: lệnh sau quét 75 đến 85 cổng TCP trên hệ thống từ xa và hiển thị danh sách các cổng đang mở:

$ nc -zv 127.0.0.1 75-85
Đầu ra cho thấy cổng 80 được mở trong khoảng từ 75 đến 85

Đầu ra cho thấy cổng 80 được mở trong khoảng từ 75 đến 85

Ví dụ 5: Sử dụng Verbose bằng cách chỉ định số cổng

Người dùng có thể sử dụng lệnh “nc -l” bằng cách chỉ định các tùy chọn “v(verbose)” và “p(port) ”với số cổng 5000:

$ nc -l -v -p 5000

Về phía máy khách, sử dụng lệnh “nc” bằng cách chỉ định địa chỉ IP “127.0.0.1” với số cổng 5000 như sau:

$ nc 127.0.0.1 5000

Kết quả đầu ra cho thấy tất cả cuộc hội thoại ở phía máy chủ đã được hiển thị ở phía máy khách.

=>> Cách sử dụng lệnh Chown trong Linux để thay đổi quyền sở hữu tệp

Trong Linux, lệnh “nc -l” tạo một máy chủ mạng đơn giản bằng cách chỉ định <tên máy chủ> và <số cổng>. Nó khởi động máy chủ TCP hoặc UDP để lắng nghe các kết nối mạng đến trên một cổng được chỉ định. Người dùng có thể sử dụng lệnh này để kiểm tra kết nối mạng, thử nghiệm lập trình mạng hoặc phát triển các ứng dụng dựa trên mạng đơn giản. Hướng dẫn này đã giải thích cách hoạt động của lệnh “nc -l” và người dùng có thể sử dụng nó để tạo ra nhiều ứng dụng và dịch vụ dựa trên mạng. Chúc các bạn thành công!