BÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Đề tài Phần lập trình mạng: Tìm hiểu giao thức FTP và xây dựng chương trình FTP Server Phần hệ điều hành Xây dựng FTP Đa luồngBÁO CÁO ĐỒ ÁN CƠ SỞ NGÀNH MẠNG Đề tài Phần lập trình mạng: Tìm hiểu giao thức FTP và xây dựng chương trình FTP Server Phần hệ điều hành Xây dựng FTP Đa luồng
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Trang 2Mục lục
PHẦN 1: LẬP TRÌNH MẠNG 4
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
I Bối cảnh 4
II Mục tiêu 5
III Giới thiệu về giao thức FTP 5
IV Giao thức TCP 6
V Mô hình hoạt động của chương trình FTP 7
VI Kênh dữ liệu: 9
1 Kết nối kênh dữ liệu dạng chủ động - Active FTP 9
2 Kết nối kênh dữ liệu dạng bị dộng - Passive FTP 10
VII Kiểu dữ liệu: 11
VIII Các phương thức truyền dữ liệu trong FTP 12
1 Stream mode 12
2 Block mode 12
3 Compressed mode 13
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 14
I Trình tự truy cập và chứng thực FTP 14
II Các lệnh dùng trong chương trình: 14
III Các mã thông điệp hồi đáp trong chương trình: 15
IV Môi trường cài đặt 16
CHƯƠNG 3: TRIỂN KHAI VÀ ĐÁNH GIÁ 17
I Demo chương trình: 17
1 Demo chương trình kênh dữ liệu bị động 17
2 Demo chương trình kênh dữ liệu chủ động 20
II Kết luận và hướng phát triển 22
1 Ưu điểm: 22
2 Nhược điểm: 22
PHẦN II: HỆ ĐIỀU HÀNH 23
TIÊU ĐỀ: XÂY DỰNG CHƯƠNG TRÌNH FTP ĐA LUỒNG 23
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 23
Trang 3I Giới thiệu về luồng (Thread) 23
II Lập trình đa luồng trong Java 23
1 Tạo và quản lý luồng 23
2 Trạng thái và các phương thức của Thread 24
3 Quyền ưu tiên của các luồng 26
4 Đồng bộ hóa đa luồng 26
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 27
I Yêu cầu bài toán: 27
II Phân tích: 27
III Môi trường phát triển 27
CHƯƠNG 3 TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 28
I Demo chương trình 28
II Đánh giá kết quả chương trình 28
KẾT LUẬN CHUNG 29
TÀI LIỆU THAM KHẢO 29
MỤC LỤC HÌNH Hình 1: Giao thức FTP 5
Hình 2: Cơ chế hoạt động của FTP 6
Hình 3: Giao thức TCP 7
Hình 4: Mô hình hoạt động của giao thức FTP 8
Hình 5: Kết nối dữ liệu dạng chủ động 10
Hình 6: Kết nối kênh dữ liệu dạng bị động 11
Hình 7: Server mở cổng 21 để lắng nghe Client 17
Hình 8: Client kết nối tới server 17
Hình 9: Server nhận kết nối đến từ Client 17
Hình 10: Client đăng nhập và gửi lệnh kênh dữ liệu bị động 18
Hình 11:Server nhận lệnh kênh dữ liệu bị động từ client gửi qua 18
Hình 12: Client chọn kiểu dữ liệu Binary và gửi file Test.zip lên server 19
Hình 13: Server đọc file từ client dưới dạng Binary 19
Hình 14: Sau khi nhận file Test.zip thành công từ Client 20
Trang 4Hình 15: Client đăng nhập và gửi số cổng muốn kết nối cho server 20
Hình 16: Server nhận cổng từ client gửi qua và xác nhận kênh dữ liệu Chủ động 21
Hình 17: Client gửi lệnh RETR tải file AMD.exe từ server và đóng kết nối sau khi nhận thành công 21
Hình 18: Server nhận lệnh RETR từ client gửi qua và gửi file AMD.exe cho client 21
Hình 19: Client đã nhận thành công file AMD.exe từ server gửi qua 22
Hình 20: Vòng đời của Thread 23
Hình 21: Server nhận 2 kết nối từ 2 client khác nhau 28
Hình 22: Server nhận 2 lệnh tải file AMD.exe từ 2 client 28
Trang 5Với những lý do trên em xin chọn đề tài “Tìm hiểu giao thức FTP Xây dựngchương trình my_ftp_server”.
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ứcFTP (File Transfer Protocol) thông qua mạng Internet
Trong môi trường Internet, khi cần truyền nhận file các file có kích thước lớn trênvà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 file bằng giao thức FTP sử dụng chương trình Internet 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êndùng để lấy file 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ênInternet Như vậy chương trình phải hỗ trợ lấy nhiều file đồng thời Tuy nhiên khôngphả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 serverhạn chế số kết nối đồng thời tới một địa chỉ IP
Người sử dụng cũng có nhu cầu lấy file bằng nhiều giao thức khác nhau như FTP(File Transfer Protocol), HTTP (HyperText Transfer Protocol), … Tuy nhiên trongphạ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ứcFTP
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ìnhphải có giao diện đồ họa thân thiện, giúp cho người sử dụng xem được nội dung cácthư mục từ xa và cục bộ Từ đó giúp cho việc upload và download dễ dàng hơn
Trang 6II Mục tiêu
Mục tiêu của FTP:
Khuyến khích việc chia sẻ 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ữ filegiữa các máy chủ (host)
Truyền dữ 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 FTP chạy trên bất kỳ máy nào
Nghiên cứu tìm hiểu về họ giao thức TCP/IP, cách thức hoạt động, ưu nhược điểmcủa giao thức này
Nghiên cứu về ngôn ngữ lập trình Java
III Giới thiệu về giao thức FTP
FTP (viết tắt cùa File 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/IP
Hình 1: Giao thức FTP
Hoạt động của FTP cần có ít nhất hai máy tính, một máy chủ (server) và một máykhách (Client) Máy chủ FTP, dùng chạy phần mềm cung cấp dịch vụ FTP, gọi là trìnhchủ, 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
Trang 7chạy phần mềm FTP dành cho người sử dụng dịch vụ, gọi là trình khách, khởi đầu mộtliê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 lập tin lên máy chủ, tải tập tin từ máy chủ xuống máycủa mình, đổi tên của tập tin hoặc xóa tập tin ở máy chủ v.v.
FTP thường chạy trên hai cổng 20 vả 21, và chỉ chạy riêng trên nền của TCP Trìnhchủ FTP lắng nghe các yêu cầu dịch vụ từ những kết nối vào máy của các trình kháchFTP, trên cổng 21 Đường kết nối trên cổng 21 này tạo nên một dòng truyền điềukhiển, cho phép các dòng lệnh được chuyền qua trình chủ FTP Để truyền tải tập tinqua lại giữa hai máy, chúng ta cần phải có một kết nối khác Tùy thuộc vào chế độtruyền tải được sử dụng, trình khách (ở chế độ chủ động - active mode) hoặc trình chủ(ở chế độ bị động - passive mode) đều có thể lắng nghe yêu cầu kết nối đến từ đầu kiacủa mình Trong trường hợp kết nối ở chế độ chủ dộng, (trình chủ kết nối với trìnhkhách để truyền tải dữ liệu), trình chủ trước tiên phải kết nối vào cổng 20, trước khiliên lạc và kết nối với trình khách
Hình 2: Cơ chế hoạt động của FTP
IV Giao thức TCP
TCP là giao thức điều khiển truyền vận (Transmission Control Protocol) thuộc giaothức cốt lõi của bộ giao thức TCP/IP Thông qua TCP, các ứng dụng trên các máy chủđược nối mạng có thể liên lạc với nhau, qua đó chúng có thể trao đổi giữ liệu hoặc cácgói tin Giao thức này đảm bảo chuyển giao dữ liệu tới nhận một cách đáng tin cậy vàđúng thứ tự Hơn nữa, TCP có chức năng phân biệt giữa dữ liệu của nhiều ứng dụng(như dịch vụ Web và dịch vụ Email) đồng thời chạy trên cùng một máy chủ
TCP là giao thức hướng kết nối (connection-oriented), có nghĩa là buộc phải thiết lậpkết nối trước sau đó mới đến tiến trình truyền dữ liệu
Cung cấp cơ chế đánh số thứ tự gói tin (sequencing): sử dụng để ráp các gói tin chínhxác ở điểm nhận, loại bỏ gói tin trùng lặp
Trang 8 TCP có khả năng truyền và nhận dữ liệu cùng một lúc — song công (full-duplex).
Cơ chế báo nhận (Acknowledgement): tức là khi A gửi gói tin cho B, nếu B nhậnđược thì sẽ gửi thông báo cho A, trường hợp A không nhận được thông báo thì sẽ gửilại gói tin tới khi nào B báo nhận thì thôi
Tính năng phục hồi dữ liệu bị mất trên đường truyền
Hình 3: Giao thức TCP
V Mô hình hoạt động của chương trình FTP
FTP là một giao thức dạng client/server truyền thống, tuy nhiên thuật ngữ clientthô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 FTP trên các máy client Bộ phầnmềm FTP đượ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 FTPđược cài đặt trên máy Server được gọi là tiến trình Server-FTP, và phần trên máy clientđược gọi là tiến trình User-FTP
Do các chức năng điều khiển và dữ liệu sử dụng các kênh khác nhau, nên mô hìnhhoạt động của FTP cũng chia phần mềm trên mỗi thiết bị ra làm hai thành phần logictương ứng với mỗi kênh Thành phần Protocol Interpreter (PI) 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) 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ấpcho tiến trình bên phía người dùng còn có thêm thành phần thứ ba là giao diện ngườidùng FTP - thành phần này không có ở phía server
Do đó, có hai tiến trình xảy ra ở phía server, và ba tiến trình ở phía client Các tiếntrình này được gắn với mô hình FTP để mô tả chi tiết hoạt động của giao thức FTP
Trang 9Hình 4: Mô hình hoạt động của giao thức FTP
Các tiến trình bên phía Client
-User Interface: đây là chương trình được chạy trên máy tính, nó 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 FTP theo dõi được các thông tin và kết quả xảy ratrong tiến trình
-User Protocol Interpreter (User-PI): chịu trách nhiệm quản lý kênh điều khiển phíaClient Nó khởi tạo phiên kết nối FTP bằng việc phát ra yêu cầu tới phía Server- PI.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-PI, và nhận phản hồi trở lại Nó cũng quản lý tiến trình User DTP.-User Data Transfer Process (User-DTP): là bộ phận DTP nằm ở 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 có thể thiết lập hoặclắ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ữ filephía Client
Các tiến trình bên phía Server
-Server Protocol Interpreter (Server-PI): chịu trách nhiệm quản lý kênh điều khiểntrê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 Khikết nối đã được thiết lập, nó sẽ nhận lệnh từ phía User-PI, trả lời lại, và quản lý tiếntrình truyền dữ liệu trên server
-Server DataTransfer Process (Server-DTP): làm nhiệm vụ gữi hoặc nhận file từ bộphận User-DTP Server-DTP vừa làm nhiệm thiết lập kết nối kênh dữ liệu và lắng nghe
Trang 10một kết nối kênh dữ 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.
Trong thời gian một phiên làm việc FTP sẽ có hai kết nối mạng riêng biệt, một giữacác PI và một giữa các DTP Kết nối giữa các PI được gọi là kết nối điều khiển (controlconnection) Kết nối giữa các DTP được gọi là kết nối dữ liệu (data connection) Cáckết nối điều khiển và dữ liệu thường sử dụng giao thức TCP
Thường thì FTP server lắng nghe trên port thông dụng là port 21 cho những yêu cầukết nối điều khiển Việc lựa chọn port cho kết nối dữ liệu phụ thuộc vào những lệnhđược phát đi trên kênh điều khiển Theo quy ước, phía client gửi một thông báo điềukhiển chỉ cho biết số port tại đó phía client đã chuẩn bị sẵn để nhận một yêu cầu kết nối
dữ liệu vào
Việc sử dụng những kết nối riêng biệt cho điều khiển và dữ liệu có lợi là hai kết nối
có thể lựa chọn những chất lượng dịch vụ khác nhau như: khoảng trì hoãn tối thiểu chokết nối điều khiển và cực đại cho kết nối dữ liệu, nó cũng tránh những vấn đề của việccung cấp các mã thoát
VI Kênh dữ liệu:
Mỗi khi cần phải truyền dữ liệu giữa server và Client, một kênh dữ liệu cần phảiđược tạo ra Kênh dữ liệu kết nối bộ phận User-DTP với Server-DTP Kết nối này cầnthiết cho cả hoạt động truyền file trực tiếp (gửi hoặc nhận một file) cũng như đối vớiviệc truyền dữ liệu ngầm, như là yêu cầu một danh sách file trong thư mục nào đó trênserver
Chuẩn FTP chì định hai phương thức khác nhau để tạo ra kênh dữ liệu Khác biệtchính cua hai phương thức đó là ở mặt thiết bị: phía Client hay phía server là phía đãđưa ra yêu cầu khởi tạo kết nối Điều này nghe qua có vẻ khá đơn giàn, nhưng khôngthực nó lại khá quan trọng
1 Kết nối kênh dữ liệu dạng chủ động - Active FTP.
Trong dạng kết nối này, phía Server-DTP khởi tạo kênh dữ liệu bằng việc mở mộtcổng TCP cho phía User-DTP Phía server sử dụng cổng được dành riêng, là cổng 20cho kênh dữ liệu Trên máy Client, một giá trị 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 haicổng riêng biệt cho hai kênh này
Giả sử phía User-PI 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
Trang 11tới 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ệctruyền dữ liệu, phía Server-PI sẽ báo cho phía Server-DTP khởi tạo một kênh kết nốiTCP 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 đi.
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ôngphải là một ý hay, nó làm cho hoạt động của FTP trở nên phức tạp Do đó, phía Clientnê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 dữliệu
Ví dụ: giả sử phía Client chỉ định cổng 1742 với lệnh PORT Phía Server-DTP 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 1678như mặc định Ọuá trình này được mô tả trong hình dưới đây:
Hình 5: Kết nối dữ liệu dạng chủ động
2 Kết nối kênh dữ liệu dạng bị dộng - Passive FTP
Trong kết nối bị động, Client sẽ nhận server là bên bị động, làm nhiệm vụ chấp nhậnmộ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íaClient với địa chỉ IP cũng như địa chỉ cổng mà nó sẽ sử dụng Phía Server-DTP sau đó
sẽ lắng nghe một kết nối TCP từ phía User-DTP trên cổng này
Mặc định, phía Client sử dụng cùng một cổng đối với cả hai kênh, điều khiển và dữ
Trang 12liệ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íaClient có thể chọn sử dụng một giá trị cổng khác cho kênh dữ 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 phía Client là 1678 tới 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ìnhdưới đây:
Phía Client sẽ sử dụng lệnh PASV để yêu cầu server rằng nó muốn dùng phươngthức điều khiển dữ liệu bị động Phía Server-PI 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 PI sẽ hướng chophía Server-DTP lắng nghe trên cổng 2223 Phía User-PI cùng sẽ hướng cho phíaUser-DTP 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 chấp nhận kết nối này, dữ liệu bằt đằu được truyền đi
VII Kiểu dữ liệu:
Có bốn kiểu dữ liệu khác nhau được quy định trong chuẩn của FTP:
+ASCII: Định nghĩa một file văn bản ASCII, với dòng được đánh dấu bởi một sốloại dòng đánh dấu kết thúc như mô tả ở trên
+EBCDIC: Khái niệm tương tự như loại ASCII, nhưng đối với tập tin bằng cách sửdụng kí tự EBCDIC của IBM đặt
FTP Client FTP Server
Hình 6: Kết nối kênh dữ liệu dạng bị động.
Trang 13+Image: Các tập tin đã không có cấu trúc nội bộ chính thức và được gửi một byte tạimột thời điểm mà không có bất kỳ xử lý; đây là chế độ "hộp đen" đã đã đề cập ở trên.+Local: Kiểu dữ liệu này được sử dụng để xử lý các tập tin có thể lưu trữ dữ liệutrong byte logic có chứa một số bit khác 8 Cách xác định loại này cùng với cách dữliệu có cấu trúc cho phép dữ liệu được lưu trữ trên hệ thống đích một cách phù hợp vớiđại diện địa phương của nó.
Trong thực tế, hai loại kiểu dữ liệu thường xuyên nhất được sử dụng là ASCII vàImage Kiểu ASCII được sử dụng cho các tập tin văn bản, và cho phép chúng được dichuyển giữa các hệ thống với dòng kết thúc mã chuyển đổi tự động Loại hình ảnhđược sử dụng cho các tập tin nhị phân, chẳng hạn như đồ họa hình ảnh, tập tin ZIP vàcác dữ liệu khác được thể hiện một cách phổ quát Nó cũng thường được gọi là nhịphân loại vì lý do đó
VIII Các phương thức truyền dữ liệu trong FTP
Khi kênh dữ liệu đã được thiết lập xong giữa Server-DTP với User-DTP, dữ liệu sẽđược truyền trực tiếp từ phía Client tới phía server, hoặc ngược lại dựa theo các lệnhđược sử dụng Do thông tin điều khiên được gửi đi trên kênh điều khiển, nên toàn bộkênh dữ liệu có thể được sử dụng để truyền dữ liệu
FTP có ba phương thức truyền dữ liệu, đó là: stream mode, block mode, vàcompressed modc
1 Stream mode
Trong phương thức này dữ liệu được truyền đi dưới dạng các byte không cấutrú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íanhậ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àmcho nó khá khác so với nhiều giao thức gữi dữ 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 nó không có cầu trúc dạngheader, nên việc báo hiệu kết thúc file sẽ đơn giản được thực hiện việc phía thiết bị gửingắt kênh kết nối dữ 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ấttrong triển khai FTP 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ễ dàng nhất Thứhai, nó là phương pháp phổ biến nhất, vì nó xử lý với các file đề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, nó là phương thức hiệu
Trang 14quả nhất vì nó không tổn một lượng byte “overload" đề thông báo header.
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 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 blocknày có một trường header 3 byte báo hiệu độ dài và chứa thông tin về các khối dữ liệuđang được gửi Một thuật toán đặc biệt được sử dụng để kiềm tra các dữ liệu đã đượctruyền đi và để phát hiện, khởi tạo lại đối với một phiên truyền dữ liệu đã bị ngắt
3 Compressed mode
Đây là một phương thức truyền sử dụng một kỹ thuật nén khá đơn giản, là length encoding” - có tác dụng phát hiện và xử lý các đoạn lặp trong dữ liệu đượctruyền đi để giảm chiều dài của toàn bộ thông điệp Thông tin khi đã được nén, sẽ được
“run-xử lý như trong block mode, với trường header Trong thực tế, việc nén dữ liệu thườngđược sử dụng ở những chỗ khác, làm cho phương thức truyền kiểu compresed modetrở nên không cần thiết nữa
Trang 15CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I Yêu cầu bài toán
Xây dựng chương trình FTP Server
I Trình tự truy cập và chứng thực FTP
Trước khi kết nối được sử dụng để thực sự truyền file, kênh điều khiển cần phảiđược thiết lập Như trong các giao thức client/server khác, FTP server tuân theo mộtluật passive trong kênh điều khiển Bộ phận Server Protocol Interpreter (Server-PI) sẽlắng nghe cổng TCP dành riêng cho kết nối FTP là cổng 21 Phía User-PI sẽ tạo kết nốibằng việc mở một kết nối TCP từ thiết bị người dùng tới server trên cổng đó Nó sửdụng một cổng bất kỳ làm cổng nguồn trong phiên kết nối TCP
Khi TCP đã được cài đặt xong, kênh điều khiển giữa các thiết bị sẽ được thiết lập,cho phép các lệnh được truyền từ User-PI tới Server-Pl, và Server-PI sẽ hồi đáp kếtquả là các mã thông báo Bước đầu tiên sau khi kênh đã đi vào hoạt động là bước đăngnhập của người dùng (login sequence) Bước này có hai mục đích:
+Access Control (Điều khiển truy cập): quá trình chứng thực cho phép hạn chếtruy cập tới server với những người dùng nhất định Nó cũng cho phép server điềukhiển loại truy cập như thế nào đối với từng người dùng
+Resource Selcetion (Chọn nguồn cung cấp): Bằng việc nhận dạng người dùng tạokết nối, FTP server có thể đưa ra quyết định sẽ cung cấp những nguồn nào chongười dùng đã được nhận dạng dó
Quy luật chứng thực trong FTP 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 và password
Bước 2: Server kiểm tra tên người dùng và password trong database người dùngcủ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ùngrằng phiên kết nối đã được mở
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êndựa vào nhận diện người dùng
II Các lệnh dùng trong chương trình: