1. Trang chủ
  2. » Luận Văn - Báo Cáo

đồ án tốt nghiệp Giao thức FTP

40 1,6K 11

Đ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

Định dạng
Số trang 40
Dung lượng 2,6 MB

Nội dung

Đó là giao thức FTP File Transfer Protocol – 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 Trong phạm vi đề tài tốt ngh

Trang 1

Lời mở đầu

Internet ngày nay đã trở thành một phương tiện truyền thông hiệu quả

nhất để gắn kết mọi người từ khắp nơi trên Thế Giới lại với nhau Không

những phục vụ cho nhu cầu giải trí, giao lưu văn hóa nghệ thuật, Internet đang

là công cụ chính trong tất cả các lĩnh vực của đời sống Xã Hội, từ kinh doanh cho đến quản lý, từ dịch vụ cho đến hệ thống …

Từ những gói tin dữ liệu (vài chục KB) được gửi đi và về, ngày nay hệ

thống Internet đã phát triển với mức độ chóng mặt, về dung lượng và tốc độ Bên cạnh đó các giao thức, các mô hình, các kiểu cấu trúc mạng, các hình thái

hệ điều hành, máy chủ, máy con, phần mềm, phần cứng … cũng được phát triển cho phù hợp

Tuy nhiên có một giao thức đã ra đời từ rất sớm vẫn không thay đổi là bao nhiêu Nói như vậy không có nghĩa là phủ nhận tầm quan trọng của nó, mà trái lại, nó đang làm nền tảng cho sự ổn định, phát triển của Internet ngày nay

và cho cả tương lai

Đó là giao thức FTP (File Transfer Protocol) – 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

Trong phạm vi đề tài tốt nghiệp này, em đã nghiên cứu và tìm hiểu hoạt động, cấu trúc của FTP trên phương diện Server (máy chủ), từ đó xây dựng

một ứng dụng FTP Server giúp hình dung rõ ràng nhất về giao thức trên

Xin được gửi lời cảm ơn chân thành của em đến Khoa CNTT – Trường ĐHNT nói chung và thầy giáo hướng dẫn Th.s Phạm Văn Nam nói riêng đã truyền đạt và tận tình giúp đỡ em trong suốt những năm học qua, đặc biệt là quãng thời gian em làm đồ án tốt nghiệp

Em xin chân thành cảm ơn !

SVTT

Nguy ễn Quốc Khánh

Trang 2

M ục Lục

d Hoạt động của Client/Server trong TCP 11

e Hoạt động của Client/Server trong UDP 12

f Một số hàm liên quan đến gửi/nhân dữ liệu 12

3 Những ưu điểm của chương trình FTP Server 39

Trang 3

A Đặt Vấn Đề:

1 – Khái quát:

FTP (File Transfer Protocol) 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 (Internet – mạng ngoại bộ, hoặc Intranet – mạng nội bộ) Hoạt động của FTP cần có 2 máy tính, một máy chủ

và một máy khách Máy chủ FTP, 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 đến 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 mình, đổi tên của tập tin, hoặc xóa

tập tin ở máy chủ… 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 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 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

Chính vì khả năng tương thích cao và phổ biến của giao thức FTP, việc

viết các trình chủ và trình khách FTP cũng được thực hiện ở nhiều nơi, nhiều phiên bản, ứng dụng và tính năng khác nhau tùy thuộc vào nhu cầu và mục đích của công ty, tổ chức hoặc cá nhân tham gia

Trang 5

B FTP (File Transfer Protocol)

I Khái ni ệm, khuôn mẫu tổng quát:

1 Định nghĩa về giao thức FTP:

FTP (file transfer protocol - giao thức truyền file) đã có từ rất lâu và đã rất quen thuộc với nhiều người sử dụng hoặc làm việc với Internet Tuy nhiên, có

những điều liên quan tới lịch sử hình thành cũng như mức độ an toàn hiện tại

mà có thể còn ít người biết tới

FTP được phát triển từ rất sớm, chỉ sau khi mạng Internet ra đời khoảng 19 tháng Vậy mà nó vẫn được sử dụng rộng rãi cho tới tận bây giờ, phục vụ

những mục đích như cập nhật nội dung các website hay truyền những file lớn qua mạng Về mặt kỹ thuật, từ đầu FTP đã được thiết kế tốt đến nỗi ít ai thấy

có nhu cầu thay thế nó Tuy nhiên, chính sự đơn giản của FTP đã bắt đầu dẫn

tới những ẩn hoạ về an ninh mà từ thời kỳ đầu của Internet chưa hề tồn tại Được phát triển từ đầu những năm 1970 và trở nên phổ biến từ khoảng năm

1985 trở đi, FTP qua nhiều năm được dùng như cách thức tiêu chuẩn và phổ

biến để truyền file Qua đó, hai máy tính được nối mạng có thể truyền file xuôi

ngược cho nhau, bất kể là file loại gì hoặc mỗi máy tính sử dụng hệ thống file hay lưu trữ kiểu gì

Kể từ đầu thập kỷ 1990, giao thức truyền siêu ký tự (HTTP) trở thành tiêu chuẩn để truyền những đoạn ký tự hoặc hình ảnh nhỏ qua trình duyệt Nhưng FTP vẫn được ưa chuộng cho việc truyền những file lớn hơn Các phần mềm (ví dụ như CuteFTP) giúp những người phát triển và quản trị website tải các trang web lên máy chủ để hiển thị cho người xem

FTP có các tuỳ chọn bảo vệ bằng mật khẩu, nhưng chính các tên truy nhập

và mật khẩu lại được gửi qua Internet mà không được mã hoá, nên kẻ xấu hoàn toàn có thể đánh cắp chìa khoá và sau đó là thông tin Vấn đề lớn hơn nữa là

khả năng của FTP cho phép mọi người truy nhập tự do Mục đích ban đầu là để khuyến khích chia sẻ, nhưng mặt khác điều này cũng dễ gây ra việc vô tình mất

những thông tin, dữ liệu riêng tư hoặc nhạy cảm

Tên truy nhập thông thường là "anonymous" và mật khẩu có thể là bất kỳ

cái gì Mặc dù tính năng truy cập tự do này có thể được tắt đi, nhưng nhiều hệ

thống cũ vẫn đặt nó là mặc định, do đó người quản trị thiếu kinh nghiệm hoặc

lơ đễnh có thể quên không thiết lập lại và mở ra lỗ hổng an ninh cho hệ thống

Trang 6

2 Giao ti ếp Socket và mô hình Client – Server:

a Socket là gì ?

Socket là một cổng logic mà một chương trình sử dụng để kết nối với một

chương trình khác chạy trên một máy tính khác trên Internet Chương trình

mạng có thể sử dụng nhiều Socket cùng một lúc, nhờ đó nhiều chương trình có

thể sử dụng Internet cùng một lúc

Socket trong Winsock như là một “phương tiện” để ứng dụng mạng có thể trao đổi dữ liệu Nghĩa là 1 Server thì sẽ cần một Socket để lắng nghe, chờ đợi các kết nối từ client và Client thì phải cần có một Socket để kết nối tới Sever

b Kh ởi tạo Socket:

Ta sử dụng cấu trúc SOCKET để lưu giữ 1 Socket Và có thể sử dụng

hàm sau đây để tạo Socket

Trang 7

* type: Quy định giao thức vận chuyển dữ liệu

Ví d ụ: với giao thức TCP/IP thì có 2 giao thức cốt lõi là UDP và TCP:

- SOCK_DGRAM: Hay là giao thức UDP Khi chương trình chúng ta dùng UDP để truyền dữ liệu thì chuyện gì sẽ xảy ra giữa bên gởi và bên nhận ? Bên

gửi cứ gửi và gửi và nó không hề quan tâm tới vấn đề bên nhận có nhận được

nó hay không?

=> Ưu điểm: Tốc độ truyền dữ liệu nhanh

=> Nhược điểm: Khả năng sai, mất dữ liệu sẽ rất lớn

Vậy dùng UDP khi nào? Những ứng dụng cần dữ liệu tức thời như:

- Chương trình nghe nhạc trực tuyến Vấn đề sai bit (vấp khi nghe nhạc) không quan trọng mấy vì yêu cầu của nó là đảm bảo tốc độ nhanh

- Chương trình Chat

- Hoặc GameOnline (thỉnh thoảng bạn bị trường hợp LAG chính là do bị mất

dữ liệu trên đường truyền đó)

- SOCK_STREAM: Đây là giao thức TCP Nó ngược với UDP vì nó đảm bảo

giữa bên gửi và bên nhận dữ liệu phải chính xác Vì vậy 2 bên sẽ phải bắt tay

rất nhiều lần khi truyền được dữ liệu (ví dụ như bên gửi sẽ gửi n gói tin (packet), bên nhận sẽ kiểm tra có bị mất hay sai gói tin nào hay không, nếu đủ thì nó sẽ yêu cầu bên gửi gửi tiếp n gói tin tiếp theo, ngược lại thì nó sẽ yêu cầu

gửi lại)

=> Ưu điểm: Chất lượng gởi tin cậy

=> Nhược điểm: Chậm hơn UDP

Những ứng dụng như WEB, MAIL, FTP,…

- SOCK_RAW: Là giao thức để kiểm soát mạng, kiểm tra kết nối…

Ví d ụ:

Start -> Run -> CMD: “ping diendantinhoc.com”

Nếu bạn nhận được Reply có nghĩa là giữa máy tính của bạn với máy chủ

“diendantinhoc.com” có “thông mạng” với nhau Và gói tin mà bạn PING chính là SOCK_RAW (ICMP Packet)

* protocol: Chỉ định rõ lại giao thức Vì SOCK_RAW có 2 protocol là ICMP

và RAW nên nó cần điều này

- SOCK_DGREAM -> protocol là: IPPROTO_UDP

- SOCK_STREAM -> protocol là: IPPROTO_IP

- SOCK_RAW -> protocol có thể là: IPPROTO_RAW hay IPPROTO_ICMP

Trang 8

Có thể tham khảo thêm bảng thể hiện các thuộc tính của hàm Socket

Một số hàm lấy thông tin về mạng:

L ấy thông tin Socket

lpProtocolBuffer: Kiểu dữ liệu trả về

lpdwBufferLength: Kích thước của kiểu dữ liệu

Trang 9

L ấy tên máy tính của mình

int gethostname(char* name, int namelen);

Ví dụ:

char lpMyPCName[10];

gethostbyname(lpMyPCName,10) cout<< lpMyPCName;

Làm việc với IP

Địa chỉ IP là 1 con số 4 byte để xác định 1 host trên mạng

Ví d ụ:

“192.168.11.1” [Byte1: 192] [Byte2: 168][ [Byte3: 11][ [Byte4: 1]

Có thể biểu diễn địa chỉ IP: unsigned long (4 bytes)

Hoặc một char* lpIP;

Sử dụng inet_addr và inet_ntoa để chuyển đổi qua lại giữa u_long và char*

Ví dụ:

u_long YahooAddr = inet_addr("216.109.112.135");

cout << "IP: " << inet_ntoa(*(in_addr*) &YahooAddr) << "\n";

L ấy IP theo tên máy

struct hostent* FAR gethostbyname(const char* name);

với:

typedef struct hostent {

char FAR* h_name; // Tên máy tính

char FAR FAR** h_aliases; // Bí danh máy tính

short h_addrtype; // Kiểu IP (AF_INET)

short h_length; // Kích thước IP

char FAR FAR** h_addr_list; // Danh sách các địa chỉ IP

// 1 host có thể có 1 hoặc nhiều IP

Trang 10

hostent* FAR gethostbyaddr(const char* addr, int len, int type);

Ví dụ: lấy thông tin Yahoo.com (có địa chỉ IP là 216.109.112.135)

hostent *Yahoo;

u_long YahooAddr = inet_addr("216.109.112.135");

Yahoo = gethostbyaddr((char*)&YahooAddr,4,AF_INET);

c Ứng dụng Client – Server là gì ?

Mục tiêu lập trình mạng sẽ đưa ra những ứng dụng dạng Client – Server Tức là

sẽ có 2 loại ứng dụng chính đó là Client và Server

Quy trình hoạt động của ứng dụng Server – Client như sau:

Trang 11

- Server có nhiệm vụ của là lắng nghe, chờ đợi kết nối từ Client trên địa chỉ IP

của mình với PORT được quy định sẵn Khi client gởi dữ liệu tới Server thì nó

phải giải quyết một công việc là nhận dữ liệu đó -> xử lý -> trả kết quả lại cho Client

- Client là ứng dụng được phục vụ, nó chỉ gởi truy vấn và chờ đợi kết quả từ Server

Trong mô hình TCP/IP có 2 giao thức là TCP và UDP và 2 giao thức này sẽ quyết định cách thức hoạt động của Client - Server như thế nào?

d Ho ạt động của Client – Server trong giao thức TCP (SOCK STREAM)

e Ho ạt động của Client – Server trong giao thức UDP

(SOCK_DGRAM)

Trang 12

f M ột số hàm liên quan đến gửi và nhận dữ liệu:

- SOCKET s: Socket được thiết lập

- sockaddr name: Cấu trúc ADDR bao gồm địa chỉ IP và PORT

Trang 13

- int namelen: Kích thước của cấu trúc sockaddr

bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); // Đưa IP

và PORT vào SOCKET

Tác dụng dụng của BIND là sẽ giúp cho SOCKET của SERVER biết rằng nó

sẽ chờ đợi kết nối và nhận dữ liệu trên IP nào và PORT bao nhiêu?

Khoảng PORT nên chọn:

- 0 -1023: Là những PORT đã được sử dụng bởi các dịch vụ như WEB, FTP

- 1024-49151: Là PORT dành cho SERVER lắng nghe SERVER nên chọn trong khoảng này

- 49152-65535: Là PORT khởi tạo ngẫu nhiên dành cho CLIENT kết nối tới Server

- SOCKET s: Socket đã được thiết lập IP và PORT

- int backlog: Số kết nối cho phép chờ trong hàng đợi khi Server chưa chấp

nhận kết nối (vì đôi lúc có thể có tới 2 hay 3 client kết nối tới cùng 1 lúc) Giá

Trang 14

Hàm được gọi từ CLIENT nếu nó muốn kết nối tới SERVER

- SOCKET s: Socket đã được khởi tạo

- sockaddr *serv_addr: IP và PORT của Server

- int addrlen: Sizeof của cấu trúc sockaddr

Accept

SOCKET accept(

SOCKET s,

struct sockaddr FAR* addr,

int FAR* addrlen

);

Khi Client kết nối tới Server Nó phải chờ Server chấp nhận kết nối (nếu ở giao

thức TCP) bằng hàm accept trên

Hàm ACCEPT gồm có 2 thông số:

- SOCKET s: Socket lắng nghe của SERVER

- sockaddr addr: Là cấu trúc sockaddr lưu địa chỉ IP và PORT của CLIENT

kết nối tới SERVER

- int addrlen: Kích thước cấu trúc địa chỉ IP này

Hàm ACCPET trả về 1 SOCKET mới

Socket mới được tạo này đại diện cho 1 Connection (kết nối) mới giữa Server

và Client Sau khi đã truyền dữ liệu thì ta phải đóng SOCKET này lại bằng hàm close như closesocket(connect);

Trang 15

int flags

);

- SOCKET s: Là SOCKET được tạo ra khi Server chấp nhận kết nối từ

CLIENT

- char FAR* buf: Là dữ liệu (dạng BYTE – char) nhận hay gửi

- int len: Kích thước của dữ liệu

- int flags: Một số cờ hiệu đi kèm (thông thường là 0)

- SOCKET s: Là SOCKET được tạo ra ban đầu

- char FAR* buf: Là dữ liệu (dạng BYTE – char) nhận

- int len: Kích thước của dữ liệu nhận

- int flags: Một số cờ hiệu đi kèm (thông thường là 0)

- sockaddr *from: IP và PORT từ bên gửi

- int *fromlen: Sizeof cấu trúc addr

- SOCKET s: Là SOCKET được tạo ra ban đầu

- char FAR* buf: Là dữ liệu (dạng BYTE – char) gửi

- int len: Kích thước của dữ liệu gửi

- int flags: Một số cờ hiệu đi kèm (thông thường là 0)

- sockaddr *to: IP và PORT tới bên nhận

- int tolen: Sizeof cấu trúc addr

Close/Shutdown

Trang 16

int shutdown(

SOCKET s,

int how

);

int closesocket (SOCKET s);

Hủy SOCKET sau một kết nối hoặc kết thúc chương trình

Tham số how của shutdown:

- SD_RECEIVE: Đóng SOCKET, không cho phép NHẬN nhưng cho phép

GỬI

- SD_SEND: Đóng SOCKET, không cho phép GỬI nhưng cho phép NHẬN

- SD_BOTH: Không cho GỬI và NHẬN (giống gọi hàm closesocket)

3 Công c ụ lập trình:

a Gi ới thiệu về MFC

Trang 17

- MFC viết tắt là Microsoft Foundation Class

- MFC là một thư viện các lớp (class, OOP) trong ngôn ngữ Visual C++, được sử dụng để xây dựng các ứng dụng trên Windows

- MFC được xây dựng trên cơ sở các hàm thư viện API của Windows

- Trong một ứng dụng MFC, ta sẽ không gọi trực tiếp các hàm Windows API mà sẽ tạo các object từ những lớp của MFC, sau đó gọi hàm của Object này

- Đa số các hàm của lớp MFC có cùng tên với những hàm Windows API

- MFC tạo ra một Application Framework giúp cho lập trình viên thiết kế

kiến trúc của ứng dụng nhất quán và khoa học

- Thông qua các Class trong MFC, người lập trình có thể xây dựng ứng dụng nhanh và ít tốn sức hơn so với việc sử dụng đơn thuần các hàm thư

viện API của Windows

- Trong MFC có thể gọi các hàm Windows API

- MCF có nhiều version 1,2,3, 6 Version 6.0 có khoảng 200 Class

M ột số tính năng của MFC qua các Version:

- Version 1: (Visual C++ 1.0)

• Các lớp List, Array, String, Time, Date, File access

• Các lớp giao diện cơ bản

• MDI, OLE 1.0

- Version 2: (Visual C++ 1.0)

• File open, save

• Print preview, printing

• Scrolling window, spliter window

• Tool bar, status bar

• Access to Visual Basic controls

Trang 18

Bổ sung thêm Treeview và RichEdit Các lớp đồng bộ hóa tiểu trình OLE control container

- Version 4.2: (Visual C++ 4.2)

Các lớp WinInet Các lớp ActiveX document server Các tính năng mở rộng của ActiveX control Cải tiến một số tính năng của ODBC

Hỗ trợ các lớp cho những Control chuẩn trong ID 4.0

Hỗ trợ Dynamic HTML, cho phép tạo lập động các trang HTML Active Document Containment, cho phép ứng dụng MFC có thể

chứa các Active document OLE DB và ADO

b Gi ới thiệu về Visual C++:

- Là lập trình sự kiện dựa vào thông điệp (message), Multitasking, CPU, Tích hợp sẵn Multimedia, Hỗ trợ 32 bit hoặc cao hơn nữa, Hỗ trợ nhiều công nghệ DLL, COM, DDE, OLE

Multi Lập trình sự kiện và xử lý sự kiện

- Các thành phần giao diện đồ họa: Dialog, SDI (Single Document

Interface), MDI (Multiple Document Interface)

Trang 19

- Tài nguyên của ứng dụng:

• Resource là 1 đối tượng (Object) được sử dụng trong ứng dụng, ví dụ: Menu bar, Tool bar, dialog, icon, cursor, bitmap

• Resource được định nghĩa bên ngoài (tách biệt với Source Code) và được thêm vào trong tập tin thi hành (EXE) của ứng dụng khi biên dịch (Linking)

Trang 20

II Các v ấn đề về FTP Server:

1 Ki ểu Server:

Khác với nhiều loại Server (Web, Mail…) FTP Server luôn có 2 kiểu phục

vụ là: Active Mode & Passive Mode Mỗi kiểu Server có một đặc trưng và cách

hoạt động khác nhau, nhưng vẫn đáp ứng được nhu cầu phục vụ cho mỗi Client

ở mức độ tốt nhất

Active Mode:

Trong chế độ Active, từ 1 dãy Port ngẫu nhiên (N>1023), Client mở kết

nối đến Port lệnh của Server, đó là Port 21 Sau đó, Client bắt đầu lắng nghe trên Port N+1 và gửi lệnh N+1 đến Server Sau đó, từ Port dữ liệu trên Server,

đó là Port 20, Server sẽ kết nối ngược trở lại đến Port dữ liệu đã được chỉ định trên Client (PORT N+1)

Ho ạt động:

B1: Từ Port 1026, Client kết nối đến Server và gửi lệnh PORT 1027

B2: Server gửi ACK (Acknowledgement) cho Client

B3: Server tạo 1 kết nối từ Port 21 data trên nó (20) đến Port đã chỉ định trước trên Client (1027)

B4: Cuối cùng Client gửi ACK cho Server

Ngày đăng: 26/03/2015, 16:15

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w