You are on page 1of 25

BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

BẢNG PHÂN CÔNG CÔNG VIỆC

Ghi
STT Họ và Tên Mã sinh viên Nội Dung Chính
Chú

Chương 1: Giới thiệu chung về


TFTP
1.1. Giới thiệu
1 Nguyễn Khắc Toàn B17DCVT362 1.2. Cách thức hoạt động.
1.3. Mối quan hệ với giao thức
khác
1.4. So sánh TFTP với FTP

Chương 2: Mô hình kết nối


2.1. Giao thức UDP
2 Hoàng Văn Hiệp B17DCVT123
2.2. Khởi tạo kết nối TFTP
2.3. Chấm dứt kết nối TFTP

Chương 3: Gói dữ liệu TFTP


3.1. Yêu cầu đọc (RRQ), yêu cầu
ghi (WRQ)
Hà Thị Thùy
3 B17DCVT090
Dương 3.2. Dữ liệu (Data)
3.3. Hồi đáp (ACK)
3.4. Lỗi (Error)

Chương 4: Vấn đề tồn đọng và


xu hướng phát triển
4 Nguyễn Tiến Giáp B17DCVT107
4.1. Tồn đọng
4.2. Xu hướng phát triển

NHÓM 7 – NHÓM MÔN HỌC 4 1


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

LỜI MỞ ĐẦU

Mặc dù FTP là giao thức truyền tệp tin tổng quan nhất trong bộ giao thức TCP/IP

nhưng nó rất phức tạp. Nhiều ứng dụng không cần đến tất cả các tính năng mà FTP

cung cấp. Do đó người ta đưa ra một giao thức thứ hai cung cấp dịch vụ ít tốn kém và

không phức tạp. Được biết dưới tên Trivial File Transfer Protocol (TFTP), giao thức

này không cần đến những tương tác phức tạp giữa client và server. TFTP giới hạn thao

tác chỉ trong việc truyền tệp tin và không cung cấp việc xác minh. Không giống như

FTP, TFTP không cần dịch vụ chuyển tin đáng tin cậy mà nó sử dụng giao thức UDP

của tầng Transport, có sử dụng cơ chế timeout và việc truyền lại để đảm bảo dữ liệu

được truyền đến nơi nhận.

Trong bài tiểu luận này của nhóm, chúng em sẽ trình bày tổng quan về giao thức

TFTP và cách truyền file của nó. Để hoàn thành bài tiểu luận, chúng em có tham khảo

thêm một số tài liệu, những tài liệu đó được trình bày ở phần cuối tiểu luận. Cuối cùng

chúng em xin cảm ơn thầy Nguyễn Tiến Ban đã hướng dẫn chúng em hoàn thành môn

học này này.


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

MỤC LỤC
BẢNG PHÂN CÔNG CÔNG VIỆC.........................................................................1
LỜI MỞ ĐẦU.............................................................................................................2
THUẬT NGỮ VIẾT TẮT..........................................................................................4
CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ TFTP......................................................6
1.1. Giới thiệu..........................................................................................................6
1.2. Cách thức hoạt động........................................................................................6
1.3. Mối quan hệ với các giao thức khác................................................................7
1.4. So sánh TFTP với FTP....................................................................................8
CHƯƠNG 2: MÔ HÌNH KẾT NỐI........................................................................11
2.1. Giao thức UDP...............................................................................................11
2.1.1. Khái niệm..................................................................................................11
2.1.2. Cách thức hoạt động.................................................................................11
2.1.3. Cấu trúc gói tin UDP................................................................................11
2.1.4. UDP header...............................................................................................12
2.1.5. Truyền dữ liệu với UDP............................................................................13
2.2. Khởi tạo kết nối TFTP...................................................................................14
2.3. Chấm dứt kết nối TFTP................................................................................15
2.3.1. Chấm dứt thông thường...........................................................................15
2.3.2. Chấm dứt sớm...........................................................................................15
CHƯƠNG 3: GÓI DỮ LIỆU TFTP........................................................................16
3.1. Yêu cầu đọc (RRQ), yêu cầu viết (WRQ).....................................................16
3.2. Dữ liệu (Data).................................................................................................17
3.3. Hồi đáp (ACK)...............................................................................................18
3.4. Lỗi (Error)......................................................................................................18
CHƯƠNG 4: VẤN ĐỀ TỒN ĐỌNG VÀ XU HƯỚNG PHÁT TRIỂN................19
4.1. Tồn đọng.........................................................................................................19
4.2. Xu hướng phát triển......................................................................................19
TÀI LIỆU THAM KHẢO.......................................................................................23
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

THUẬT NGỮ VIẾT TẮT

Từ viết tắt Từ đầy đủ Nghĩa Tiếng Việt

Trivial File Transfer Giao thức truyền file


TFTP
Protocol đơn giản

Giao thức dữ liệu người


UDP User Datagram Protocol
dùng

FTP File Transfer Protocol Giao thức truyền tệp

LAN Local Area Network Mạng cục bộ

TID Transaction ID Nhận dạng chuyển

Transmission Control Giao thức điều khiển


TCP
Protocol truyền vận

IP Internet Protocol Giao thức Internet

IPv4, IPv6 IP version 4, IP version 6 Internet Protocol

DNS Domain Name System Tên miền hệ thống

Giao thức đồng bộ thời


NTP Network Time Protocol
gian mạng

WRQ Write Request Yêu cầu ghi

RRQ Read Request Yêu cầu đọc

ACK Acknowledgment Hồi đáp

STFTP Secure Trivial File Bảo mật giao thức


Transfer Protocol truyền file đơn giản
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

SSL Secure Socket Layer Lớp cổng bảo mật

TLS Transport Layer Security Bảo mật lớp vận chuyển

Advanced Encryption Tiêu chuẩn mã hóa tiên


AES
Standard tiến

STP Spanning Tree Protocol Giao thức cây Spanning

AP Access point Điểm truy cập

BS Base Station Trạm gốc


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ TFTP

1.1. Giới thiệu


Giao thức TFTP (Trivial File Transfer Protocol), là một giao thức truyền file đơn
giản chạy trên nền UDP. TFTP được xác nhận lần đầu tiên vào năm 1980 dùng để
truyền file qua mạng. So với FTP (File Transfer Protocol) thì TFTP có thiết kế đơn
giản và ít tính năng hơn.
TFTP được thiết kế nhỏ và dễ thực hiện và do đó nó thiếu hầu hết các tính năng của
các giao thức truyền tệp. TFTP chỉ đọc và ghi tệp từ các máy chủ từ xa, nó không thể
liệt kê, xóa hoặc đổi tên các tệp tin hoặc thư mục và cũng không có xác thực giữa
client và server.
Do không được bảo mật trong quá trình truyền tệp tin nên TFTP thường được ứng
dụng trong các mạng cục bộ (LAN) để backup, import config IOS trên các thiết bị
Switch, Router hay Firewall hoặc dùng để nâng cấp OS hoặc cài đặt license cho các
thiết bị này.
TFTP sử dụng giao thức UDP làm giao thức truyền tải của nó và sử dụng port 69 là
port mặc định. Các tệp tin sẽ được chia nhỏ thành các block có chiều dài cố định 512
byte và được truyền lần lượt. Cả 2 thiết bị đều có thể coi là 1 TFTP server hay TFTP
client (gọi chung là Remote Host).
1.2. Cách thức hoạt động
Bất kì sự chuyển dữ liệu nào cũng bắt đầu bằng một yêu cầu đọc hoặc ghi một tệp,
nó cũng phục vụ để yêu cầu kết nối. Nếu máy chủ cấp yêu cầu, kết nối sẽ được mở và
tệp được gửi trong các khối có độ dài cố định 512 bytes. Mỗi gói dữ liệu chứa một
khối dữ liệu và phải được xác nhận bởi gói xác nhận trước khi gói tiếp theo có thể gửi.
Một gói dữ liệu có ít hơn 512 bytes tín hiệu chấm dứt chuyển. Nếu một gói bị mất
trong mạng, người nhận dự định sẽ hết thời gian và có thể truyền lại gói cuối cùng của
mình (có thể là dữ liệu hoặc xác nhận), do đó khiến người gửi gói bị mất gửi lại gói bị
mất đó. Người gửi phải giữ một gói trong tay để truyền lại, vì xác nhận bước khóa đảm
bảo rằng tất cả các gói cũ hơn đã được nhận. Lưu ý rằng cả hai máy liên quan đến
chuyển dữ liệu đều được coi là người nhận và người gửi. Một người gửi dữ liệu và
nhận xác nhận, người kia gửi xác nhận và nhận dữ liệu.
Hầu hết các lỗi sẽ gây ra chấm dứt kết nối. Một lỗi được báo hiệu bằng cách gửi
một gói lỗi. Gói này không được xác nhận và không được truyền lại (máy chủ TFTP
hoặc người dùng có thể chấm dứt sau khi gửi thông báo lỗi), vì thế đầu kia của kết nối
có thể không nhận được. Do đó, thời gian chờ được sử dụng để phát hiện sự chấm dứt
khi gói lỗi bị mất. Lỗi được gây ra bởi ba loại sự kiện : không thể đáp ứng yêu cầu ( ví
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

dụ: không tìm thấy tệp, vi phạm truy cập hoặc không có người dùng đó), nhận được
gói không thể giải thích bằng sự chậm trễ hoặc trùng lặp trong mạng ( ví dụ: một gói
hình thành không chính xác) và mấy quyền truy cập vào một tài nguyên cần thiết ( ví
dụ: toàn bộ đĩa hoặc quyền truy cập bị từ chối trong quá trình chuyển).
TFTP chỉ nhận ra một điều kiện không gây ra sự chấm dứt, cổng nguồn của gói tin
nhận được không chính xác. Trong trường hợp này, một lỗi sẽ được gửi đến máy chủ
gốc. Giao thức này rất hạn chế, để đơn giản hóa việc thực hiện. Ví dụ, các khối có
chiều dài cố định giúp phân bổ thẳng và xác nhận bước khóa cung cấp kiểm soát luồng
và loại bỏ yêu cầu sắp xếp lại các gói dữ liệu đến.
1.3. Mối quan hệ với các giao thức khác
Như đã đề cập, TFTP được thiết kế trên nền giao thức Datagram (UDP). Vì
Datagram triển khai trên nền giao thức Internet, các gói sẽ có tiêu đề Internet, tiêu đề
Datagram và tiêu đề TFTP. Ngoài ra các gói có thêm tiêu đề (LNI, ARPA tiêu đề,
v.v..) cho phép chúng thông qua phương tiện vận chuyển nội bộ.
Thứ tự nội dung của một gói gồm: tiêu đề Local Medium (nếu được sử dụng), tiêu
đề Internet, tiêu đề Datagram và tiêu đề TFTP và phần còn lại của gói tin TFTP. TFTP
không chỉ định bất kỳ các giá trị trong tiêu đề Internet. Mặt khác, nguồn và trường
cổng đích của tiêu đề được TFTP sử dụng và trường độ dài phản ánh kích thước của
gói TFTP. Các định danh chuyển (TID) được sử dụng bởi TFTP được chuyển đến lớp
Datagram để được sử dụng làm cổng; vì thế chúng phải nằm trong khoảng từ 0 đến
65,535. Việc khởi tạo TID là thảo luận trong phần về giao thức kết nối ban đầu.
Tiêu đề TFTP gồm 2 byte opcode cho biết loại gói (DATA, ERROR,…)

Local Medium Internet Datagram TFTP

Bảng 1: Thứ tự tiêu đề

Hình 1: Đóng gói tiêu đề TFTP


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

1.4. So sánh TFTP với FTP

TFTP FTP
TFTP là giao thức truyền tệp FTP được dùng để trao đổi dữ liệu
tin đơn giản theo bước, cho trong mạng thông qua giao thức
phép một khách hàng download TCP/IP, thường hoạt động trên hai
một tập tin từ một máy chủ từ cổng là 20 và 21. Với giao thức
xa. Một trong những ứng dụng này, các máy client trong mạng có
Khái niệm chính của nó là trong giai đoạn thể truy cập máy chủ FTP để gửi
đầu của các nút khởi động từ hoặc lấy dữ liệu. Điểm nổi bật là
mạng cục bộ. TFTP đã được sử người dùng có thể truy cập vào
dụng cho ứng dụng này vì nó máy chủ FTP để truyền và nhận
rất đơn giản để thực hiện dữ liệu dù đang ở xa.

Bảo mật TFTP được sử dụng chủ yếu để - FTP có thể truy cập nặc
chuyển các tập tin từ (hoặc ghi danh. Điều này có nghĩa là người
chúng vào) một máy chủ từ xa. dùng có thể đăng nhập vào máy
Bởi vì nó là một giao thức mở, chủ này bằng tài khoản 'ẩn danh'
thiếu bảo mật - có nghĩa là rất khi được nhắc tên người dùng và
nguy hiểm khi truyền tệp qua mật khẩu. Trong hầu hết các
máy chủ mở trên internet. Do trường hợp, người dùng không có
đó, TFTP thường chỉ được sử tài khoản trực tiếp với máy chủ sẽ
dụng trên các mạng riêng và / được nhắc sử dụng địa chỉ email
hoặc mạng cục bộ. Thật không của người đó thay cho mật khẩu;
may, không có quá trình xác tuy nhiên, hầu như không có quy
thực, do đó không có cơ chế mã trình xác minh diễn ra sau khi
hóa, được đưa ra. Do tính đơn thông tin được cung cấp (chẳng
giản của nó, TFTP chỉ có thể hạn như tại Trung tâm Thông tin
truyền các tệp lớn như terabyte Công nghệ sinh học Quốc gia).
và cho phép các gói dữ liệu quá - Các máy chủ FTP có giao
khổ chuyển - điều này có thể thức xác thực và mã hóa. Khi
gây ra sự chậm trễ lớn trong quyền truy cập đó bị hạn chế, dịch
việc truyền tệp. vụ FTP (FTP mail) từ xa có thể
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

được triển khai để khắc phục vấn


đề hạn chế. Điều này cho phép
truy cập, nhưng hạn chế người
dùng xem các thư mục hoặc sửa
đổi các lệnh.

- Giống như FTP, TFTP - Giao thức FTP hoạt động


sử dụng phần mềm máy khách dựa trên mô hình cơ bản của việc
và máy chủ để tạo kết nối giữa truyền và nhận dữ liệu từ máy
hai thiết bị. Từ máy khách Client đến máy Server. Quá trình
TFTP, các tệp riêng lẻ có thể truyền nhận dữ liệu giữa máy
được sao chép (tải lên) vào Client và Server lại được tạo nên
hoặc tải xuống từ máy chủ. Nói từ 2 tiến trình TCP logic là
cách khác, máy chủ lưu trữ các Control Connection và Data
tệp trong khi máy khách yêu Connection.
cầu hoặc gửi chúng. - Control Connection: Đây là
- TFTP cũng có thể được phiên làm việc TCP logic đầu tiên
sử dụng để khởi động từ xa được tạo ra khi quá trình truyền
Mô hình máy tính và sao lưu các tệp cấu dữ liệu bắt đầu. Tuy nhiên, tiến
hoạt động hình mạng hoặc bộ định tuyến. trình này chỉ kiểm soát các thông
- TFTP dựa vào UDP để tin điều khiển đi qua nó, ví dụ như
truyền tải dữ liệu. các tập lệnh. Quá trình này sẽ
được duy trì trong suốt quá trình
phiên làm việc diễn ra.
- Data Connection: Khác với tiến
trình Control Connection, Data
Connection là một kết nối dữ liệu
TCP được tạo ra với mục đích
chuyên biệt là truyền tải dữ liệu
giữa máy Client và máy Server.
Kết nối sẽ tự động ngắt khi quá
trình truyền tải dữ liệu hoàn tất.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

Các phương TFTP là một giao thức đơn -Khi quá trình truyền dữ liệu được
thức truyền giản để truyền tệp, được thiết lập, dữ liệu sẽ được truyền từ
dữ liệu
triển khai trên giao thức máy Client đến máy Server hoặc
UDP/IP sử dụng cổng số 69 có thể ngược lại. Dựa trên việc
nổi tiếng. TFTP được thiết truyền dữ liệu này, FTP có 3
kế nhỏ và dễ thực hiện, do phương thức truyền tải dữ liệu là
đó nó thiếu hầu hết các tính stream mode, block mode, và
năng nâng cao được cung compressed mode.
cấp bởi các giao thức truyền
- Stream mode: Phương thức này
tệp mạnh mẽ hơn. TFTP chỉ
hoạt động dựa vào tính tin cậy
đọc và ghi tệp từ hoặc đến
trong việc truyền dữ liệu trên giao
một máy chủ từ xa. Nó
thức TCP. Dữ liệu sẽ được truyền
không thể liệt kê, xóa hoặc
đi dưới dạng các byte có cấu trúc
đổi tên tập tin hoặc thư mục
không liên tiếp. Thiết bị gửi chỉ
và nó không có quy định để
đơn thuần đẩy luồng dữ liệu qua
xác thực người dùng. Ngày
kết nối TCP tới phía nhận mà
nay TFTP thường chỉ được
không có một trường tiêu đề nhất
sử dụng trên các mạng cục
định.
bộ (LAN).
- Block mode: Là phương thức
truyền dữ liệu mang tính quy
chuẩn hơn. Với phương thức này,
dữ liệu được chia thành nhiều khối
nhỏ và được đóng gói thành các
FTP blocks. Mỗi block sẽ chứa
thông tin về khối dữ liệu đang
được gửi.

- Compressed mode: Phương thức


truyền sử dụng kỹ thuật nén dữ
liệu khá đơn giản là “run-length
encoding”. Với thuật toán này, các
đoạn dữ liệu bị lặp sẽ được phát
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

hiện và loại bỏ để giảm chiều dài


của toàn bộ thông điệp khi gửi đi.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

CHƯƠNG 2: MÔ HÌNH KẾT NỐI

2.1. Giao thức UDP


2.1.1. Khái niệm
UDP là viết tắt của cụm từ User Datagram Protocol. UDP là một phần của bộ giao
thức Internet được sử dụng bởi các chương trình chạy trên các máy tính khác nhau trên
mạng. Không giống như TCP/IP, UDP được sử dụng để gửi các gói tin ngắn gọi là
datagram, cho phép truyền nhanh hơn. Tuy nhiên, UDP không cung cấp kiểm tra lỗi
nên không đảm bảo toàn vẹn dữ liệu.

Hình 2: Cách thức truyền thông UDP.

2.1.2. Cách thức hoạt động


Giao thức UDP hoạt động tương tự như TCP nhưng nó không cung cấp kiểm tra lỗi
khi truyền gói tin.
Khi một ứng dụng sử dụng UDP, các gói tin chỉ được gửi đến người nhận. Người
gửi không đợi để đảm bảo người nhận có nhận được gói tin hay không, mà nó tiếp tục
gửi các gói tiếp theo. Nếu người nhận bỏ lỡ một vài gói tin UDP, gói tin đó bị mất vì
người gửi không gửi lại chúng. Điều này có nghĩa là các thiết bị có thể giao tiếp nhanh
hơn.
2.1.3. Cấu trúc gói tin UDP
Khi chúng ta gọi hàm UDP để vận chuyển một chuỗi byte tới tiến trình đích,
chương trình UDP sẽ bổ sung thêm một chuỗi byte nhỏ (8 bytes) vào đầu chuỗi byte
dữ liệu. Chuỗi byte bổ sung của UDP được gọi là header. Phần dữ liệu nhận từ ứng
dụng được gọi là phần payload.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

UDP header cùng với phần payload tạo ra một đơn vị thông tin riêng gọi là
datagram. Như vậy có thể dễ dàng hình dung, datagram thực chất là một chuỗi byte
lớn

Hình 3: Cấu trúc header của gói tin UDP.


Do một chuỗi bit thường rất dài, chúng ta không thể viết nó lên trên cùng một dòng.
Thay vào đó, người ta sử dụng cách viết gần giống như biểu diễn một ma trận. Cụ thể,
người ta thường chỉ viết 32 bit (4 byte) trên mỗi dòng, và nhóm mỗi 8 bit vào một
octet/byte. Để tiện lợi cho việc tính toán ra vị trí của bit hoặc byte trong mảng, người
ta đưa vào hai dòng phụ: dòng đầu đánh số byte từ 0 đến 3 (dòng Octet), dòng 2 đánh
số bit từ 0 đến 31 (dòng Bit). Đầu mỗi dòng người ta thêm giá trị offset của byte và
offset của bit. Vị trí của byte/octet ở mỗi dòng tính bằng offset của byte/octet ở dòng
đó cộng với số thứ tự của cột tương ứng ở dòng Octet. Tương tự vị trí của bit ở mỗi
dòng bằng offset của bit của dòng đó cộng số thứ tự của cột tương ứng ở dòng Bit.
Trong mô tả UDP, chúng ta sử dụng hai dòng để mô tả một mảng 8 byte (64 bit),
mỗi dòng chứa 4byte 32 bit). Mảng này được chia thành 4 phần:
- Source port: chiếm từ bit 0 đến bit 15 (tức byte 0 và byte 1)
- Destination port: chiếm từ bit 16 đến bit 31 (tức byte 2 và byte 3)
- Length: chiếm từ bit 32 + 0 = 32 (32 là bit offset của dòng 2) đến 32 + 15 = 47
(tức là byte 4 + 0 = 4 và 4 + 1 = 5, với 4 là byte offset của dòng 2).
- Checksum: chiếm từ bit 32 + 16 = 48 tới bit 32 + 31 = 63 (tức là byte 4+2=6 và
byte 4 +3 =7).
2.1.4. UDP header

Hình 4: Định dạng tiêu đề UDP


Source port number (2 byte) là số cổng của tiến trình nguồn. Lần đầu tiên client
phát lệnh SendTo, UDP sẽ tự hỏi hệ thống để mượn một giá trị port (thường nằm cuối
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

dải giá trị) và điền vào trường này. Khi Server phát lệnh SendTo, UDP sử dụng luôn
giá trị cổng mà tiến trình này đã chiếm dụng. Mỗi khi khởi tạo lại object của Socket
(như trong code của Client), giá trị cổng nguồn lại thay đổi. Nếu chúng ta duy trì một
object duy nhất của Socket thì giá trị cổng nguồn của gói tin phát từ client sẽ không
đổi.
Destination port number (2 byte) là số cổng của tiến trình đích. Khi Client phát lệnh
sendTo, thông tin về port của Server từ tham số thứ hai (kiểu IPEndPoint) được sử
dụng cho trường này.
Length là độ dài của Header + data. Về lý thuyết thì 8 <= Length <= 65535 (tức là 8
byte header + 65527 byte data), nhưng trên thực tế, 8<= Length <= 655507 (bằng giá
trị tối đa mô tả được 2 byte là 65536 trừ đi 8 buyte UDP header, trừ tiếp 20 byte IP
header).
Checksum dùng để kiểm tra lỗi header và dữ liệu nhằm đảm bảo tính toàn vẹn của
gói tin. Checksum không bắt buộc với IPv4 (nếu không dùng thì chứa toàn các bit 0)
nhưng bắt buộc với IPv6. Trường này được UDP tính toán tự động theo thuật toán mô
tả trong RFC.
2.1.5. Truyền dữ liệu với UDP
Truyền tải dữ liệu qua UDP không tạo liên kết ảo giữa các tiến trình tham gia truyền
thông. Do không tạo ra liên kết ảo trước khi truyền dữ liệu, giao thức UDP có thể
truyền dữ liệu đi ngay lập tức mà không cần thực hiện quá trình xây dựng liên kết
phức tạp. Vì lý do này mà chỉ khi nào nhận được dữ liệu (ReceiveFrom), tiến trình mới
biết được nó đang trao đổi dữ liệu với tiến trình nào (thông qua tham số thứ hai kiểu
EndPoint). Cũng vì lý do này, UDP được gọi là giao thức phi liên kết, socket UDP còn
được gọi là socket phi liên kết (connectionless socket).
Giao thức UDP đơn giản và cho phép truyền dữ liệu theo thời gian thực. Tuy nhiên,
do thiếu các cơ chế kiểm soát dữ liệu trong quá trình truyền, giao thức UDP chỉ thích
hợp khi truyền các loại dữ liệu không có yêu cầu cao về kiểm tra và sửa lỗi. Vì vậy
UDP được sử dụng phổ biến nhất trong việc truyền tải dữ liệu đa phương tiên (video,
audio, image), trong đó, việc mất một số datagram không ảnh hưởng đến việc sử dụng
dữ liệu, đồng thời cần tốc độ truyền tải cao.
Truyền tải dữ liệu qua UDP không sử dụng các bộ nhớ đệm, do đó chương trình
đích bắt buộc phải nhận gói tin UDP kịp thời. Nếu không phát lệnh nhận
(ReceiveFrom) kịp thời, gói tin UDP sẽ mất đi. Giao thức và dịch vụ tầng ứng dụng
phổ biến sử dụng UDP bao gồm Domain Name System (DNS), Network Time
Protocol (NTP), IP tunneling, Remote Procedure Call (RPC), Network File System
(NFS), DHCP, TFTP (Trivial FTP), IPTV (Streaming media).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

2.2. Khởi tạo kết nối TFTP


Chuyển tiếp được thiết lập bằng cách gửi yêu cầu (WRQ để ghi vào hệ thống tệp
bên ngoài hoặc RRQ để đọc từ đó), và nhận được phản hồi tích cực, gói xác nhận để
ghi hoặc dữ liệu đầu tiên để đọc. Nhìn chung, gói xác nhận sẽ chứa số khối của gói dữ
liệu được xác nhận. Mỗi gói dữ liệu có liên kết với nó một số khối; số khối là liên tiếp
và bắt đầu với số 1. Vì phản hồi tích cực đối với yêu cầu ghi là gói xác nhận, nên trong
trường hợp đặc biệt này, số khối sẽ bằng không. (Thông thường, do gói xác nhận đang
xác nhận gói dữ liệu, gói xác nhận sẽ chứa số khối của gói dữ liệu được xác nhận).
Nếu trả lời là gói lỗi, thì yêu cầu đã bị từ chối.
Để tạo kết nối, mỗi đầu kết nối sẽ chọn một TID cho chính nó, được sử dụng trong
suốt thời gian của kết nối đó. Các TID’s được chọn cho một kết nối nên được chọn
một cách ngẫu nhiên, do đó xác suất để cùng một số được chọn hai lần liên tiếp là rất
thấp. Mỗi gói có liên kết với nó hai TID’s của các đầu kết nối, TID nguồn và TID
đích. Các TID’s này được trao nhiệm vụ hỗ trợ cho UDP (hoặc giao thức datagram
khác) làm cổng nguồn hoặc cổng đích. Máy chủ yêu cầu chọn TID nguồn của nó như
được mô tả ở trên và gửi yêu cầu ban đầu đến TID 69(decimal) đã biết (105 octal) trên
máy chủ phục vụ. Đáp ứng cho yêu cầu, trong hoạt động bình thường, sử dụng TID
được máy chủ chọn làm TID nguồn và TID được chọn cho tin nhắn trước đó của
người yêu cầu làm TID đích. Hai TID được chọn sau đó được sử dụng cho phần còn
lại của quá trình chuyển tiếp.
Dưới đây là ví dụ cho thấy các bước được sử dụng để thiếp lập kết nối để ghi tệp.
Lưu ý rằng WRQ, ACK và DATA là tên của yêu cầu ghi, xác nhận và loại dữ liệu của
các gói tương ứng:
- Máy A gửi gói WRQ (yêu cầu ghi) tới máy S với nguồn là TID của A, đích: cổng
69

Hình 5: A gửi bản tin yêu cầu ghi để gửi file tới S.
- Máy S gửi lại bản tin ACK (xác nhận) (với số khối là 0) tới máy A với nguồn là
TID của S và đích là TID của A.

Hình 6: S gửi lại bản tin ACK 0 xác nhận yêu cầu.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

Tại thời điểm này, kết nối đã được thiếp lập và dữ liệu đầu tiên của gói có thể được
gửi đi bởi máy chủ A với seauence number là 1. Trong bước tiếp theo và trong tất cả
các bước tiếp theo, máy chủ cần đảm bảo rằng TID nguồn khớp với giá trị đã được
thỏa thuận trong các bước 1 và 2. Nếu TID không khớp, gói cần được bị loại bỏ như
gửi nhầm từ nơi khác đến. Mỗi gói lỗi nên được gửi đến nguồn của gói tin không
chính xác trong khi không làm phiền việc chuyển tiếp. Điều này chỉ có thể thực hiện
nếu TFTP trến thực tế nhận được một gói với TID không chính xác. Nếu các giao thức
hỗ trợ không cho phép nó, điều kiện lỗi cụ thể này sẽ không phát sinh.
Ví dụ sau đây cho thấy một hoạt động chính xác của giao thức trong đó tình huống
trên có thể xảy ra. Máy chủ A gửi một yêu cầu tới máy chủ S. Ở đâu đó trong mạng,
gói yêu cầu là gói bị trùng lặp và kết quả là hai xác nhận được trả về máy chủ A, với
các TID khác nhau được chọn trên máy chủ S để đáp lại hai yêu cầu. Khi phản hồi đầu
tiên đến, máy chủ A tiếp tục kết nối. Khi phản hồi thứ hai cho yêu cầu trên đến, nó nên
bị từ chối nhưng không có lý do gì để chấm dứt lần đầu tiên kết nối, do đó, nếu TID
khác nhau được chọn cho cả hai kết nối trên máy chủ S và máy chủ A kiếm tra TID
nguồn của tin nhắn nó nhận được, kết nối đầu tiên có thể được duy trì trong khi kết nối
thứ hai bị từ chối bằng cách trả lại một gói tin lỗi.
2.3. Chấm dứt kết nối TFTP
2.3.1. Chấm dứt thông thường
Kết thúc chuyển dữ liệu được đánh dấu bằng gói DATA chứa từ 0 đến 511 byte dữ
liệu (nghĩa là độ dài của Datagram <516). Gói này được một gói ACK thừa nhận giống
như tất cả các gói DATA khác. Máy chủ xác nhận gói DATA cuối cùng có thể chấm
dứt phía kết nối của nó khi gửi ACK cuối cùng. Mặt khác, máy chủ gửi ACK cuối
cùng sẽ đợi một lúc trước khi kết thúc để truyền lại ACK cuối cùng nếu nó bị mất.
Người xác nhận sẽ biết rằng ACK đã bị mất nếu nhận lại gói DATA cuối cùng. Máy
chủ gửi DATA cuối cùng phải truyền lại cho đến khi gói được xác nhận hoặc máy chủ
gửi hết thời gian. Nếu phản hồi là ACK, việc truyền đã hoàn thành thành cồng. Nếu
người gửi hết dữ liệu và không sẵn sàng truyền lại nữa, việc truyền vẫn có thể được
hoàn thành thành công, sau đó người xác nhận hoặc mạng có thể gặp sự cố, trong
trường hợp này cũng có thể việc truyền không thành công. Trong mọi trường hợp, kết
nối đã được đóng lại.
2.3.2. Chấm dứt sớm
Nếu một yêu cầu không thể được cấp hoặc một số lỗi xảy ra trong quá trình truyền,
thì một gói ERROR (opcode 5) được gửi. Đây chỉ là một phép lịch sự vì nó sẽ không
được truyền lại hoặc thừa nhận, vì vậy nó có thể không bao giờ được nhận. Thời gian
chờ cũng phải được sử dụng để phát hiện lỗi.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

CHƯƠNG 3: GÓI DỮ LIỆU TFTP

TFTP hỗ trợ 5 loại gói dữ liệu, mỗi loại có trường opcode dài 16 bit (mã hoạt động)
với giá trị tương ứng:

OPCODE OPERATION

1 Read request ( RRQ)

2 Write request (WRQ)

3 Data ( DATA)

4 Acknowledgment (ACK)

5 Error ( ERROR)

Bảng 2: Các loại gói dữ liệu TFTP


Tiêu đề TFP của gói chứ opcode được liên kết với gói đó, tuy nhiên opcode không
phải là cách duy nhất mà cấu trúc của các loại gói này khác nhau.
3.1. Yêu cầu đọc (RRQ), yêu cầu viết (WRQ)
Sự khác biệt duy nhất giữa các yêu cầu mà máy khách TFTP gửi đến máy chủ
TFTP để đọc (gói RRQ) hoặc truy cập ghi (gói WRQ) là mã hoạt động của chúng.
Mặc khác, cả hai loại gói cùng có chung định dạng:

Hình 7: Cấu trúc của TFTP “RRQ” và “WRQ”


Gói tin RRQ và WRQ (opcode 1 và 2 tương ứng) có định dạng như hình Hình 7.
Tên tệp là một chuỗi các byte trong netascii bị chấm dứt bởi một byte không. Trường
chế độ chứa chuỗi “netascii”, “octet” or “mail” (hoặc bất kì sự kết hợp nào của chữ
hoa và chữ thường, chẳng hạn như “NETASCII”, “NetAscii”, v.v..).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

Một máy chủ nhận dữ liệu chế độ netascii phải dịch dữ liệu sang định dạng của
chính nó. Chế độ Octet được sử dụng để truyền tệp ở định dạng 8 bit của máy mà tệp
đang được truyền. Giả định rằng mỗi loại máy có định dạng 8bit duy nhất phổ biến
hơn và định dạng đó được chọn. Ví dụ, trên máy DEC-20, máy 36 bit, đây là 4 byte 8
bit cho một từ có 4 bit bị hỏng. Nếu một máy chủ nhận được một tệp octet và sau đó
trả về nó, thì tệp được trả về phải giống hệt bản gốc. Chế độ mail sử dụng tên của
người nhận thư thay cho tệp và phải bắt đầu bằng WRQ, nếu không nó giống hết với
chế độ “netascii”. Chuỗi nguồi nhận thư phải ở dạng “usename” hoặc
“username@hostname” (tên người dùng + @ + máy chủ). Nếu hình thức thứ hai được
sử dụng, nó cho phép tùy chọn chuyển tiếp thư bằng máy tính chuyển tiếp.
Các cuộc thảo luận ở trên giả định rằng cả người gửi và người nhận đều hoạt động
trong cùng một chế độ, nhưng không có lý do gì mà điều này phải sảy ra. Ví dụ người
ta có thể xây dựng một máy chủ để lưu trữ. Không có lý do gì mà một cố máy như vậy
cần dịch netascii thành dạng văn bản của riêng nó, thay vào đó người gửi có thể gửi
tệp trong netascii, nhưng máy chủ lưu trữ có thể chỉ lưu trữ chúng mà không cần dịch
ở định dạng 8 bit. Một tình huống khác là một vấn đề hiện đang tồn tại trên các hệ
thống DEC-20, cả netascii và octet đều không truy cập tất cả các bit trong một từ.
Người ta có thể tạo ra một chế độ đặc biệt cho một máy như vậy đọc tất cả các bit
trong một từ, nhưng trong đó máy thu lưu trữ thông tin ở định dạng 8 bit. Khi một tệp
như vậy được lấy từ trang lưu trữ, nó phải được khôi phục về dạng ban đầu để có ích,
do đó chế độ đảo ngược cũng phải được thực hiện. Các trang người dùng sẽ phải nhớ
một số thông tin để đạt được điều này. Trong cả hai ví dụ này, các gói yêu cầu sẽ chỉ
định chế độ octet cho máy chủ ngoài, nhưng máy chủ cục bộ sẽ ở một chế độ khác.
Không có chế độ cụ thể cho máy hoặc ứng dụng nào được chỉ định trong TFTP, nhưng
một chế độ sẽ tương thích với thông số kĩ thuật này.
Cũng có thể xác định các chế độ khác để hợp tác các cặp máy chủ, mặc dù điều này
phải được thực hiện cẩn thận. Không có yêu cầu rằng bất kì máy chủ khác thực hiện
những điều này. Không có cơ quan trung ương sẽ xác định các chế độ này hoặc gán
tên cho chúng.
3.2. Dữ liệu (Data)
Các gói Data chứa các tệp sẽ được chuyển giữa máy chủ và máy khác. Vì dữ liệu
này được truyền theo các khối, gói tin TFTP DATA sẽ luôn chỉ chứa một phần của
tệp, ngoại trừ các tệp có tổng kích thước nhỏ hơn 512 byte tiêu chuẩn hoặc kích thước
khối được xác định riêng lẻ. Định dạng cho gói dữ liệu như sau:

Hình 8: Cấu trúc của TFTP DATA.


Các gói DATA (opcode = 3) có số khối và trường dữ liệu. Số khối trên các gói dữ
liệu bắt đầu bằng một và tăng thêm một cho mỗi khối dữ liệu mới. Hạn chế này cho
phép chương trình sử dụng một số duy nhất để phân biệt giữa các gói mới và các bản
sao. Trường dữ liệu dài từ 0 đến 512 bytes (4096 bit), với điều kiện máy chủ và máy
khách TFTP không đặt kích thước tối đa khác nhau cho các khối. Nếu nó dài 512 byte,
khối không phải là khối dữ liệu cuối cùng, khối cuối cùng cho biết kết thúc truyền dữ
liệu luôn nhỏ hơn ít nhất một byte. Nếu nó dài từ 0 đến 511 byte, nó báo hiệu kết thúc
truyền gói tin. Nếu phần còn lại của tệp được chuyển chỉ xảy ra có cùng kích thước với
khối, người gửi sẽ phải chuyển một gói khác có khối dữ liệu bằng không.
3.3. Hồi đáp (ACK)
Tất cả các gói dữ liệu WRQ và dữ liệu không đánh dấu kết thúc truyền tệp đều được
xác nhận bằng tin nhắn ACK khi giao tiếp qua TFTP thành công (trừ khi sảy ra thời
gian chờ).
Cấu trúc của các thông báo xác nhận đơn giản như sau:

Hình 9: Cấu trúc của TFTP ACK


Các thông điệp ACK cho giao tiếp TFTP bao gồm opcode dài 16 bit, đã được gán
một giá trị là 4 và số khối dữ liệu dài 16 bit được xác nhận bởi tin nhắn ACK. Nếu nó
đang đáp ứng yêu cầu WRQ, gói ACK có số khối dữ liệu là 0.
3.4. Lỗi (Error)
Bản tin Error được gửi bởi máy khách hoặc máy chủ ngay khi xảy ra lỗi trong giao
tiếp TFTP. Kết quả là, các gói tin này có thể là một phản hồi cho tất cả các loại gói đã
được liệt kê. Các gói lỗi có cấu trúc như sau:

Hình 10: Cấu trúc TFTP Error.


Một gói Error có thể là sự thừa nhận của bất kì loại gói nào khác. Mã lỗi là một số
nguyên cho biết bản chất của lỗi. Thông báo lỗi kết quả giúp người dùng hiểu vấn đề.
Đây là một lý do khác tạo sap chuỗi có độ dài thay đổi này thường ở định dạng
netascii. Kết thức được đánh đấu bằng một trường 8bit bao gồm các số 0.

Value Meanting

0 Not defined, see error message


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

41 File not found

2 Access violation

3 Disk full or allocation exceeded

4 Illegal TFTP operation

5 Unknown transfer ID

6 File already exists

7 No such user

Bảng 3: Bảng mã lỗi

CHƯƠNG 4: VẤN ĐỀ TỒN ĐỌNG VÀ XU HƯỚNG PHÁT TRIỂN

4.1. Tồn đọng


TFTP hoạt động bằng cách truyền gói UDP do đó tốc độ truyền dữ liệu nhanh hơn
nhưng bảo mật không đáng tin cậy.
- Nó không hỗ trợ user login.
- Chỉ dùng 1 connection.
- Khả năng của giao thức hạn chế, chỉ cho phép khả năng đọc và ghi dữ liệu.
- Giao thức không có bất kì cơ chế hiển thị thông tin về tập tin và thư mục có sẵn
trên một máy chủ, khách phải biết tên tệp mà họ tải xuống khi kết nối.
- Không được mã hóa dữ liệu trên toàn mạng, không có xác thực. TFTP được
khuyến nghị không truyền những dữ liệu nhạy cảm.
Giao thức TFTP gửi tất cả dữ liệu văn bản rõ ràng trên mạng. Vì nó thường sử dụng
truyền dữ liệu cấu hình cho các thiết bị và máy khách, phải xác minh rằng không có dữ
liệu nhạy cảm trong dữ liệu được truyền. Mặt khác bất kì ai cũng có thể truy nhập vào
tên các người dùng và mật khẩu khác nhau được sử dụng bởi các thiết bị đó.
4.2. Xu hướng phát triển
Phần mở rộng tùy chọn được gắn vào gói Yêu cầu đọc TFTP hoặc Yêu cầu ghi
trong RFC 2347 được hiển thị trong Hình 11 bên dưới. Tiện ích mở rộng này cho
phép đàm phán diễn ra trước bất kỳ chuyển tập tin nào, chẳng hạn như kích thước
khối, ký tự và thông tin bổ sung về quá trình truyền. Chúng tôi sẽ sử dụng tiện ích mở
rộng này để cung cấp đàm phán bảo mật trước khi chuyển tập tin xảy ra; chúng ta có
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

thể gọi nó là quá trình chứng thực TFTP.

Hình 11: Phần mở rộng tùy chọn TFTP


Sử dụng tiện ích mở rộng tùy chọn TFTP hiện có để cung cấp bảo mật như quy
trình chứng thực trước khi chuyển tập tin xảy ra. Cơ chế đàm phán tùy chọn được đề
xuất là một phần mở rộng tương thích ngược với giao thức TFTP v2. Do đó, TFTP bảo
mật (STFTP) được đề xuất có thể áp dụng cho hệ thống hoặc cơ sở hạ tầng mạng
TFTP hiện tại và nó chỉ yêu cầu vá hệ thống tối thiểu để được thực hiện giao thức Đọc
Yêu cầu như một ví dụ về việc triển khai bằng STFTP.
Các tùy chọn được thêm vào gói Yêu cầu đọc TFTP hoặc Yêu cầu ghi được hiển thị
như Hình 12.

Hình 12: Tùy chọn gói RRQ STFTP


Trường opcode chứa một tên miền 1 được sử dụng cho Yêu cầu đọc. Trường tên tập
tin tên miền Trường có chứa tên của tệp cần đọc; thay thế nó bằng chuỗi
TCG_ATTESTATION chuỗi để thể hiện giao thức bảo mật. Chế độ chuyển đổi trực
tuyến của chế độ truyền dữ liệu có chứa một trong các chuỗi; netascii, octet hoặc thư.
Ứng dụng opt11 được sử dụng để Phản hồi STFTP phiên bản OACK (hiển thị trong
Hình 13) khá giống với phản hồi STFTP L RRI RRQ, với sự khác biệt nhỏ trong đó
gói này không chứa trường tên tệp tên Drake. Gói OACK này sẽ phục hồi thông tin
tương tự nếu nó được đồng ý với RRQ. Tùy chọn và giá trị bổ sung có thể được sử
dụng nếu muốn đàm phán thêm. Tuy nhiên, để duy trì sự đơn giản của TFTP, tốt hơn
là tránh quá trình đàm phán phức tạp và kéo dài. Hơn nữa, không có nghĩa vụ nào
trong việc sắp xếp sử dụng của opt opt1v cho đến khi opt optN bởi vì chưa có tiêu
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

chuẩn nào cho việc sử dụng bảo mật trong giao thức TFTP. Tuy nhiên, sự sắp xếp này
hoạt động miễn là Máy chủ STFTP và Máy khách STFTP từ nhận ra các thông tin
trường này.

Hình 13: Tùy chọn gói STFTP từ OACK


Kể từ năm 1990, giao thức TFTP được sử dụng rất nhiều trong hệ thống với nguồn
lực hạn chế vì nó không yêu cầu hệ điều hành hoặc kernel để thực hiện truyền dữ liệu.
Môi trường làm việc của TFTP là triển khai gần như hoàn toàn bằng kim loại mà
không có bảo vệ an ninh để truyền dữ liệu trong máy nhúng. Các thiết bị nhúng hiện
có sử dụng giao thức TFTP trên đầu giao thức UDP / IP trong Tầng vận chuyển vì nó
nhỏ và rất nhẹ và phù hợp với việc triển khai trong phần sụn nhúng. Không thể sử
dụng TCP/ IP với Lớp cổng bảo mật (SSL) hoặc Bảo mật lớp vận chuyển (TLS) trong
tình huống này do các ràng buộc tài nguyên trong các thiết bị nhúng.
Cải thiện TFTP với tăng cường bảo mật vì các thiết bị nhúng hiện tại không có đủ
sức mạnh tính toán và tài nguyên để thực hiện các hoạt động bảo mật phức tạp. STFTP
đề xuất được thiết kế để sử dụng trong phần sụn (thể hiện trong H.14). Sẽ thêm các
hướng dẫn máy nhỏ trong phần sụn UBOOT, và nó sẽ sử dụng ít hơn 1 MB bộ nhớ
không bay hơi (ví dụ: flash ROM) sau khi biên dịch thành tệp nhị phân.

Hình 14: Kiến trúc bảo mật STFTP


BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

Phương án của STFTP là sử dụng trao đổi khóa và mã hóa dữ liệu an toàn trong
giao thức TFTP. Hình 15 cho thấy giao thức STFTP thực hiện và nó chứng minh. Để
đảm bảo thực hiện bảo mật cao, giá trị p phải là số nguyên tố cao hơn bảo mật 128 bit
vì p là khóa chung được chia sẻ; và các giá trị a và b phải đủ lớn làm khóa riêng cho
bài toán khó theo cấp số nhân. Sản phẩm của giao thức trao đổi khóa là khóa mật mã
được sử dụng làm mã hóa khóa đối xứng AES. Do đó, để đảm bảo AES có mã hóa dữ
liệu mạnh, giá trị p phải là số nguyên tố lớn. Tuy nhiên, việc sử dụng một số lượng lớn
trong p, a và b sẽ làm giảm hiệu suất của hệ thống nhúng trong đó các ràng buộc tài
nguyên được nhúng phải được tính đến so với tính bảo mật của dữ liệu.

Hình 15: Giao thức mã hóa dữ liệu và trao đổi khóa an toàn STFTP
- Giao thức bảo mật để truyền hàng loạt dữ liệu giữa các thiết bị nhúng gọi là
STFTP đã tạo ra một khung bảo mật để tăng cường bảo mật. Tin cậy và quyền riêng
tư (STP) cho sơ sở hạ tầng hệ thống nhúng. Đề xuật sẽ khắc phục các vấn đề trong
kiểm soát, giám sát và nâng cao cấp cơ sở hạ tầng nhúng. Đề xuất sử dụng mã hóa
đối xứng nhẹ (cho dữ liệu ) và mã hóa đối xứng ( để trao đổi khóa ) trong giao thức
truyền tệp trung gian (TFTP).
- Bảo mật STFTP sử dụng ít nhất DHKE hoặc AES có thể giúp vảo vệ thông tin.
Việc triển khai của TFTP là dành cho các thiết bị nhúng như điểm truy nhập Wifi
(AP) và trạm gốc từ xa (BS).
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

TÀI LIỆU THAM KHẢO

1. Bài Giảng Internet và Giao Thức HVCN Bưu Chính Viễn Thông (Biên soạn: TS.
Nguyễn Chiến Trinh, PGS.TS. Nguyễn Tiến Ban, ThS.Nguyễn Thị Thu Hằng).
2. A lightweight and secure TFTP protocol for smart environment
https://www.researchgate.net/publication/261348565
3. https://tools.ietf.org/html/rfc1350
4. https://www.ionos.com/digitalguide/server/know-how/trivial-file-transfer- protocol/?
fbclid=IwAR3HhJI30skuzgLHs8lElvCY-M9aJkI- yYobgdhv6RHjy0zo2SKlfXN7iG0
5. https://vi.wikipedia.org/wiki/Trivial_File_Transfer_Protocol
6. https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/t_commands/tftp.html
http://techzain.com/how-to-setup-tftp-server-tftpd64-tfpt.
BÀI TẬP NHÓM INTERNET VÀ GIAO THỨC

You might also like