1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tiểu luận cuối kỳ học phần lập trình mạng tên Đề tài xây dựng chương trình ftp client

28 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình FTP Client
Tác giả Trần Văn Hảo, Võ Huỳnh Việt Anh
Người hướng dẫn Trần Phong Vũ
Trường học Trường Đại Học Văn Hiến
Chuyên ngành Lập Trình Mạng
Thể loại tiểu luận
Năm xuất bản 2024
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 28
Dung lượng 2,28 MB

Nội dung

- Ðối với người lập trình, họ nhìn nhận socket như một giao diện nằm giữatầng ứng dụng và tầng khác trong mô hình mạng OSI, có nhiệm vụ thực hiện việcgiao tiếp giữa chương trình ứng dụn

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VĂN HIẾN KHOA CÔNG NGHỆ - THÔNG TIN

-

 -TIỂU LUẬN CUỐI KỲ HỌC PHẦN: LẬP TRÌNH MẠNG TÊN ĐỀ TÀI : XÂY DỰNG CHƯƠNG TRÌNH FTP CLIENT

GVHD: Trần Phong VũSVTH: Trần Văn Hảo – 191A010184

Võ Huỳnh Việt Anh - 211A010403

LỚP HP: INT45701

TP HỒ CHÍ MINH - 2024

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VĂN HIẾN

TÊN HỌC PHẦN: LẬP TRÌNH MẠNG

TÊN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH FTP CLIENT

TP HCM, NĂM 2024

Trang 3

LỜI CẢM ƠN

Trong quá trình thực hiện đồ án lập trình mạng này, em xin gửi lời cảm ơn chân thành đến những cá nhân và tập thể đã hỗ trợ và đồng hành cùng em

Trước hết, xin gửi lời cảm ơn sâu sắc đến giảng viên hướng dẫn là thầy Trần Phong

Vũ, người đã tận tình chỉ bảo và cung cấp những kiến thức quý báu giúp em hoàn thành đồ án Sự hướng dẫn và phản hồi của thầy đã giúp em nâng cao khả năng nghiêncứu và phát triển tư duy phản biện

Em cũng xin cảm ơn các bạn sinh viên trong nhóm đã cùng em làm việc, chia sẻ ý tưởng và hỗ trợ nhau trong suốt quá trình thực hiện đồ án Sự hợp tác và gắn bó của các bạn là nguồn động lực lớn lao để em vượt qua những khó khăn

Trang 4

MỤC LỤC

CHƯƠNG 1: FILE TRANSFER PROTOCOL 5

1.1.Định nghĩa 5

1.2 Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP 7

1.3.Lập trình Socket TCP trong Java 10

1.3.1 Xây dựng chương trình clients ở chế độ hướng kết nối 11

CHƯƠNG 2: FILE TRANSFER PROTOCOL 12

2.1.Giới thiệu 12

2.2 Mục đích của giao thức FTP 14

2.3 Các loại kết nối 14

2.3.1.Active FTP 14

2.3.2 Passive FTP 15

2.4.Tìm hiểu các hệ thống FTP có sẵn 16

2.4.1 FTP Client 16

2.4.2.FTP Server 17

2.4.3.Giao thức FTP 17

CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 19

3.1.Sơ đồ biều diễn quá trình xử lý các chức năng 19

3.1.1.Sơ đồ tổng quát: 19

3.1.2 Sơ đồ chức năng: 20

3.2.Một số lưu đồ thuật toán cho quá trình xử lý của FTP Client 21

3.2.1 Lưu đồ xủa lý Connect: 21

3.2.2 Lưu đồ xử lý Delete: 22

3.2.3 Lưu đồ xử lý Upload: 23

3.2.4 Lưu đồ xử lý Download: 24

3.2.5 Lưu đồ xử lý hàng đợi: 25

3.2.6 Lưu đồ xử lý Disconnect: 26

CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH 26

4.1.Giới thiệu tổng quan chương trình 26

4.1.1 Giao diện chương trình chưa kết nối: 27

4.1.2 Giao diện chương trình đã kết nối: 27

4.1.3 Giao diện upload file: 28

Trang 5

4.1.4 Giao diện tạo file: 28 4.1.5 Giao diện download file: 29

Trang 6

CHƯƠNG 1: FILE TRANSFER PROTOCOL

vụ (được gán nhãn là server) trên mạng hoặc trên cùng một máy tính

- Ðối với người lập trình, họ nhìn nhận socket như một giao diện nằm giữatầng ứng dụng và tầng khác trong mô hình mạng OSI, có nhiệm vụ thực hiện việcgiao tiếp giữa chương trình ứng dụng với các tầng bên dưới của mạng

Hình 1.1.1 Mô hình OSI dạng rút gọn

- Tuy nhiên, các lập trình viên hiện nay gần như luôn luôn bị ngăn cản tạosocket riêng bằng cách thủ công, bởi dù bạn dùng Java hay PHP,…, có thể bạn sẽkhông bao giờ mở được cổng một cách tường minh Thay vào đó các lập trình viên

sẽ dùng thư viện socket được hỗ trợ sẵn bởi các ngôn ngữ lập trình Như vậy, cácsocket vẫn tồn tại để kết nối các ứng dụng của người dùng, nhưng các chi tiết củasocket được ẩn trong những lớp sâu hơn để mọi người không phải động chạm đến

- Do socket là một thực thể phần mềm có chức năng nhận hoặc gửi dữ liệu đi

trên kết nối giữa hai ứng dụng mạng nên khi cần sử dụng socket thì ứng dụng sẽ tạo

ra socket để dùng, khi không cần sử dụng nữa thì có thể huỷ bỏ socket.

- Một socket được định danh bằng một cặp giá trị:

Trang 7

+ Địa chỉ IP của máy tính có chương trình ứng dụng đã tạo ra

socket + Số hiệu cổng (port) mà socket dùng để nhận/gửi dữ

liệu

- Khái niệm cổng: Cổng thực chất là số hiệu của một chương trình ứng dụng

đang chạy trên một máy tính Để hệ thống có thể theo dõi được các chương trình ứngdụng đang chạy trên máy tính, hệ điều hành sẽ gán cho mỗi ứng dụng đó một con số(16bits) trong khoảng từ 0 đến 65535 Trong thực tế thì các số hiệu cổng từ 0 đến

1023 (gồm 1024 cổng) đã được dùng cho các dịch vụ nổi tiếng :

Hình 1.1.2 Số hiệu cổng của một số dịch vụ nổitiếng

- Nếu chúng ta không phải là người quản trị thì nên dùng từ cổng 1024 trở

lên Vậy socket = Địa chỉ IP + Số hiệu Port.

1.2 Mô hình clients/server sử dụng socket ở chế độ hướng kết nối TCP

- Giai đoạn 1: Server tạo socket, gán số hiệu cổng và lắng nghe yêu cầu

kết nối

Trang 8

Hình 1.2.1 Server tạo socket, bind, listen

+ socket(): Server yêu cầu tạo một socket để có thể sử dụng các dịch vụ của tầng

vận chuyển

+ bind(): Server yêu cầu gán số hiệu cổng (port) cho socket.

+ listen(): Server lắng nghe các yêu cầu kết nối từ clients trên cổng đã được

gán Server sẵn sàng phục vụ Client

- Giai đoạn 2: Clients tạo socket, yêu cầu thiết lập một kết nối tới server.

Hình 1.2.2.Client tạo socket yêu cầu kết nối+socket(): Clients yêu cầu tạo một socket để có thể sử dụng các dịch vụ của

tầng vận chuyển, thông thường hệ thống tự động gán một số hiệu cổng còn rảnh chosocket của clients

+ connect(): Clients gửi yêu cầu nối kết đến server có địa chỉ IP và Port xác định.

+ accept(): Server chấp nhận kết nối của clients, khi đó một kênh giao tiếp ảo được

hình thành, clients và server có thể trao đổi thông tin với nhau thông qua kênh ảo này

- Giai đoạn 3: Trao đổi thông tin giữa clients và server

Trang 9

Hình 1.2.3.Trao đổi thông tin giữa Client và Server+ Sau khi chấp nhận yêu cầu kết nối, thông thường server thực hiện lệnh read()

và nghẽn cho đến khi có thông điệp yêu cầu (Request Message) từ clients gửi đến

+ Server phân tích và thực thi yêu cầu, kết quả sẽ được gửi về clients bằng lệnh

Trang 10

+ Kênh ảo sẽ bị xóa khi server hoặc clients đóng socket bằng lệnh close() Như vậy toàn bộ quá trình xảy ra như sau:

Hình 1.2.5.Toàn bộ quá trình làm việc

1.3.Lập trình Socket TCP trong Java

- Java hỗ trợ lập trình mạng thông qua các lớp trong gói java.net Một số lớp tiêu biểu được dùng cho lập trình clients/server sử dụng socket làm phương tiện giao tiếp như:

+ InetAddress: Lớp này biểu diễn địa chỉ Internet, quan trọng nhất là hai phương thứcgetHostName() và getAddress() dùng để chuyển đổi giữa địa chỉ IP và tên máy tính.+ Socket: Hỗ trợ các phương thức liên quan đến socket cho chương trình clients ở chế

Trang 11

3 Lấy InputStream và OutputStream gán với socket

4 Tham khảo protocol của dịch vụ để định dạng đúng dữ liệu trao đổi với server

5 Trao đổi dữ liệu với server nhờ vào các InputStream và

6 OutputStream

7 Đóng socket trước khi kết thúc chương trình

Lớp java.net.Socket: lớp socket hỗ trợ các phương thức cần thiết để xây dựng các

chương trình clients sử dụng ở chế độ hướng kết nối Dưới đây là một số phươngthức thường dùng để xây dựng clients

public Socket(String HostName, int PortNumber) throws IOException: phương

thức này dùng để kết nối đến một server có tên là HostName, cổng là PortNumber Nếu kết nối thành công, một kênh ảo sẽ được hình thành giữa clients và server

+ HostName : địa chỉ IP hoặc tên logic theo dạng tên miền

+ PortNumber : có giá trị từ 0 đến 65535

public InputStream getInputStream(): phương thức này trả về InputStream nối với

socket Chương trình clients dùng InputStream này để nhận dữ liệu từ server gửi về

public OutputStream getOutputStream(): phương thức này trả về OutputStream

nối với socket Chương trình clients dùng OutputStream này để gửi dữ liệu cho server

public close(): phương thức này sẽ đóng socket lại, giải phóng kênh ảo, xoá kết nối

giữa clients và server

CHƯƠNG 2: FILE TRANSFER PROTOCOL

2.1.Giới thiệu

- FTP là chữ viết tắc của File Transfer Protocol – Giao thức truyền file FTP

là một giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy

- Hoạt động của FTP cần có 2 máy tính, một máy chủ (Server) và một máy khá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ì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 FTP dà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 FTP 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ủ FTP hoặc trình khách FTP Hầ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 FTP Điều này cho phép tất cả các máy tính

Trang 12

kết nối với một mạng lưới có nền TCP/IP, 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 FTP) Hiện nay trên thị trường có rất nhiều các trình khách và trình chủ

FTP, 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

- 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ình chủ 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ách FTP, 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ều khiển, cho phép các dòng lệnh được chuyển qua trình chủ FTP

- Để truyền tải tập tin qua 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ế độ năng độ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 kia của mình Trong trường hợp kết nối ở chế độ năng động, (trình chủ kết nối với trình khách để truyền tải dữ liệu) , trình chủ phải trước tiên đóng kết vào cổng 20, trước khi liên lạc và kết nối với trình khách Trong chế độ bị động, hạn chế này được giải tỏa, và việc đóng kết trước là một việc không cần phải làm

- Trong khi dữ liệu được truyền tải qua dòng dữ liệu, dòng điều khiển đứng

im Tình trạng này gây ra một số vấn đề, đặc biệt khi số lượng dữ liệu đòi hỏi được truyền tải là một số lượng lớn, và đường truyền tải chạy thông qua những bức tường lửa Bức tường lửa là dụng cụ thường tự động ngắt các phiên giao dịchsau một thời gian dài im lặng Tuy tập tin có thể được truyền tải qua hoàn thiện, xong dòng điều khiển do bị bức tường lửa ngắt mạch truyền thông giữa quãng, gây ra báo lỗi

- FTP là một phương pháp truyền tập tin có truyền thống phi bảo an (không

an toàn), vì theo như bản thiết kế gốc đặc tả của FTP, không có cách nào có thể truyền tải dữ liệu dưới hình thức mật mã hóa được Ảnh hưởng này có nghĩa là, phần lớn các cài đặt của mạng lưới truyền thông, tên người dùng, mật khẩu, dònglệnh FTP và tập tin được truyền tải, đều có thể bị người khác trên cùng một mạnglưới, "ngửi" hoặc quan sát, dùng phần mềm phân tích giao thức (protocol

analyzer) (hoặc còn gọi là "dụng cụ ngửi dữ liệu", tiếng Anh là "sniffer") Nên chú ý rằng đây là vấn đề thường thấy ở các giao thức của Internet được thiết kế trước khi SSL (Secure Sockets Layer) ra đời (tạm dịch là giao thức "tầng kết nối bảo mật"), như HTTP, SMTP và Telnet Giải pháp thường thấy, đối với vấn đề này, là dùng SFTP (Secure Shell File Transfer Protocol - tạm dịch là "giao thức truyền tập tin dùng trình bao bảo mật"), một giao thức dựa trên nền của SSH,

Trang 13

hoặc trên FTPS (FTP over SSL) SFTP là FTP được cộng thêm chức năng mã hoá dữ liệu của SSL hoặc TLS (Transport Layer Security - tạm dịch là "Bảo mật tầng giao vận").

- Nhiều máy chủ chạy trình chủ FTP cho phép cái gọi là "FTP nặc danh"

Bố trí này cho phép người dùng truy nhập vào máy chủ mà không cần có trương mục Tên người dùng của truy cập nặc danh thường là hai chữ 'nặc danh' hoặc một chữ 'ftp' mà thôi Trương mục này không có mật khẩu Tuy người dùng

thường bị đòi hỏi phải kèm địa chỉ thư điện tử của mình vào, thay thế cho mật khẩu, hòng giúp phần mềm xác minh người dùng, xong thủ tục xác minh thường

là rất sơ sài và hầu như không có - tùy thuộc vào trình chủ FTP đang được dùng

và sự cài đặt của nó Internet Gopher đã được đề nghị trở thành một hình thức thay thế của FTP nặc danh

2.2 Mục đích của giao thức FTP

Mục đích của giao thức FTP, như được phác thảo trong bản RFC, là:

- Khuyến khích việc dùng chung tập tin (như chương trình ứng dụng vi tính hoặc dữ liệu)

- Khuyến khích việc sử dụng máy tính ở xa một cách gián tiếp / ngấm ngầm (implicit) - Che đậy sự khác biệt về hệ thống lưu trữ tập tin giữa các máy chủ,hầu cho người dùng không cần phải quan tâm đến những sự khác biệt riêng tưcủa chúng

- Truyền tải dữ liệu một cách đáng tin cậy và có hiệu quả cao

2.3 Các loại kết nối

2.3.1.Active FTP

Trong chế độ này FTP Client kết nối tới server bằng một port ngẫu nhiên, không có đặt quyền (N>1023), đến cổng lệnh của máy chủ FTP ( port 21), sau đó, ftp client lắng nghe bằng cổng N+1 và gửi lệnh port N+1 cho máy chủ, sau đó ftp server sẽ kết nối với ftp client port 20, và bắt đầu truyền dữ liệu

Bước 1: Client liên lạc với máy chủ, và gửi port 1027

Bước 2: Server gửi gói tin ack gửi lại về cổng lệnh của client

Bước 3: Server khởi tạo một kết nối vào cổng 1027 của client

Bước 4 Client gửi gói ack về cho server

Trang 14

Hình 2.3.1 Actice FTP

2.3.2 Passive FTP

- Trong chế độ thụ động FTP client khởi xướng cả các kết nối đến máy chủ, giải quyết vấn đề của bức tường lửa lọc các cổng kết nối dữ liệu đến cho khách hàng từ máy chủ Khi mở một kết nối FTP, khách hàng sẽ mở hai cổng ngẫu nhiên không có đặc quyền tại địa phương (N> 1023 và N +1) Các địa chỉ liên lạc cảng đầu tiên trên máy chủ trên cổng 21, nhưng thay vì sau đó phát hành một PORT lệnh

và cho phép các máy chủ để kết nối trở lại vào cổng dữ liệu của nó, khách hàng sẽ cấp PASV lệnh Kết quả của việc này là máy chủ sau đó sẽ mở ra một cổng ngẫu nhiên không có đặc quyền (P> 1023) và gửi PORT P lệnh lại cho khách hàng Các khách hàng khởi tạo kết nối từ cổng N +1 vào cổng P trên máy chủ để chuyển dữ liệu

Bước 1: Client gửi yêu cầu kết nối với server( với 2 port n và n +1)

Bước 2: Server gửi port ngẫu nhiên về phía client

Bước 3: Client sử dụng port để bắt đầu một kết nối

Bước 4: Gửi ack về phía khách hàng

Trang 15

Một số FTP Client còn cho phép lọc (filter file) Nhằm giảm mức độ công việc cho server, tăng tốc chương trình.

Một số còn hỗ trợ chức năng resume, mà không phải bất kỳ FTP Client nào cũng cónhư CuteFTP Khi việc upload/download bị ngắt giữa chừng do sự cố nào đó thì người dùng có thể thực hiện tiếp công việc đó ở lần sau khi bắt đầu mở máy

Bên cạnh đó các FTP Client còn cung cấp cho người dùng một hàng đợi (Queue) làm cho người dùng cảm thấy rất thuận tiện trong việc download/upload các

files/folders ở những thư mục khác nhau trên hệ thống

Trang 16

Ngoài ra một số Server FTP còn quản trị các user của hệ thống như : tạo user, xoá user, cấm user, phân quyền cho user, tạo group, xóa group , thêm user vào group hay cấp quyền cho group…Các quyền sẽ được cấp ở đây sẽ là Read (được quyền download file), Write (được quyền upload file), Delete (được quyền xóa file), List (được quyền duyệt thư mục), Create (được quyền tạo thư mục), Remove (được quyền xóa thư mục) và Inherit (được quyền cho thừa kế các quyền đã có ) Mỗi userkhi được tạo ra trên hệ thống sẽ được cấp cho một đặc quyền tương ứng để thao tác trên hệ thống như là No Privilege (không có đặc quyền nào cả chỉ là một user bình thường), Read-only Privilege (user có đặc quyền chỉ đọc chỉ được phép vào xem thông tin trên hệ thống), Group Administrator (user có đặc quyền này sẽ được quyền thực hiện các thao tác trên các group như thêm group, xóa group, ) và System

Administrator (user có đặc quyền này sẽ có toàn quyền trên hệ thống)…

2.4.3.Giao thức FTP

Giao thức FTP được định nghĩa bởi RFC 959 Nó cung cấp những phương tiện để chuyển tới/từ những hệ thống máy tính từ xa Thông thường người dùng chuyển một file cần quyền để đăng nhập và truy nhập những file trên hệ thống từ xa

Một phiên làm việc FTP thông thường kéo theo sự tương tác của năm phần tử phần mềm :

Hình 2.4.3.Một phiên làm việc FTP thông thường+ User Interface ( Giao diện người dùng ) : Cung cấp giao diện người dùng và điều khiển phần phiên dịch giao thức phía client

+ Client PI ( Protocol Interpreter ) : Đây là phần phiên dịch giao thức ( PI ) phía client Nó phát đi những lệnh tới phần phiên dịch giao thức của server cũng như điều khiển quá trình chuyển dữ liệu phía client

+ Server PI : Đây là phần phiên dịch giao thức của server Nó đáp ứng những lệnhđược phát đi bởi phần phiên dịch giao thức phía client và điều khiển qúa trình chuyển dữ liệu phía server

Ngày đăng: 20/12/2024, 22:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w