Giao thức TFTP (Trivial File Transfer Protocol) là một giao thức truyền tải tệp tin đơn giản và nhẹ trong môi trường mạng. TFTP thường được sử dụng để truyền tải các tệp tin nhỏ như firmware, cấu hình thiết bị, hoặc các ứng dụng khác trong mạng.

giao thức TFTP

TFTP hoạt động dựa trên UDP (User Datagram Protocol) ở cổng 69. Nó được thiết kế để đơn giản hóa quá trình truyền tải và có tính chất “trivial” bởi vì nó cung cấp ít chức năng bảo mật và kiểm soát so với các giao thức truyền tải tệp tin phức tạp hơn như FTP (File Transfer Protocol).

Một số điểm quan trọng về TFTP bao gồm sự thiếu bảo mật, không có cơ chế xác thực tích hợp và không hỗ trợ chia sẻ tệp tin. Điều này làm cho nó thích hợp cho các tác vụ đơn giản trong môi trường mạng nơi hiệu suất là yếu tố quan trọng và các yếu tố bảo mật không quá quan trọng.

Trong bài viết này, chúng ta sẽ đi tìm hiểu chi tiết hơn về cách thức mà giao thức này hoạt động:

Cách giao thức TFTP hoạt động

Cách giao thức TFTP hoạt động

TFTP hoạt động theo mô hình Client – Server, nó vừa với các ROM nhỏ vì kích thước nhỏ của nó. Đây là một giao thức truyền tệp nhanh, nhẹ nhờ vào ASCII và các chế độ nhị phân. Dữ liệu được gửi theo từng khối thông qua TFTP và kích thước khối được chia thành 512 byte mỗi khối. Dưới đây là mô tả chi tiết về cách TFTP hoạt động:

  • Gửi yêu cầu đọc (RRQ – Read Request): Một máy chủ TFTP đầu tiên cần lắng nghe trên cổng UDP 69. Máy khách TFTP (người gửi yêu cầu) gửi một gói tin yêu cầu đọc (RRQ) đến máy chủ. Gói tin này bao gồm tên tệp tin mà máy khách muốn đọc.
  • Phản hồi từ máy chủ: Máy chủ nhận được yêu cầu và kiểm tra xem tệp tin có tồn tại không. Nếu tệp tin tồn tại và được máy chủ chấp nhận, máy chủ sẽ gửi một gói tin ACK (Acknowledgment) chứa khối dữ liệu đầu tiên của tệp tin về máy khách.
  • Truyền dữ liệu: Máy khách nhận được gói tin ACK và tiếp tục yêu cầu các khối dữ liệu tiếp theo của tệp tin bằng cách gửi gói tin yêu cầu tiếp theo. Máy chủ phản hồi bằng cách gửi các gói tin ACK chứa các khối dữ liệu tương ứng.
  • Quá trình truyền tải dữ liệu lặp lại cho đến khi toàn bộ tệp tin được truyền. Máy chủ gửi một gói tin ACK cuối cùng để xác nhận việc truyền tải hoàn tất.

Quá trình truyền tải dữ liệu cũng tương tự khi máy khách gửi yêu cầu ghi (WRQ – Write Request) để đẩy dữ liệu lên máy chủ. Tuy nhiên, trong trường hợp này, máy chủ sẽ gửi gói tin ACK để xác nhận nhận được các khối dữ liệu từ máy khách.

Lưu ý rằng TFTP là một giao thức đơn giản, không có quá trình xác thực phức tạp và cung cấp ít tính năng bảo mật. Điều này làm cho nó thích hợp cho việc truyền tải dữ liệu nhẹ trong mạng nơi hiệu suất là yếu tố quan trọng.

Cấu trúc gói tin TFTP

cấu trúc gói tin TFTP

Cấu trúc gói tin TFTP bao gồm các trường dữ liệu khác nhau tùy thuộc vào loại gói tin. Nó bao gồm các loại chính sau: Read Request (RRQ), Write Request (WRQ), Data, và Acknowledgment (ACK). Dưới đây là cấu trúc chi tiết của từng loại gói tin TFTP:

1. Read Request (RRQ):

  • Opcode (2 bytes): Mã xác định loại gói tin, có giá trị là 1.
  • Tên tệp tin (variable): Chuỗi kí tự không kết thúc, đại diện cho tên tệp tin mà máy khách muốn đọc.
  • Chuỗi mode (variable): Chuỗi kí tự không kết thúc, đại diện cho chế độ truyền tải (thường là “netascii” hoặc “octet”).

2. Write Request (WRQ):

  • Opcode (2 bytes): Mã xác định loại gói tin, có giá trị là 2.
  • Tên tệp tin (variable): Chuỗi kí tự không kết thúc, đại diện cho tên tệp tin mà máy khách muốn ghi.
  • Chuỗi mode (variable): Chuỗi kí tự không kết thúc, đại diện cho chế độ truyền tải (thường là “netascii” hoặc “octet”).

3. Data:

  • Opcode (2 bytes): Mã xác định loại gói tin, có giá trị là 3.
  • Số thứ tự khối (2 bytes): Số thứ tự của khối dữ liệu, bắt đầu từ 1.
  • Dữ liệu (n bytes): Phần chính của gói tin chứa dữ liệu thực sự.

4. Acknowledgment (ACK):

  • Opcode (2 bytes): Mã xác định loại gói tin, có giá trị là 4.
  • Số thứ tự khối (2 bytes): Số thứ tự của khối dữ liệu được xác nhận.

Cổng và giao thức truyền tải của TFTP

TFTP sử dụng giao thức UDP (User Datagram Protocol). Điều này làm cho nó trở nên nhẹ nhàng và nhanh chóng, nhưng đồng thời không đảm bảo tính toàn vẹn và độ tin cậy cao như TCP. TFTP thường hoạt động trên cổng 69. Đây là cổng mặc định cho TFTP, nhưng có thể được thay đổi tùy thuộc vào cấu hình hệ thống.

Khác với TFTP, giao thức FTP sử dụng giao thức TCP (Transmission Control Protocol). TCP cung cấp một kết nối có độ tin cậy và đảm bảo tính toàn vẹn của dữ liệu. FTP sử dụng hai cổng, cổng 20 cho truyền dữ liệu dạng Active Mode và cổng 21 cho điều khiển (control) dữ liệu. Ngoài ra, FTP có thể sử dụng nhiều cổng khác tùy thuộc vào cách triển khai (ví dụ, cổng 990 cho FTPS – FTP over TLS/SSL).

Vấn đề bảo mật của TFTP

TFTP không tích hợp cơ chế xác thực mạnh mẽ. Điều này có nghĩa là không có quy trình mạnh mẽ để xác định và kiểm tra danh tính của người dùng hoặc thiết bị tham gia quá trình truyền tải. Thiếu xác thực tạo ra nguy cơ cho các cuộc tấn công giả mạo và truy cập trái phép.

TFTP cũng không hỗ trợ mã hóa dữ liệu trong quá trình truyền tải. Dữ liệu được chuyển đi dưới dạng văn bản thô, không được bảo vệ bằng mã hóa, làm tăng nguy cơ mất mát thông tin quan trọng và bị người thứ ba đánh cắp.

Do đó, TFTP được thiết kế để truyền tải dữ liệu nhanh chóng và đơn giản. Điều này làm cho nó phù hợp trong các môi trường mạng đòi hỏi truyền tải dữ liệu nhẹ và không đòi hỏi các tính năng bảo mật phức tạp. Trong các môi trường đòi hỏi mức độ bảo mật cao, như doanh nghiệp, TFTP không phải là lựa chọn tốt do thiếu các cơ chế xác thực mạnh mẽ và không hỗ trợ mã hóa dữ liệu.

Ứng dụng của TFTP

TFTP thường được sử dụng trong các tình huống và kịch bản thực tế như cập nhật firmware của các thiết bị qua mạng.

Khi muốn cập nhật firmware, bạn sẽ gửi yêu cầu đọc (RRQ) từ thiết bị mạng đến máy chủ TFTP, yêu cầu tải firmware mới về. Máy chủ TFTP phản hồi bằng cách gửi các gói tin ACK chứa các khối dữ liệu của firmware. Thiết bị mạng nhận các khối dữ liệu từ máy chủ TFTP và lưu trữ chúng vào bộ nhớ, cập nhật firmware theo từng khối. Quá trình này lặp lại cho đến khi toàn bộ firmware được truyền.

So sánh TFTP với các giao thức truyền tải khác

Có nhiều giao truyền dẫn khác TFTP và FTP, SCP và SFTP. Dưới đây là một bảng so sánh chi tiết:

Tiêu Chí TFTP FTP SCP SFTP
Hiệu Suất Cao (dành cho truyền tải nhẹ) Cao (đối với nhiều tệp tin) Cao (đối với truyền tải dữ liệu) Trung bình (an toàn hơn nhiều)
Bảo Mật Thấp (thiếu xác thực và mã hóa) Thấp (dữ liệu truyền mở) Cao (sử dụng SSH) Cao (sử dụng SSH)
Xác Thực Người Dùng Thiếu Có (tùy thuộc vào cài đặt) Có (sử dụng SSH) Có (sử dụng SSH)
Quản Lý Tệp Tin Không Có (tính năng phong phú) Hạn chế (chủ yếu tập trung vào dữ liệu) Có (tính năng phong phú)
Đa Nhiệm Không Có (hỗ trợ truyền tải đồng thời) Không Có (hỗ trợ truyền tải đồng thời)
Hỗ Trợ Mã Hóa Không Không Có (sử dụng SSH) Có (sử dụng SSH)
Hiệu Quả Bảo Mật Thấp Thấp Cao (sử dụng SSH) Cao (sử dụng SSH)
Sự Đơn Giản Rất Cao Trung Bình Cao (đối với việc truyền tải dữ liệu) Trung Bình

Mong rằng qua bài viết này, bạn đã hiểu rõ hơn về giao thức TFTP và cách nó hoạt động!

Thông Tin Về Tác Giả

Tổng Biên Tập at Thiết Bị Mạng Giá Rẻ | Website | + posts

Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!