Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> Kết Nối Mạng

Cổng 0 (Port 0) được dùng để làm gì?

Cổng 0 mang ý nghĩa đặc biệt trong lập trình mạng, đặc biệt là trong hệ điều hành Unix khi nói đến lập trình socket, nơi cổng được dùng để yêu cầu các cổng động do hệ thống cấp phát. Cổng 0 là một cổng ký tự đại diện (wildcard port) báo cho hệ thống biết hãy tìm một số cổng phù hợp.

Khác với hầu hết các số cổng, cổng 0 là một cổng dành riêng (reserved port) trong mạng TCP/IP, nghĩa là nó không nên được sử dụng trong các tin nhắn TCP hoặc UDP. Các cổng mạng trong TCP và UDP nằm trong khoảng từ 0 đến 65535. Các số cổng trong khoảng từ 0 đến 1023 được định nghĩa là các cổng không tạm thời (non-ephemeral), cổng hệ thống (system ports) hoặc cổng nổi tiếng (well-known ports). Cơ quan quản lý số Internet (IANA) duy trì một danh sách chính thức về việc sử dụng dự định của các số cổng này trên internet, và cổng hệ thống 0 không được sử dụng.

Cách hoạt động của cổng TCP/UDP 0 trong lập trình mạng

Cấu hình một kết nối socket mạng mới yêu cầu cấp phát một số cổng ở cả phía nguồn và đích. Các tin nhắn TCP hoặc UDP do bên khởi tạo (nguồn) gửi đi chứa cả hai số cổng để bên nhận (đích) có thể gửi tin nhắn phản hồi đến đúng điểm cuối giao thức.

IANA đã cấp phát trước các cổng hệ thống dành cho các ứng dụng internet cơ bản như máy chủ web (cổng 80), nhưng nhiều ứng dụng mạng TCP và UDP không có cổng hệ thống riêng và phải xin một cổng từ hệ điều hành của thiết bị mỗi khi chúng chạy.

Để cấp phát số cổng nguồn, ứng dụng gọi các hàm mạng TCP/IP như bind() để yêu cầu một cổng. Ứng dụng có thể cung cấp một số cố định (hard-coded) cho bind() nếu họ muốn yêu cầu một số cụ thể, nhưng yêu cầu đó có thể thất bại vì một ứng dụng khác đang chạy trên hệ thống có thể đang sử dụng nó.

Thay vào đó, nó có thể cung cấp cổng 0 cho bind() làm tham số kết nối. Điều đó kích hoạt hệ điều hành tự động tìm kiếm và trả về một cổng sẵn có phù hợp trong phạm vi số cổng động TCP/IP.

Ứng dụng không được cấp cổng 0 mà là một cổng động khác. Lợi thế của quy ước lập trình này là hiệu quả. Thay vì mỗi ứng dụng triển khai và chạy mã để thử nhiều cổng cho đến khi lấy được một cổng hợp lệ, các ứng dụng dựa vào hệ điều hành.

Unix, Windows và các hệ điều hành khác khác nhau trong việc xử lý cổng 0, nhưng quy ước chung tương tự vẫn áp dụng.

Cổng 0 và an ninh mạng

Lưu lượng mạng được gửi qua internet đến các máy chủ lắng nghe trên cổng 0 có thể được tạo ra bởi kẻ tấn công mạng hoặc vô tình bởi các ứng dụng được lập trình không chính xác. Các tin nhắn phản hồi mà máy chủ tạo ra để đáp lại lưu lượng cổng 0 giúp kẻ tấn công tìm hiểu hành vi và các lỗ hổng mạng tiềm ẩn của những thiết bị đó.

Nhiều nhà cung cấp dịch vụ internet (ISP) chặn lưu lượng trên cổng 0, cả tin nhắn đến và đi, để chống lại các cuộc khai thác này.

Câu hỏi thường gặp

  • Số cổng là gì?
    Số cổng dùng cho kết nối mạng TCP/IP đóng vai trò thông tin địa chỉ, xác định người gửi và người nhận của tin nhắn. Số cổng cho phép nhiều ứng dụng trên cùng một mạng chia sẻ tài nguyên cùng lúc.
  • Làm thế nào để tìm số cổng?
    Để tìm số cổng của một địa chỉ IP cụ thể, hãy vào dấu nhắc lệnh, gõ netstat -a, sau đó nhấn Enter. Bạn sẽ thấy danh sách các kết nối TCP hoạt động cùng với địa chỉ IP và số cổng được phân tách bởi dấu hai chấm.
  • Tôi có thể kết nối với cổng 0 không?
    Không. Chính thức cổng 0 không tồn tại và bạn không thể kết nối với nó, vì đó là một số cổng không hợp lệ. Tuy nhiên, bạn có thể gửi gói tin internet đến và từ cổng 0 giống như bạn làm với một số cổng khác.