Professional Documents
Culture Documents
Ghi
STT Họ và Tên Mã sinh viên Nội Dung Chính
Chú
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
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
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
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,…)
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á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.
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
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
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
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
3 Data ( DATA)
4 Acknowledgment (ACK)
5 Error ( ERROR)
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:
Value Meanting
2 Access violation
5 Unknown transfer ID
7 No such user
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.
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
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