Announcement
Collapse
No announcement yet.
Vấn đề khó : Ưu điểm của TFTP là gì so với FTP ?
Collapse
X
-
Phạm Minh Tuấn
Email : phamminhtuan@vnpro.org
Yahoo : phamminhtuan_vnpro
-----------------------------------------------------------------------------------------------
Trung Tâm Tin Học VnPro
149/1D Ung Văn Khiêm P25 Q.Bình thạnh TPHCM
Tel : (08) 35124257 (5 lines)
Fax: (08) 35124314
Home page: http://www.vnpro.vn
Support Forum: http://www.vnpro.org- Chuyên đào tạo quản trị mạng và hạ tầng Internet
- Phát hành sách chuyên môn
- Tư vấn và tuyển dụng nhân sự IT
- Tư vấn thiết kế và hỗ trợ kỹ thuật hệ thống mạng
Network channel: http://www.dancisco.com
Blog: http://www.vnpro.org/blog
-
Originally posted by invalid-password View PostTuy nhiên, TFTP chỉ được cái đơn giản dễ dàng thiết lập hơn ở chỗ không cần phải config user+pass, nhưng nó lại quá chậm so với FTP. Mà nếu so thời gian để config thêm FTP với thời gian làm lợi khi truyền nhanh thì FTP vẫn hơn hẳn TFTP.
Chỗ tui có lần phải upgrade IOS cho 40 thiết bị. Nếu xài TFTP thì truyền một cái IOS vài chục MB phải chờ rất lâu, còn nếu truyền bằng FTP thì nhanh hơn nhiều lần (hình như nhanh hơn 20 lần).
Tui vẫn chưa thấy ưu điểm gì đáng kể của TFTP so với FTP cả ?!
Theo tui thì việc TFTP thiết lập đơn giản, không cần chứng thực, ... vẫn chưa phải là ưu điểm có thể cạnh tranh được của TFTP so với FTP !
ko biết bác còn theo dõi thread này ko ?
mời bác tham khảo ở đây:
The Need for TFTP
The complexity of FTP is partially due to the protocol itself, with its dozens of commands and reply codes, and partly due to the need to use of the Transmission Control Protocol (TCP) for connections and data transport. The reliance on TCP means that any device wanting to use FTP needs not only the FTP program, but also a full TCP implementation as well. It must handle FTP's need for simultaneous data and control channel connections and other requirements.
For a conventional computer, like a regular PC, Macintosh or UNIX workstation, none of this is really an issue, especially with today's large hard disks and fast, cheap memory. But remember that FTP was developed over three decades ago, when hardware was slow and memory was expensive. Furthermore, even today, regular computers are not the only devices used on networks. There are some networked devices that do not have the capabilities of “true” computers, but still need to be able to do file transfers. For these devices, a full FTP and TCP implementation is a non-trivial matter.
One of the most notable examples of devices where this is an issue are diskless workstations. These are computers that have no permanent storage, so when they start up, they cannot read a whole TCP/IP implementation from a hard disk like most computers do easily. They start with only a small amount of built-in software, and must obtain configuration information from a server and then download the rest of their software from another network device. The same issue arises for certain other hardware devices with no hard disks.
The process of starting up these devices is commonly called bootstrapping and occurs in two phases. First, the workstation is provided with an IP address and other parameters, through the use of a host configuration protocol such as BOOTP or DHCP. Second, the client downloads software, such as an operating system and drivers, that let it function on the network like any other device. This requires the ability to transfer files quickly and easily. The instructions to perform this bootstrapping must fit onto a read-only memory (ROM) chip and this makes the size of the software an important issue—again, especially many years ago.
The solution to this need was to create a “light” version of FTP that would emphasize small program size and simplicity over functionality. This new protocol, called the Trivial File Transfer Protocol (TFTP), was initially developed in the late 1970s, and first standardized in 1980. The modern version, called TFTP version 2, was documented in RFC 783 in 1981, which was revised and published as RFC 1350, The TFTP Protocol (Revision 2), in 1992. This is the current version of the standard.
FTP phù hợp vời truyền file có độ tin cậy lớn, dùng cho quá trình truyền file từ FTP client đến FTP server (layer 1 đến layer 7), PC và server đểu hoạt động từ layer 1 đến layer 7, FTP là giao thức ở layer 7... sẽ hợp lý nếu dùng cho thiết bị ở lớp 7 hơn... là trên ROM của thiết bị như switch hoặc router (dùng giao thức TFTP).
(source: article)Last edited by trainingit; 20-01-2009, 03:41 PM.no car...no house...no money, but have only a sharing and friendly heart. What's the most important thing in this life "Heart or Money ?". Anything else can stead money ?
:32::53::X:106:
Nothing last forever...
Comment
-
Sao cái forum này lúc nó gửi mail notification khi có bài mới, lúc lại không nhỉ ?
Đoạn text tiếng Mỹ kia đã giải thích đúng vai trò tồn tại của TFTP, là nó thích hợp cho những hệ thống devices nhỏ không hoàn chỉnh như PC.
Lấy ví dụ : tui thiết kế một thiết bị, nó có khả năng truyền dữ liệu sang PC trên giao thức IP. Nó chỉ có 640KB bộ nhớ, vì phần mềm của nó rất nhỏ. Lượng bộ nhớ còn sót lại không đủ để truyền dữ liệu bằng FTP. Vì một gói Ethernet có thể đến 1,5 Kbyte nên không đủ bộ nhớ để làm TCP buffer (buffer dùng đệm các gói đã truyền đi để khi có error thì lấy ra truyền lại). Do vậy TFTP là giao thức thích hợp, vì đó là giao thức truyền dữ liệu không cần bộ nhớ đệm.
Hơn nữa chi phí viết code cho module FTP trên một device cao hơn nhiều so với viết TFTP, vì muốn code FTP thì phải code được module xử lý TCP, trong khi xử lý UDP thì dễ hơn. Ai thử viết code từ TCP đến FTP thì sẽ thấy, viết UDP rồi TFTP thì nhanh hơn nhiều lần (viết có 1 ngày là xong hà, tui vừa làm mạng viễn thông vừa làm mạng IP vừa làm lập trình mà, hì hì)
Vấn đề khó này close được rồi, tui mới có câu hỏi khác về quá trình Auto-Negotiate ở đây http://vnpro.org/forum/showthread.ph...753#post101753
Comment
-
TFTP là gì?
Là 1 giao thức rất đơn giản để truyền nhận files. Sự đơn giản thể hiện ở ngay cái tên của nó: Trivial File Transfer Protocol (TFTP). Đầu tiên được thiết kế bởi Noel Chiappa, sau đó được nhiều người chỉnh sửa, bổ sung. Nó dùng cơ chế ACK và truyền lại (resending) theo ý tưởng của TCP, cơ chế kiểm lỗi thì dựa trên cơ chế thông điệp trong EFTP của PARC. TFTP đã được hiện thực trên nền tảng của UPD vì vậy nó có thể dùng để di chuyển file trên các máy trên các mạng khác nhau có hiện thực UDP. Nhưng điều này không loại trừ khả năng hiện thực TFTP trên các protocol datagram khác. Nó được thiết kế để hiện thực nhỏ gọn và đơn giản, do đó FTP là giao thức bổ sung các thiếu sót của TFTP.
1 ví dụ về ứng dụng của TFTP: Boot từ xa các host diskless, TFTP dùng để download các file cấu hình cơ bản từ thư mục /boot (lúc này không cần cơ chế nhận dạng).
Nếu dùng không cẩn thận, TFTP sẽ cho phép bất cứ ai download bất cứ file gì trên hệ thống của bạn.
TFTP (chỉ) có thể:
- Đọc và ghi file (hoặc mail) đến/đi từ 1 server từ xa.
TFTP không thể:
- Liệt kê các thư mục
- Chưa có cơ chế nhận dạng user (nên không có bảo vệ bằng password như FTP)
Hiện tại có 3 kiểu transfer được hỗ trợ:
- Netascii: netascii là mã ASCII được chỉnh sửa theo đặc tả “Telnet Protocol Specification” - đây là ASCII 8 bit
- Octet: 8 bit thô
- Mail: là các kí tự netascii được gửi đến 1 user chứ không phải 1 file ( kiểu truyền mail này đã cổ xưa và không nên được hiện thực hay dùng)
Ngòai ra 2 host có thể thoả thuận với nhau để xác định các kiểu transfer khác
TFTP packet
TFTP được hiện thực với nền tảng là Datagram Protocol (UDP), mà Datagram Protocol lại được hiện thực trên Internet Protocol, nên các packet của TFTP sẽ có 1 Internt header, 1 Datagram header, và 1 TFTP header. Ngòai ra, các packet có thể có 1 header (LNI, ARPA header…) để cho phép chúng đi qua các phương tiện truyền dẫn trong cục bộ. Thứ tự các nội dung trong 1 packet TFTP:
———————————————————————–
| Local Medium | Internet | Datagram | TFTP |
———————————————————————–
Giao thức khởi tạo kết nối:
- Gửi request: WRQ với yêu cầu ghi lên file, và RRQ với yêu cầu đọc file
- Nhận trả lời: 1 ACK packet cho yêu cầu ghi, hay là 1 ACK packet kèm theo 1 packet dữ liệu đầu tiên cho yêu cầu đọc. Trong ACK packet sẽ chứa số block của paket dữ liệu được truyền đi để đọc (block được đánh số tuần tự, bắt đầu từ 1). ACK packet của yêu cầu ghi sẽ có số block = 0. Nếu trả lời là 1 error packet thì yêu cầu bị từ chối.
- Để thiết lập kết nối, mỗi terminal xác định 1 TID (Transfer Identifier) để dùng trong suốt quá trình giao tiếp. Đây là các số nguyên được chọn ngẫu nhiên trong khoảng 0 - 65,535. Mỗi packet sẽ quan tâm đến TID của 2 đầu.
VD: 1. host A gửi “WRQ” đến host B với source = TID của A, destination = 69 (TID của B)
2. host B gửi “ACK” (với block number = 0) đến A với source = TID của B, destination = TID của A
- Sau khi gửi request và nhận trả lời xong, kết nối có thể được thiết lập, host A có thể gửi packet data đầu tiên với block number = 1. Trong các bước tiếp theo, các host sẽ kiểm tra source TID có đúng với giá trị thiết lập ở 1 và 2 không. Nếu không phù hợp, packet sẽ bị từ chối và 1 error packet sẽ được gửi đến source của packet bị sai đó, mà không làm đứt nghẽn kết nối.
(Trích Thuật Ngữ Tin Học)
Hướng dẫn cài đặt cấu hình Data Loss Prevention - MyQLP Appliance (Open Source)
Hướng dẫn cài đặt và cấu hình Mdeamon 12.x
Hướng dẫn cài đặt cấu hình ISA 2006 và Exchange 2003 - Mô hình Front-End Back-End
Cài đặt và cấu hình Cacti - Giám Sát và Quản Lý Hệ Thống Mạng
Hướng dẫn cài đặt cấu hình Retrospect Backup Server
Cài đặt và cấu hình phần mềm FSA Audit Files Server
CAMAPTRANG
http://www.asterisk.vn
Comment
-
Originally posted by netbaby View PostMình đã thử capture lại khi truyền file bằng TFTP thì thấy có ACK trong đó. Đố các bạn biết tại sao?
Câu hỏi khác: tại sao giao thức FTP phải dùng đến 2 port 20 và 21. Tại sao không dùng 1 port?:54:cứ gõ rồi cửa sẽ mở :54:
Comment
-
Sở dĩ mọi người khó nghĩ ra tại sao TFTP vẫn tồn tại là vì mọi người chỉ nghĩ đến những vấn đề xoay quanh tính năng của nó mà không tính đến khả năng phần cứng, chi phí viết phần mềm, khả năng tích hợp, ... Rõ ràng một thiết bị không bộ nhớ (hoặc rất nhỏ) có thể lập trình để truyền TFTP tuy nhiên nếu muốn truyền FTP thì bộ nhớ nó phải lớn hơn, mà chip nhớ cho device đâu phải rẻ như RAM máy tính.
Originally posted by socolak50 View PostFTP dùng 2 port là để 1 port truyền đi 1 port nhận về đúng hok nhỉ
Tại sao FTP lại dùng đến 2 port mà không dùng 1 ?
Tại sao HTTP lại dùng 1 port mà không dùng 2 ?
Ôi tại sao ... !
Comment
-
Đúng roài, tại mấy pác kia muốn biết tận tường gốc rễ thôi mà.
Còn tui thì do làm developer, khi làm các software truyền dữ liệu trên mạng thì cần thiết kế các giao thức riêng cho phù hợp nên nhu cầu cần phải tìm hiểu về thiết kế của các giao thức để tham khảo, nếu không thì cũng chẳng cần quan tâm làm gì.
Chỉ nên học những gì mình có thể thay đổi được.
Comment
-
-
Originally posted by invalid-password View PostSở dĩ mọi người khó nghĩ ra tại sao TFTP vẫn tồn tại là vì mọi người chỉ nghĩ đến những vấn đề xoay quanh tính năng của nó mà không tính đến khả năng phần cứng, chi phí viết phần mềm, khả năng tích hợp, ... Rõ ràng một thiết bị không bộ nhớ (hoặc rất nhỏ) có thể lập trình để truyền TFTP tuy nhiên nếu muốn truyền FTP thì bộ nhớ nó phải lớn hơn, mà chip nhớ cho device đâu phải rẻ như RAM máy tính.
Wooh, câu này thuộc hàng khó đấy, không đơn giản đâu !!!
Tại sao FTP lại dùng đến 2 port mà không dùng 1 ?
Tại sao HTTP lại dùng 1 port mà không dùng 2 ?
Ôi tại sao ... !
don jan vi 1 port (21) cho client truy cap va lay du lieu, 1 port(21) dung de quan tri ftp
Comment
Comment