Người sử dụng chương trình là người cL nhu cầu truyền nhận file bằng giao thức _ TP Gle Transfer Protocol théng qua mang ontemet.. Ví dụ khi lẫy một fñle bằng giao thức TP sử dụng chương
Trang 1TRUYEN THONG VIET - HAN KHOA KHOA HQC MAY TINH
DO AN LAP TRINH MANG
DE TAI: XAY DUNG CHUONG TRINH TRUYEN FILE DUA
TREN GIAO THUC FTP BANG NGON NGU PYTHON
Sinh viên thực hiện : NGUYÊN QUÓC HUY- 21IT5ãã
Giảng viên hướng dẫn : THS NGUYÊN THANH CÁM
Đà nắng, ngày 15 tháng 11 năm 2023
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYEN THONG VIET - HAN
KHOA KHOA HOC MAY TINH
DO AN LAP TRINH MANG
DE TAI: XAY DUNG CHUONG TRINH TRUYEN FILE DUA TREN
GIAO THUC FTP BANG NGON NGU PYTHON
Sinh viên thực hiện - NGUYEN QUOC HUY - 211T555
Giảng viên hướng dẫn : THS NGUYÊN THANH CÁM
Đà nắng, ngày 15 tháng 11 năm 2023
Trang 3LỜI CÁM ƠN
Em xin chân thành cảm ơn các thầy cô và các bạn đã đành thời gian giúp đỡ chúng
Nguyễn Thanh Cam là người hướng dẫn cho đề tài của chủng em Là người tận tình giúp
đỡ chúng em về thông tin của đồ án môn học Nhờ vậy mà chúng em đã hoàn chỉnh được
đồ án của mình và quan trọng hơn hết là chúng em đã tiếp thu được những kinh nghiệm
trong suốt quá trình thực hiện đồ án Tuy nhiên, vì đây là lần đầu em thực hiện một dự án
cho ban than mac du da tìm tòi nghiên cứu nhưng không tránh khỏi những thiếu sLt
Dưới đây là kết quả của quá trình tìm hiểu và nghiên cứu mà em đã đạt được trong thời gian vừa qua Tuy cL nhiều cố gắng học hỏi trau dồi để nâng cao kiến thức nhưng
không thể tránh khỏi những sai sLt Do còn nhiều hạn chế về trình độ cũng như thời gian
nên đề tài này sẽ không tránh khỏi sai sLt Em rất mong nhận được sự chỉ bảo gLp ý của các thầy cô và các bạn dé giúp em hoàn thiện nL tốt hơn
Sinh viên
(ỏí và ghi rõ họ tên)
Trang 4
NHẬN XÉT
(Giảng viên hướng dẫn)
Giảng viên hướng dẫn (ỏí và ghi rõ họ tên)
Trang 52.1.2 _ Tông quan về giao thức TP -s 1t EE12112121121121211.11 1111 ru 8
2.2.1 Tiến trình Server-TP và User-TEP -+:s+2x2Ex+Exe tre 8
2.2.2 Các tiến trình phia Server c.cccccecccccccssescesessvesessesvssessesessessvsssnsevsessesevseeseeeees 9 2.2.3 Các tiến trình phía Client 5-51 tt E121 11511212 1E E1 HH ga 10
2.3 Các phương thức truyền đữ liệu 5 s2 E121 112.1 11 t2 xen II 2.3.1 Stream mod: TQ TT TS 2 HH ST TH KT ng 111k na co 11 2.3.2 Block mod: 2L TQ 11211 ST S22 KT TH 1kg 11k k khe 11 P93 on ea II
2.4 _ Các kiểu dữ liệu SE 2122112122 1211222122121E1Eererrreg 12 2.5 Quản lý kênh đữ liệu TP 5s s2 1112112211222 E12 tre 14
2.5.1 ỏết nỗi kênh đữ liệu dạng chủ động: - 5 SE tt rrrưyn 14 2.5.2 ỏết nối kênh đữ liệu dang bị động: - 5 TH He HH He Hường 15 2.5.3 Van dé vé phurong thitc két nOi: ccc ceccecccccescsscsseeseseeseseeesveveeseveveeeeseesneees 16 2.6 Cac lénh quan trọng trong TP 222111211122 12 1118115111111 1k se 18
3.1 Các trang chính của chương trìỉnh - L2 c1 212 2122211 E112 11x Hy ykg 21 3.2 _ Cấu hình chương trình + s1 E121 1 E1 1E 111 11 nhe ng 22
Trang 7Chuong1 GIỚI THIỆU
1.1 Đặt vấn đề
1.1.1 Tên đề tài
l “XÂY DỰNG CùƯƠNG TRÌNù TRUYEN òLE DỰA TRÊN GòAO TùỨC _TP BANG NGON NGU PYTaON”
1.1.2 Béi canh thuc hiện đề tài
Ngày nay cùng với sự phát triển chLng mặt của khoa học kỹ thuật, một kỷ nguyên mới được mở ra kỷ nguyên của công nghệ thông tin Nhu cầu của con người càng lớn đặc
biệt các ngành khoa học kỹ thuật khác đều cần đến sự hỗ trợ của công nghệ thông tin
Mọi người đếu cL nhu cầu truy cập internet để cung cấp cũng như lấy những thông tin cần thiết qua các máy chủ
Người sử dụng chương trình là người cL nhu cầu truyền nhận file bằng giao thức _ TP Gle Transfer Protocol) théng qua mang ontemet
Trong môi trường ònternet, khi cần truyền nhận file các file cL kích thước lớn trên vài chục öB người sử dụng thường gặp trường hợp việc truyền nhận file bị gián đoạn Ví
dụ khi lẫy một fñle bằng giao thức TP sử dụng chương trình ònternet Explorer, người sử dụng thường gặp thông báo lỗi sau vài phút download file
Để giải quyết vẫn đề này, người sử dụng thường sử dụng các chương trình chuyên dùng đề lây ñle như ReGet đề cL thê tiếp tục lây file từ vị trí xảy ra lỗi
Người sử dụng cL xu hướng lấy đồng thời nhiều file tại một server nào đL trên ònternet Như vậy chương trình phải hỗ trợ lấy nhiều ñle đồng thời Tuy nhiên không phải
lúc nào chương trình cũng cL thé lay dong thời nhiều file tại một site nếu server hạn chế
số kết nối đồng thời tới một địa chi oP
Người sử dụng cũng cL nhu cầu lấy file bằng nhiều giao thức khác nhau nhự TP (ile Transfer Protocol), UTTP (ùyperText Transfer Protocol),
Tuy nhiên trong phạm vi của luận văn này chúng em chỉ cL thê hỗ trợ được việc lấy file bằng giao thức TP
Mặt khác chương trình cũng phải tạo sự tiện lợi cho người sử dụng Chương trình phải cL giao điện đồ họa thân thiện, giúp cho người sử dụng xem được nội dung các thư mục từ xa và cục bộ Tir dL giúp cho việc upload và download dé dàng hơn Chương
Trang 8
trỉnh cũng phải hiện thực một số chức năng cơ bản của một TP clhient như tạo thư mục,
xLa thư mục, xLa file, thay đổi thư mục,
113 Mục tiểu
Mục đích của giao thức TP:
ỏhuyền khích việc dùng chung file
Giúp đỡ việc sử dụng gián tiếp(thông qua các chương trình) các máy tính từ xa Che thông tin người sử dụng khỏi những thay đối trong các hệ thông lưu trữ file giữa các máy chủ(host)
Truyền đữ liệu một cách tin cậy và hiệu quả
Mục tiêu của đề tài:
Tạo một ứng dụng TP client chạy trên bất kỳ máy nào
Ứng dụng cho phép kết nỗi với TP Server thông qua hosting, người ding cL thé upload hoặc download file từ chương trình về máy tính
Nghiên cứu tìm hiểu về giao thức TP, cách thức hoạt động, ưu nhược điểm của
giao thức này
Trang 9Chương2 CƠ SỞ LÝ THUYẾT
2.1 Tìm biểu về giao thức EFTP
2.1.1 Khải niệm giao thức FTP
_ TP (viét tắt của ile Transfer Protocol, dịch ra là "Giao thức truyền tập tin") thường được dùng để trao đôi tập tin qua mạng lưới truyền thông dùng giao thức TCP/òP
(chăng hạn như ònfernet - mạng ngoại bộ - hoặc òntranet - mạng nội bộ)
ùoạt động của TP cần cL hai máy tính, một máy chủ và một máy khách) Máy chủ TP, dùng chạy phần mềm cung cấp địch vụ TP, gọi là trình chủ, lắng nghe yêu cầu
về dịch vụ của các máy tính khác trên mạng lưới Máy khách chạy phần mềm TP đành
cho người sử dụng dịch vụ, gọi là trình khách, thì khởi đầu một liên kết với máy chủ Một
khi hai máy đã liên kết với nhau, máy khách cL thê xử lý một số thao tác về tập tin, như tải tập tin lên máy chủ, tải tập tin từ máy chủ xuống máy của mình, đôi tên của tập tin, hoặc xLa tập tin ở máy chủ v.v
Vì giao thức TP là một giao thức chuẩn công khai, cho nên bất cử một công ty phần mềm nào, hay một lập trình viên nào cũng cL thê viết trình chủ TP hoặc trình khách TP ùầu như bất cứ một nên tảng hệ điều hành máy tính nào cũng hỗ trợ giao thức TP Điều này cho phép tất cả các máy tính kết nối với một mạng lưới cL nền TCP/òP, xử lý tập tin trên một máy tính khác trên cùng một mạng lưới với mình, bất kế máy tính ấy dùng hệ điều hành nào (nêu các máy tính ấy đều cho phép sự truy cập của các máy tính khác, dùng giao thức TP) tiện nay trên thị trường cL rất nhiều các trình khách và trình chủ TP, và phần đông các trình ứng đụng này cho phép người dùng được lây tự do, không mắt tiền
Trang 10il FTP Server 1 L| FTP Server 2 FTP server 3
2.2 Mô hình hoạt động của giao thức FTP
2.2.1 Tiến trình Server-FTP và [ser-FTP
_ TP la mét giao thire dang client/server truyén thống, tuy nhiên thuật ngữ client thông thường được thay thế bằng thuật ngữ user — người dùng — do thực tế là người sử dụng mới là đối tượng trực tiếp thao tác các lệnh TP trên các máy client Bộ phần mềm
_TP được cài đặt trên một thiết bị được gọi là một tiễn trình Phần mềm TP được cài đặt
trên máy Server được gọi là tiến trình Server-TP, và phần trên máy client được gọi là tiễn trình User-TP
Trang 11Do các chức năng điều khiển và đữ liệu sử dụng các kênh khác nhau, nên mô hình
hoạt động của TP cũng chia phần mềm trên mỗi thiết bị ra làm hai thành phần logic tương ứng với mỗi kênh Thành phần Protocol ònterpreter (Pò) là thành phần quán lý kênh
điều khiến, với chức năng phát và nhận lệnh Thành phần Data Transfer Process (DTP)
cL chức năng gửi và nhận dữ liệu giữa phía client với server Ngoài ra, cung cấp cho tiền trình bên phía người dùng còn cL thêm thành phần thứ ba là giao diện người dùng TP -
User
FTP Client User-FTP Process
Client File System
thanh phan nay khéng cL 6 phia server
Do dL, cL hai tiễn trình xảy ra ở phía server, và ba tiến trình ở phía client Các tiến
\
| Control Connection
“Server-FTP Process Server Protocol Interpreter (Server-Pl)
|
: Server Data
} Transfer Process
h (Server-DTP)
trinh này được gắn với mô hình TP đề mô tả chỉ tiết hoạt động của giao thức TP
2.2.2 Các tiến trình phía Server
Các tiến trình phía server bao gồm hai giao thức:
- Server Protocol onterpreter (Server-P6): chiu trách nhiệm quản lý kênh điều khiên trên server NL lắng nghe yêu cầu kết nối hướng tới từ users trên công dành riêng
óhi kết nỗi đã được thiết lập, nL sẽ nhận lệnh từ phía User-Pò, trả lời lại, và quản
lý tiến trình truyền đữ liệu trên server
phận User-DTP Server-DTP vừa làm nhiệm thiết lập kết nối kênh đữ liệu và lắng
nghe một kết nối kênh dữ liệu từ user NL tương tác với server file trên hệ thống cục bộ đề đọc và chép file
Trang 12
2.2.3 Các tiến trình phía Client
- User Protocol ònterpreter (User-Pò): chịu trách nhiệm quản lý kênh diéu khién phía client NL khởi tạo phiên kết nối TP bằng việc phát ra yêu cầu tới phía Server-Pò
öhi kết nối đã được thiết lập, nL xử lý các lệnh nhận được trên giao diện người
dùng, gửi chúng tới Server-Pò, và nhận phản hồi trở lại NL cũng quản lý tiền trình User-DTP
- User Data Transfer Process (User-DTP): la b6 phan DTP nam ở phía người dùng, làm nhiệm vụ gửi hoặc nhận dữ liệu từ Server-DTP User-DTP cL thể thiết lập hoặc lắng nghe yêu cầu kết nối kênh dữ liệu trên server NL tương tác với thiết bị lưu trữ file phía client
- User ònterface: cung cấp giao diện xử lý cho người dùng NL cho phép sử dụng các lệnh đơn giản hướng người dùng, và cho phép người điều khiển phiên TP theo dõi được các thông tin và kết quả xảy ra trong tiến trình
2.2.4 Trình tự truy cập và ching thuc FTP
Quy luật chứng thực trong TP khá đơn giản, chỉ là cung cấp username/password Trình
tự của việc chứng thực như sau:
Bước 1: Người dùng gửi một username từ User-Pò tới Server-Pò bằng lệnh USER Sau dL password của người đùng được gửi đi bằng lệnh PASS
Bước 2: Server kiểm tra tên người dùng và password trong đatabase người dùng của nL
Nếu người dùng hợp lệ, server sẽ gửi trả một thông báo tới người dùng rằng phiên kết nối
đã được mở Nếu người dùng không hợp lệ, server yêu cầu người dùng thực hiện lại việc chứng thực Sau một số lần chứng thực sai nhất định, server sẽ ngắt kết nối
Giả sử quá trình chứng thực đã thành công, server sau đL sẽ thiết lập kết nối đề cho phép từng loại truy cập đối với người dùng được cấp quyền Một số người dùng chỉ
cL thé truy cập vào một số file nhất định, hoặc vào một số loại file nhất định Một số
server cL thê cấp quyền cho một số người dùng đọc và viết lên server, trong khi chỉ cho phép đọc đối với những người dùng khác Người quản trị mạng cL thê nhờ đL mà đáp ứng đúng các nhu cầu truy cập TP
Một khi kết nối đã được thiết lập, server cL thê thực hiện các lựa chọn tài nguyên dựa vào nhận điện người dùng
Ví dụ: trên một hệ thống nhiều người dùng, người quản trị cL thê thiết lập TP để khi cL bất cứ người dùng nào kết nối tới, người dùng sẽ tự động được đưa tới “home directory” cla chính người dùng Lệnh tùy chọn ACCTT (account) cũng cho phép người
dùng chọn một tài khoản cá nhân nào đL, nếu như người dùng cL nhiều hơn một tài khoản
Trang 132.3 Các phương thức truyền dữ liệu
2.3.1 Stream mode:
Trong phương thức này, đữ liệu được truyền đi dưới dạng các byte không cấu trúc liên tiếp Thiết bị gửi chỉ đơn thuần đây luỗng dữ liệu qua kết nối TCP tới phía nhận ỏhông cL một trường tiêu đề nhất định được sử đụng trong phương thức này làm cho nL khá khác so với nhiều giao thức gửi đữ liệu rời rạc khác Phương thức này chủ yêu dựa vào tính tin cậy trong truyền dữ liệu của TCP Do nL không cL cầu trúc dạng header, nên việc báo hiệu kết thúc ñle sẽ đơn giản được thực hiện việc phía thiết bị gửi ngắt kênh kết nối đữ liệu khi đã truyền xong
Trong số ba phương thức, stream mode là phương thức được sử dụng nhiều nhất
trong triển khai TP thực tế CL một số lý do giải thích diéu dL
- Trước hết, nL là phương thức mặc định và đơn giản nhất, do đL việc triển khai nL
là dễ đàng nhất
- Thứ hai, nL là phương thức phố biến nhất, vì nL xử lý với các ñle đều đơn thuần như là xử lý dòng byte, mà không đê ý tới nội dung của các file
- Thứ ba, nL là phương thức hiệu quả nhất vì nL không tốn một lượng byte
“overload” dé thong bao header
2.3.2 Block mode:
Đây là phương thức truyền dữ liệu mang tính quy chuẩn hơn, với việc đữ 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 này
cL một trường header 3 byte báo hiệu độ dài, và chứa thông tin về các khối đữ liệu dang
được gửi Một thuật toán đặc biệt được sử dụng đề kiểm tra các đữ liệu đã được truyền di
và đề phát hiện, khởi tạo lại đối với một phiên truyền đữ liệu đã bị ngắt
Ví dụ: nếu người dùng đang truyền đi một file qua internet với modem tuong ty, modem của người dùng thông thường sẽ thực hiện việc nén ở lớp l; các file lớn trên TP
server cũng thường được nén sẵn với một số định đạng như ZöP, làm cho việc nén tiếp tục khi truyền đỡ liệu trở nên không cần thiết
Trang 14
2.4 Các kiểu dữ liệu
Các cách biểu diễn dữ liệu được xử lý trong TP nhờ một user mô tả một kiểu
biểu diễn ỏiều này cL thê định nghĩa ngầm (như trong ASCòò hoặc EBCDòC) hay rõ ràng (như trong Local byte) một byte size để giải thích mà nL được đề cập tới như là
“logical byte size.” Lưu ý rằng đây không phải là byte size dùng cho việc truyền qua data connection, được gọi là “transfer byte size”, và không nên nhằm lẫn hai điều này Ví dụ, NVT-ASCòò cL một logical byte size dai 8-bit Néu type la Local byte, thì lệnh TYPE cL một thông số bắt buộc thứ hai mô tả logical byte size Transfer byte size luôn luôn là 8- bịt
- öiều ASCöò:
Đây là type mặc định và phải được chấp nhận bởi mọi hiện thực TP NL được
nhằm chủ yếu cho việc truyền các text file, trir khi ca hai host thay rang EBCDòC
type tién loi hon
Máy gửi (sender) chuyển đôi dữ liệu từ một cách biểu dién ky ty bên trong thành cách biều diễn NVT-ASCòò 8-bit chuẩn (xem mô tả Telnet) Máy nhận (receiver)
sẽ chuyên đữ liệu từ dạng chuân thành dạng bên trong của nL
Theo chuẩn NVT, chuỗi <CRL> nên được sử dụng khi cần ký hiệu kết thúc một
dòng văn bản (Xem phần nL¡ về file structure ở cuối phần Biểu điển và lưu trữ đữ
Type này nhằm đề truyền hiệu quả giữa các host sử dụng EBCDòC để biểu diễn ký
tự bên trong của chúng
Để truyền, dữ liệu được biêu diễn như các ký tự EBCDòC 8-bit Ma ky ty la sự khác biệt duy nhất giữa các mô tả chức năng của các type ASCòò và EBCDòC End-o£.Line (ngược lại với end-of-record — xem thảo luận về structure) cL 1é sé it được dùng với type EBCDòC nhằm các mục đích ký hiệu structure, nhưng khi cần
thiết ký tự <NL> nên được sử dụng
- ÔiềU Òmagc:
Trang 15Dữ liệu được gởi như các bít liên tục và, đề truyền, được gLi (pack) thành các byte truyền 8-bit Site nhận phải lưu đata như các bít liên tục Cấu trúc của hệ thông lưu trữ cL thê cần đến sự độn (padding) vào file (hoặc vào mỗi record, đối véi file cL cầu trúc record) đến một giới hạn phù hợp nào đL (byte, word hoặc block) Sự độn thêm vào này, phải đều là zero, và chỉ cL thể xuất hiện ở cuối file (hoặc ở cuỗi mỗi record) và phải cL một cách nhận ra các padding bit này đề cL thê bỏ chúng ra nêu file duoc lay lai Sự biến đổi padding nên được đưa ra công khai để cho phép một
user xử lý một file ở site lưu trữ
òmage type được nhằm để lưu trữ hiệu quả và lấy lại fle và để truyền đữ liệu
binary Type nay duoc dé nghị mọi hiện thực TP phải chấp nhận
được gLi (pack) một cách liên tục, bất chấp các ranh giới transfer byte va voi bat
kỳ padding nào cần thiết ở cuối
ỏh¡ đữ liệu đến host nhận, nL sẽ được biến đổi theo một cách phụ thuộc vào
logical byte size và host riêng Sự biến đôi này phải cL thê đảo ngược (tức là một file giống hệt cL thê được nhận lại nêu cùng các thông số được sử dụng) và nên được công khai rộng rãi bởi các nhà hiện thực TP (TP mplementor)
Ví dụ, một user gởi các s6 dau cham dong 36-bit đến một host cL word 32-bit cL
thê gởi đữ liệu đL nhu Local byte voi mét logical byte size 1a 36 ost nhận sẽ được chờ đợi lưu trữ cac logical byte dé chung cL thé dé dang duge xt ly; trong vi
dụ này chỉ cần đặt cac 36-bit logical byte nay vao cac 64-bit double word
Mét vi du khac, hai host cL mét 36-bit word size cL thé gởi dữ liệu cho nhau theo các word nhờ sử dụng TYPE L 36 Dữ liệu sẽ được gởi theo các §-bif transmission
byte duoc gLi dé 9 transmission byte chứa hai host word