Đ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 có 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
Trang 1TRUYEN THONG VIET - HAN KHOA KHOA HQC MAY TINH
VU
ĐỎ ÁN LẬP TRÌNH MẠNG
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
Lớp :21SE2
Giảng viên hướng dẫn : THS NGUYÊN THANH CÁM
Đà Nẵng, ngày 12 tháng ] năm 2024
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYEN THONG VIET - HAN
KHOA KHOA HOC MAY TINH
VU
ĐỎ ÁN LẬP TRÌNH MẠNG
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
Lớp :21SE2
Giảng viên hướng dẫn : THS NGUYÊN THANH CÁM
Đà Nẵng, ngày 12 tháng ] năm 2024
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
em trong quá trình thực hiện đồ án này Đặc biệt, em xim chân thành cảm ơn thầy
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 bản thân mặc dù đã tìm tG¡ nghiên cứu nhưng không tránh khỏi những thiếu sót
ướ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 có 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 sót, o 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 sót Em rất mong nhận được sự chỉ bảo góp ý của các thây cô và các bạn dé giúp em hoàn thiện nó tốt hơn
Trang 4Đồ án lập trình mạng
NHẬN XÉT
(Giảng viên hướng dẫn)
Giảng viên hướng dẫn (Kí và ghi rõ họ tên)
Trang 5MỤC LỤC
II ~.'.ö: na 6
2.1 Tìm hiểu về giao thức ùTP 5 SE HE H115 1 E1 tr ryg 7
2.1.1 Khái niệm giao thức ùTP T1 c1 1112112111111 1811201118111 ke 7
2.1.2 _ Tông quan về giao thức ùTP - 5c sctT xEE121211 21212211 12111 rờg 8
2.2 Mô hình hoạt động của giao thức ùÏTP c1 11221122211 1122222 211 re 8
2.2.2 Các tiến trình phía SeTVe s SE 1 E112 121101 2111 tre 9
2.2.3 Các tiến trình phía Client 5-51 tt E121 11511212 1E E1 HH ga 10
2.2.4 Trinh tự truy cập và chứng thực ùÏTP L1 2112 v1 nen He 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 Sftreammod:, -L T n1 1S 1H11 1 1111111111111 1111111111811 1E ng ru II 2.3.2 Block mod: L2 2212 v11 11 11111511 11t 511k II P93 on ea II
2.5 _ Quản lý kênh dữ liệu ùTP - ó2 212211212 11211 1111151171 12121 1211118115111 xe 14
2.5.1 Kết nối kênh dữ liệu đạng chủ động: 2 1 2212222122222 ớy 14
2.5.2 _ Kết nối kênh đữ liệu dạng bị động: - 5 SE HH ngưng 15
2.5.3 Vấn đề về phương thức kết nỒi: s- 5s 1S ềE E112 18122121 8 mg l6 2.6 _ Các lệnh quan trọng trong ÙTTP - c2: 112 121125115 1111111511511 1 8 1x re 17
3.1.1 Yêu cầu chức năng 5s t2 E111 11 121111 2211 HH tuệ 20
Trang 6Đồ án lập trình mạng
3.1.2 _ Yêu cầu phi chức năng 55 ST T1 HH He 20
3.2 _ Xác định ca sử dụng 2 2 1n H122 HH T11 11H11 key 20 Đặc tả ca sử dỤụng L2 LH n n2 nàn HH HH kx HH KH HH KH key 21
3.3 Biéu do trong hop str dung cececcccesceccssesessesscsvesesesessvsvsesevsvsvsrsevseseseveceeees 22
3.3.1 Biéu d6 hoat dO gi ceccccceccsccsvecessesvssesecsssesessessesessvsecevssesevevsvsesetecevsseeees 22
4.1 Các trang chính của chương trình 2c 22 2221212111111 221111121211 Hgyhưey 27
4.2 _ Cấu hình chương trình 5c SE 11 2121111111121 1 111 111 En tre 29
4.3 ùorm Upload ẨiÏe: L1 202221111211 1211 1211112115111 1115511111111 11H key 30
4.4 — ùorm ownload fiÌe - c c ST S ng 11101111 tk S1 0551k ky 32 2:' m1 TT 33
ĐỒ ÁN LẬP TRÌNứ MẠNG Trang 4
Trang 7Chuong1 GIỚI THIỆU
1.1 Đặt vấn đề
1.1.1 Tên đề tài
“XÂY ỰNG CứƯƠNG TRÌNứ TRUYÊN ùỏLE UA TRÊN GỏAO TứỨC ùTP BANG NGON NGU PYTứON”
1.1.2 Béi canh thuc hiện đề tài
Ngày nay cùng với sự phát triển chóng 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 có 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 có nhu câu truyền nhận file bằng giao thức uTP (tile Transfer Protocol) théng qua mang ontemet
Trong môi trường ỏnternet, khi cần truyền nhận file các ñle có kích thước lớn trên vài chục KB 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 đề có thê tiếp tục lây file từ vị trí xảy ra lỗi
Người sử dụng có xu hướng lấy đồng thời nhiều file tại một server nào đó 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 có thê lấy đồng 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 có nhu cầu lấy fñle bằng nhiều giao thức khác nhau như ùTP (ùie Transfer Protocol), ứ TP (úyperText Transfer Protocol),
Tuy nhiên trong phạm vi của luận văn này chúng em chí có 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 có 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ộ Từ đó giúp cho việc upload và download dé dang hon Chương
Trang 8Đồ án lập trình mạng
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 client như tạo thư mục,
xóa thư mục, xóa file, thay đổi thư mục,
113 Mục tiểu
Mục đích của giao thức uTP:
Khuyến khích việc dùng chung Ññle
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 dùng có 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 ùie Transfer Profocol, 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 có hai máy tính, một máy chủ và một máy khách) Máy chủ ùTP, đù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ề đị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 có 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 xóa 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 có 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 có 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 có rất nhiều các trình khách và trình chủ ùTP, và phần đông các trình ứng dụng này cho phép người dùng được lây tự do, không mắt tiền
Trang 102.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 là một giao thức dạng 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 11FTP Client
User-FTP Process
FTP Server Server-FTP Process
Control Connection
User Data ve an my, Server Data ansfer Process | Data Connection Transfer Process (User-DTP) Ne “| (Server-DTP)
User Protocol Interpreter (User-Pl) ì
Client Server File System File System
Hinh 2 Tién trinh Client — Server
0 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 Thanh phan 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 ata Transfer Process (TP)
có 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 cGn có thêm thành phân thứ ba là giao diện người dùng ùTP - thành phần này không có ở phía server
o đó, có hai tiễn trình xảy ra ở phía server, và ba tiến trình ở phía client Cac tiễn
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 Nó 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 Khi kết nối đã được thiết lập, nó 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 dữ liệu trên server
-_ Server atalransfer Process (Server-TP): làm nhiệm vụ gửi hoặc nhận file từ bộ phận User-TP Server-TP 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 đữ liệu từ user Nó tương tác với server file trên hệ thống cục bộ đề đọc và chép file
Trang 12Đồ án lập trình mạng
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 điều khiền phía client Nó 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ỏ
Khi kết nối đã được thiết lập, nó 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 Nó cũng quản lý tiến trình
User-TP
- User ata Transfer Process (User-TP): la b6 phan TP nam ở phía người dùng, làm nhiệm vụ gửi hoặc nhận dữ liệu từ Server-TP User-TP có 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 Nó 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 Nó 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 đó 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 database người dùng của nó 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 đó 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ỉ
có 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 có 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 có thê nhờ đó mà dap ứng đúng các nhu cầu truy cập ùTP
Một khi kết nối đã được thiết lập, server có 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ị có thê thiết lập ùTP đề khi có 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 đó nêu như người dùng có 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
Không có một trường tiêu đề nhất định được sử dụng trong phương thức này làm cho nó 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, o nó không có 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ế Có một số lý do giải thích điều đó
- _ Trước hết, nó là phương thức mặc định và đơn giản nhất, do đó việc triển khai nó
là dễ đàng nhất
- _ Thứ hai, nó là phương thức phố biến nhất, vì nó xử lý với các file đều đơn thuần như là xử lý dGng byte, mà không đê ý tới nội dung của các file
- Thứ ba, nó là phương thức hiệu quả nhất vì nó không tốn một lượng byte
“overload” dé thong bao header
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Đồ án lập trình mạng
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 Kiểu này có thê định nghĩa ngầm (như trong ASCỏỏ hoặc EBCỏC) hay rõ ràng (như trong Local byte) một byte size để giải thích mà nó đượ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-ASC66 co mét logical byte size dai 8-bit Néu type la Local byte, thì lệnh TYPE co 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
- Kiể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 Nó được
nhằm chủ yếu cho việc truyền các text file, trừ khi cả hai host thấy rằng EBCỏC
type tiện lợi hơn
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 cach biéu dién NVT-ASC66 8-bit chuan (xem m6 ta Telnet) May nhan (receiver)
sé chuyén dir liéu tir dang chuan thành dạng bên trong của nó
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
dGng van ban (Xem phan noi vé file structure ở cuối phần Biểu điển và lưu trữ đữ
Type nay nhằm đề truyền hiệu quả giữa các host sử dụng EBCOC dé 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 ky tw EBCOC 8-bit Ma ky ty la sw
khác biệt duy nhất giữa các mô tả chức năng của các type ASCỏỏ và EBCóC End-oÊ.Line (ngược lại với end-of-record — xem thảo luận về structure) có lẽ sẽ ít được dùng với type EBCó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
- Kiêu ỏmage:
Trang 15ữ liệu được gởi như các bit liên tục và, để truyền, được gói (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ữ có thê cần đến sự độn (padding) vào file (hoặc vào mỗi record, đối với file có cầu trúc record) đến một giới hạn phù hợp nào đó (byte, word hoặc block) Sự độn thêm vào này, phải đều là zero, và chí có thể xuất hiện ở cuối file (hoặc ở cuỗi mỗi record) và phải có một cách nhận ra các padding bít này đề có 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 này được đề nghị mọi hiện thực ùTP phải chấp nhận
được gói (pack) một cách liên tục, bất chấp các ranh giới transfer byte và với bất
kỳ padding nào cần thiết ở cuối
Khi dữ liệu đến host nhận, nó 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 có thê đảo ngược (tức là một file giống hệt có 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 implementor)
Ví dụ, một user gởi các s6 dau cham dong 36-bit đến một host có word 32-bit có
thê gởi đữ liệu đó như Local byte với một logical byte size là 36 ứost nhận sẽ được chờ đợi lưu trữ các logical byte đề chúng có thê để dàng được xử lý: trong ví
dụ này chỉ cần đặt cac 36-bit logical byte nay vao cac 64-bit double word Một ví dụ khác, hai host c6 mét 36-bit word size co thé gởi đữ liệu cho nhau theo
các word nho str dung TYPE L 36, ữ liệu sẽ được gởi theo các §-bif transmission
byte được gói đề 9 transmission byte chứa hai host word
Trang 16Đồ án lập trình mạng
Mét character file cd thé duoc truyén đến một host vì một trong ba mục đích: dé
¡m, để lưu trữ và sau đó lấy lại, hoặc để xử lý Nếu một ñle được gởi dé in, host
nhận phải biết cách vertical format control được biêu diễn Trong trường hợp thứ
hai, phải có thể lưu trữ một file ở một host và sau đó nhận lại nó chính xác ở cùng đạng Cuối cùng, nên có thé chuyén một file từ một host này đến một host khác và
xu ly file ở host thứ hai mà không có vấn đề gì Một format ASCỏỏ hoặc EBCỏC
đơn lẻ thì không thỏa mãn tất cả những điều kiện này, o đó những type này có một thông số thứ hai mô tả một trong ba format sau đây: Non prit, telnet format controls, carriage control (ASA)
2.5 Quán lý kênh dữ liệu FTP
2.5.1 Kết nối kênh dữ liệu dạng chủ động:
Phương thức đầu tiên đôi khi cGn được gọi là kết nối kênh đữ liệu dạng thông thường (vì nó là phương pháp mặc định) và đôi khi được gọi là kết nối đạng chủ động (để
đôi chiều với dạng kết nối bị động mà ta sẽ xét ở phần sau) Trong dạng kết nối này, phía
Server- TP khởi tạo kênh dữ liệu bằng việc mở một công TCP cho phía User-TP Phía
server sử dụng công được dành riêng, là công 20 cho kênh dữ liệu Trên máy client, một
gia tri công được chọn theo mặc định chính là công được sử dụng đối với kênh điều
khiến, tuy nhiên phía client sẽ luôn chọn hai công riêng biệt cho hai kênh này
Giả sử phía User-Pỏ thiết lập một kết nối điều khiển từ công bất kỳ của nó là 1678
toi công điều khiến trên server là công 21 Khi đó, để tạo một kênh dữ liệu cho việc
truyền dữ liệu, phía Server-Pỏ sẽ báo cho phía Server-TP khởi tạo một kênh kết nối TCP từ cổng 20 tới công 1678 của phía client Sau khi phía client chấp nhận kênh được
khởi tạo, dữ liệu sẽ được truyền di
Thực tế, việc sử dụng cùng một công cho cả kênh dữ liệu và kênh điều khiển không phải là một ý hay, nó làm cho hoạt động của ùTP trở nên phức tạp o đó, phía
client nên chỉ định sử dụng một công khác bằng việc sử dụng lệnh PORT trước khi truyền đữ liệu
Ví dụ: Giả sử phía client chỉ định công 1742 với lệnh PORT Phia Server-TP sau
đó sẽ tạo ra một kết nối từ cổng 20 của nó tới công 1742 phía client thay vì cổng 1678 như mặc định Quá trình này được mô tả trong hình dưới đây
Trang 17———
(Send/Receive Data) (Send/Receive Data)
Hình 3 Kết noi dạng chủ động
Thông thường, đối với kênh đữ liệu ùTP, phía server sẽ khởi tạo việc truyền đữ liệu bằng
cách mở kết nối đữ liệu tới client
Trong trường hợp trên, phía client trước tiên sẽ đưa ra lệnh PORT để yêu cầu server sử dụng công 1742 Sau đó, server sẽ mở kết nối kênh đữ liệu từ công 20 mặc định của nó tới công 1742 phía client, ữ liệu sau đó sẽ được truyền giữa các thiết bị qua các cổng nảy
2.5.2 Kết nối kênh dữ liệu dạng bị động:
Phương pháp kê tiếp được gọi là kết nói đữ liệu đạng bị động Phía client sẽ nhận
server là phía bị động, làm nhiệm vụ chấp nhận một yêu cầu kết nối kênh dữ liệu được khởi tạo từ phía client Server trả lời lại phía client với địa chỉ óP cũng như địa chỉ công
mà nó sẽ sử dụng Phía Server-TP sau đó sẽ lắng nghe một kết nối TCP từ phía User- -_ TP trên cổng này
Mặc định, phía client sử đụng cùng một cổng đối với cả hai kênh điều khiển và dữ liệu như trong trường hợp kết nối chủ động ở trên Tuy nhiên, ở đây, một lần nữa phía
client có thể chọn sử dụng một giá trị công khác cho kênh đữ liệu
Ta sẽ xét lại ví dụ ở trên một lần nữa, với công điều khiển phia client la 1678 to công 21 phía server Nhưng lần này truyền dữ liệu theo phương thức kết nối bị động, như
mô tả trong hình dưới đây:
Trang 18— 2
lá ——] L To Use Port 2223 Data Connection Data Capnection (Port 1742) (Pạr223)
9 Open Data Connection 'o Server Port 2223 —-
4 Acknowledge Data Connection
(Send/Receive Data) (Send/Receive Data)
Hình 4 Kết nổi dang bj động
Phia client sẽ sử dụng lệnh PASV đề yêu cầu server rằng nó muốn dùng phương
thức điều khiển dữ liệu bị động Phía Server-Pỏ sẽ trả lời lại phía client với một giá trị
công mà client sẽ sử dụng, từ cổng 2223 trên nó Sau đó phía Server Pỏ sẽ hướng cho phía Server-TP lắng nghe trên công 2223 Phía User-Pỏ cũng sẽ hướng cho phía User- -_TP tạo một phiên kết nối từ công 1742 phía client tới công 2223 phía server Sau khi
Server chap nhận kết nối này, dữ liệu bắt đầu được truyền di
2.5.3 Vấn đề về phương thức kết nỗi:
Vấn đề phía nào là phía khởi tạo kết nỗi kênh dữ liệu đưa ra một câu hỏi: sự khác
nhau giữa hai phương thức là gì? Điều này cũng giống như việc hỏi ai đã thực hiện một
cuộc điện thoại nội bộ Câu trả lời là sự bảo mật Việc ùTP sử dụng nhiều hơn một kết
nối TCP có thê giải quyết các vấn đề về phần mềm cũng như về phần cứng mà người
dùng cần phải có dé dam bảo sự an toàn cho hệ thống của họ
Khi xem xét việc gì sẽ xảy ra trong trường hợp kênh dữ liệu chủ động như trong ví dụ phía trên:
Đối với phía client, có một kênh kết nối điều khiển được thiết lập từ công 1678 client tới công 21 server Nhưng kênh đữ liệu lại được khởi tạo từ phía server, o đó,
client sẽ nhận được một yêu cầu kết nối tới công 1678 (hoặc công nào khác) Một số
client sẽ nghĩ ngờ về việc nhận được những kết nối tới như vậy, vì trong tình huống
thông thường, client mdi là phía khởi tạo kết nối chứ không phải đáp trả kết nối, o các kênh kết nối TCP hướng tới có thê mang theo những mối đe dọa nhất định, một số client
có thể sẽ ngăn chặn các luỗng kết nỗi hướng tới bằng việc sử đụng tường lửa
Tại sao người ta lại không làm cho phía client luôn chấp nhận kết nối từ một chỉ số
port được dùng trong kênh điều khiển? Vẫn đề ở đây là vì client thường dùng các công
Trang 19khác nhau cho mỗi phiên kết nỗi bằng việc sử dụng câu lệnh PORT Và tại sao điều này
lại được thực hiện? Vì theo luật TCP: sau khi một kết nối được đóng lại , có một khoảng thời gian trống trước khi cổng đó có thể được sử dụng lại — điều này đề ngăn ngừa tình trạng các phiên kết nối liên tiếp bị lẫn với nhau Điều này sẽ tạo ra độ trễ khi gửi nhiều file — do đó phía client thường dùng các giá trị công khác nhau cho mỗi kết nối Điều này rất hiệu quả nhưng cũng dẫn tới việc firewall cua client sé hdi có chấp nhận phiên kết nối tới với nhiều giá trị công không ồn định hay không
Việc dùng kết nối kiểu kênh gián tiếp sẽ giảm thiểu vẫn đề này một cách hiệu quả Phân lớn các tường lửa có nhiều vấn đề liên quan tới kết nối hướng về với các giá trị công bát kỳ, hơn là gặp vẫn đề với các kết nối hướng đi Ta có thể xem chỉ tiết hơn về vấn đề này trong chuân RùC 1579 Chuẩn này khuyến nghị rằng phía client nén str dụng
kết nối kiều bị động làm dạng mặc định thay vì sử dụng kiểu kết nối đạng chủ động cùng
với lệnh PORT, đề ngăn chặn tình trạng block theo công
Tắt nhiên, phương thức kết nối kiểu bị động không hoàn toàn giải quyết được vấn
đề, chúng chỉ đây vấn đề về phía server mà thôi Phía server, giờ đây phải đối mặt với việc có nhiều kênh kết nối hướng về trên hàng loạt các cổng khác nhau Tuy nhiên việc
xử lý các vấn đề bảo mật trên một nhóm nhỏ server vẫn đễ hơn nhiều so với việc phải đối
mặt với một lượng lớn các vấn đề từ nhiều client ùTP server phải được cấu hình chấp nhận phương thức truyền bị động từ client, do đó cách thông thường để thiết lập trên server là thiết lập chấp nhận một số công kết nối hướng về trên server trong khi vẫn khóa các yêu cầu kết nổi hướng về trên các công khác