Với mục đích cho sinh viên làm quen và tiếp cận với những kiến thức thực tế và tính tự tìm hiểu, môn thực tập cơ sở đã giúp chúng em thêm nhiều kiến thức trong quá trình tìm hiểu.. Máy k
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP CƠ SỞ
Đề Tài: MÔ PHỎNG GIAO THƯC FTP BẰNG ĐỒ HỌA
Sinh viên thực hiện: Trần Văn Huỳnh
Lớp: CNTT-K8A, hệ đại học chính quy
Giảng viên hướng dẫn: ThS.Vũ Huy Lượng
Thái Nguyên, tháng 5 năm 2012
Trang 2Với mục đích cho sinh viên làm quen và tiếp cận với những kiến thức thực tế và tính tự tìm hiểu, môn thực tập cơ sở đã giúp chúng em thêm nhiều kiến thức trong quá trình tìm hiểu Tạo tiền đề để chúng em bước vào thực tập chuyên ngành, làm đồ án và sau đó ra làm thực tế.
Trong thời gian thực hiện đề tài, em xin chân thành cảm ơn thầy giáo Vũ Huy Lượng – giảng viên bộ môn mạng và truyền thông – Giáo viên hướng dẫn đã tạo điều kiện để em hoàn thành tốt đề tài
Trang 3Do kinh nghiệm nghiên cứu cũng như vốn kiến thức còn hạn chế nên việc hoàn thành đề tài thực tập chắc chắn vẫn còn nhiều thiếu sót Em rất mong nhận được sự giúp đỡ và đóng góp ý kiến của các thầy cô giáo.
Thái Nguyên, ngày 30 tháng 3 năm 2012
Sinh viên: Trần Văn Huỳnh
Trang 4CHƯƠNG I TÌM HIỂU GIAO THỨC FTP
1.1. Khái niệm về giao thức FTP
FTP (File Transfer Protocol) 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 (chẳng hạn như Internet-mạng ngoại bộ-hoặc intranet-mạng nội bộ) FTP cũng là một ứng dụng theo mô hình client-server, cần có hai máy tính, một máy chủ và một máy khách).
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
Hình 1 Giao thức FTP1.2. Mục đích của giao thức FTP
- Khuyến khích việc dùng chung tập tin: khi một client up một file lên server thì những client khác cũng có thể sử dụng file đó
- Khuyến khích việc sử dụng máy tính ở xa một cách gián tiếp
- 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
1.3. Hoạt động của giao thức FTP
Trang 5FTP 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 tiến trình khác FTP, trên cổng 21 Đường kết nối trên cổng 21 bà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, cần 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 các yêu cầu kết nối đền từ đầu kia của mình.
1.3.1. Kết nối kênh dữ liệu ở dạng chủ động
Ở dạng chủ động, máy khách FTP (FTP client) dùng 1 cổng ngẫu nhiên cổng này có N>1024 kết nối với vào cổng 21 của FTP server Sau đó máy khách lắng nghe trên cổng N+1 và gửi lệnh port N+1 đến FTP server Tiếp đó, máy khách sẽ lắng nghe trên cổng N+1 và gửi lệnh PORT N+1 đến FTP server Sau đó từ cổng dữ liệu của mình, FTP server sẽ kết nối ngược lại vào cổng dữ liệu của client đã khai báo trước đó (N+1)
Ở khía cạnh tường lửa, đề FTP server hỗ trợ chế độ chủ động các kênh truyền phải được mở:
- Cổng 21 phải được mở cho bất cứ nguồn gửi nào(để client khởi tạo kết nối)
- FTP server’s port 21 to port N (server trả lời về cổng điều khiển của client)
- Cho kết nối từ cổng 20 của FTP server đến các cổng N (Server sẽ khởi tạo kết nối vào cổng dữ liệu của client)
- Nhận kết nối hướng đến cổng 20 của FTP server từ các cổng N (client gửi xác nhận ACKs đến cổng data của Server)
Hình 1 Giao thức FTP dạng chủ động
Trang 6Mô tả hoạt động:
Bước 1: Client khởi tạo kết nối vào cổng 21 của Server và gửi lệnh port 1027
Bước 2: Server gửi xác nhận ACK về cổng lệnh của Client
Bước 3: Server khởi tạo kết nối từ cổng 20 của mình đến cổng dữ liệu mà client đã khai báo trước
Bước 4: Client gửi ACK phản hồi cho Server
Khi ở chế độ chủ động, client không tạo kết nối thực sự váo cổng dữ liệu của FTP server mà chỉ đơn giản là thông báo cho Server biết rằng nó đang lắng nghe trên cổng nào và server phải kết nối ngược về client vào cổng đó Nhưng đối với máy client giống như một hệ thống bên ngoài đang khởi tạo kết nối vào hệ thống bên trong và điều này thường bị ngăn chặn trên hầu hết các hệ thống firewall
1.3.2. Kết nối kênh dữ liệu ở dạng bị động
Với chế độ bị động, FTP client tạo kết nối đến Server, tránh vấn đề firewall lọc kết nối đến cổng của máy bên trong từ Server Khi kết nối FTP mở, client sẽ mở 2 cổng không dành riêng N, N+1 (N>1024) cổng thứ nhất để liên lạc với cổng 21 của server, nhưng thay vì gửi lệnh port và sau đó là server kết nối ngược về client, thì lệnh PASV được phát ra Kết quả là server sẽ mở 1 cổng không dành riêng bất kỳ p (p>1024) và gửi lệnh port p ngược về client Sau đó client sẽ khởi tạo kết nối từ cổng N+1 vào cổng P trên Server để truyền dữ liệu
Từ quan điểm Firewall trên server FTP, để hỗ trợ FTP chế độ passive, các kênh truyền sau cần được mở ra:
- Cổng FTP 21 của Server nhận một kết nối từ bất kỳ nguồn nào (client khởi tạo kết nối)
- Cho phép trả lời từ cổng 21 FTP Server đến cổng bất kỳ trên 1024 (Server trả lời cho cổng control của client)
- Nhận kết nối trên cổng FTP server lớn hơn 1024 từ bất kì nguồn nào (client tạo kết nối để truyền dữ liệu)
- Cho phép trả lời từ cổng FTP server lớn hơn 1024 đến cổng lớn hơn 1024 (server sẽ xác nhận acks đến cổng dữ liệu của client)
Trang 7Hình 1 Giao thức FTP dạng bị động
Bước 1: Client kết nối vào cổng lệnh của Server và phát lệnh PASV
Bước 2: Server trả lời bằng lệnh port 2024, cho client biết cổng 2024 đang mở để nhận kết nối dữ liệu
Bước 3: Client tạo kết nối truyền dữ liệu từ cổng dữ liệu của nó đến cổng dữ liệu
2024 của Server
Bước 4: Server trả lời bằng xác nhận ACK về cho cổng dữ liệu của Client
1.4. Các lệnh cơ bản của giao thức FTP
- Ascii: Chuyển sang chế độ truyền file theo dạng văn bản
- Binary: Chuyển sang chế độ truyền file theo dạng nhị phân
- Cd [directory]: chuyển vào thư mục directory
- Cdup chuyển lên thư mục cấp trên một cấp
- Close: ngắt kết nối với máy chủ
- Del [remote-file] xóa một file trên máy chủ
- Dir [remote-directory | file]: liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ
- Help [command]: cho biết hướng dẫn về lênh command
- Lcd [local - directory] đặt lại thư mục làm việc trên client là local-directory
- Ls [remote – directory|file][-la] liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ, tham số –la sẽ liệt kê tất cả có kèm mô theo mô tả về quyền
- Mdelete [remote-files] xóa nhiều file trên máy chủ
- Mget [remote - files] download các file trên máy chủ về
- Mkdir: tạo thư mục có tên là directory-name
- Mput [local – files]: up các file lên máy chủ
Trang 8- Open host [port]: kết nối đến máy chủ FTP cps hostname là host và đang chạy dịch vụ FTP ở cổng port.
- Put [remote-file]: upload local-file lên mát chủ với tene là remote-file nếu được
- Pwd: cho biết thư mục đang làm việc hiện thời
- Quit: thoát
- Recv [file] nhận remote-file trên máy chủ và lưu trên máy tính với tên file nếu được
local Rename [from][to]: đổi tên file hoặc thư mục form thành to
- Rmdir directory-name: xóa thư mục có tên là directory-name
- Send local-file [remote-file]: gửi local-file từ máy tính lên máy chủ với tên mới remote-file nếu được
- Status: cho biết trạng thái của phiền làm việc hiện tại
- Syst: cho biết hệ điều hành của máy chủ
- User user-name [password][account]: login vào với tên là user-name, mật khẩu là password, toài khoản account
- ?: Gọi hướng dẫn
1.5. Ứng dụng giao thức FTP
- Thông qua giao thức FTP người dùng có thể tải dữ liệu như hình ảnh, văn bản, các tập tin media (nhạc, video)… từ máy tính cảu mình lên máy chủ đăng đặt ở một nơi khác hoặc tải các tập tin có trên máy chủ về máy tính cá nhân
- Thông qua giao thức có thể gửi những dữ liệu với dung lượng lớn một cách nhanh chóng
- Chúng ta có thể cùng một lúc có thể tải nhiều tập tin cùng một lúc để tiết kiệm thời gian
- FTP là giao thúc hỗ trợ việc truyền tải dữ liệu từ web lên máy chủ web
CHƯƠNG II TÌM HIỂU NGÔN NGỮ C#
2.1 Giới Thiệu Ngôn Ngữ C#
Ngôn ngữ C# là một ngôn ngữ đơn giản, nó bao gồm hơn 80 từ khóa và kiểu dữ liệu được dựng sẵn Nhưng ngôn ngữ C# có ý nghĩa to lớn khi nó thực thi những khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Những tính chất đó hiện diện trong một ngôn ngữ lập trình
Trang 9hiện đại Ngôn ngữ C# được xây dựng trên nền tảng hai ngôn ngữ mạnh nhất là C++ và Java.
- C# là ngôn ngữ đơn giản
- C# là ngôn ngữ hiện đại
- C# là ngôn ngữ hướng đối tượng
- Biến là một vùng lưu trữ ứng với một kiểu dữ liệu
- Biến có thể được gán giá trị và cũng có thể thay đổi giá trị trong khi thực hiện các lệnh
b. Khai báo:
<Kiểu_Dữ_Liệu> <tên_biến> [ = <giá_trị> ];
VD:
int i = 10; // khai báo một biến I gán giá trị bằng 10;
int j; // khai báo một biến j Ví giá trị gán không bắt buộc, nên không cần gán giá trị trước
Trang 102.1.3. Toán Tử
a Toán tử toán học: + , - , * , / , %
b Toán tử tăng / giảm: += , -= , *= , /= , %=
c Toán tử tăng / giảm 1 đơn vị: ++ ,
d Toán tử gán: =
e Toán tử quan hệ: == , != , > , >= , < , <=
f Toán tử logic: ! , && , ||
g Toán tử 3 ngôi: (Điều_Kiện) ? (Biểu_Thức_1) : (Biểu_Thức_2) ;
2.3 Kiểu dữ liệu
C# chia làm hai kiểu dữ liệu chính:
- Kiểu dữ liệu dựng sẵn: do người lập trình cung cấp cho người lập trình
- Kiểu dữ liệu do người dùng định nghĩa: do người lập trình tạo ra
Kiểu dữ liệu dựng sẵn: byte, char, bool, short, sbyte, ushort, int, uint, float, double, decimal, long, ulong
Kí tự đặc biệt: \’ (dấu nháy đơn), \\’’ (dấu nháy kép), \\ (dấu chéo), \0 (ký tự null), \b (khoảng trắng), \f(sang trang), \n(xuống dòng), \r (đầu dòng), \t (tab ngang), \v (tab dọc)…
2.4 Cấu trúc điều khiển–Cấu trúc lệnh
2.4.1 Câu lệnh IF……ELSE
Cú pháp
if(điều kiện)
<khối lệnh điều kiện đúng>
[else
<khối lệnh điều kiện sai> ]
Ví dụ: kiểm tra tính chẵn lẻ của một số
using System;
class lenhif
Trang 11ElseConsole.WriteLine(“{0} la so le”,a);
}
}
Cú pháp IF lồng nhau
if(điều kiện 1)
<khối lệnh điều kiên 1 đúng>
else if(điều kiện 2)
<khối lệnh điều kiện 2 đúng>
Else<khối lệnh điều kiện 2 sai>
Trang 12Console.WriteLine(“{0} la so lon nhat”,a);
ElseIf(b>=a&&b>=c)Console.WriteLine(“{0} la so lon nhat”,b);Else
Console.WriteLine(“{0} la so lon nhat”,c); }
Case <gia tri 1> <khối lệnh 1>; break;
Case <gia tri 2> <khối lệnh 2>; break;
………
Case <gia tri n> <khối lệnh n>; break;
[default: <khối lện khác>]
Trang 13<khối lệnh>
While (điệu kiện)
- Làm trong khi đúng: trong khi điều kiện còn đúng thì lệnh sẽ vẫn được thực hiện Một điểm chú ý là khối lệnh sẽ được thực hiện trước sau đó mới kiểm tra điều kiện Ngược lại với while là kiểm tra điều kiện xong mới thực hiện khối lệnh
2.4.5.Lênh lặp FOR
2.4.6.Lệnh lặp foreach
Cú pháp:
Foreach(<kiểu tập hợp><tên truy cập thành phần> in <tên tập hợp>)
<khối lệnh>
CHƯƠNG III ĐỒ HỌA TRONG C#
3.1 Chổi vẽ (brush) và bút vẽ (pen)
Chổi vẽ và bút vẽ là nền tảng của hệ thống đồ họa WindowForm Chúng ta sử dụng bút vẽ để vẽ đường thẳng đường cong, và chổi vẽ dùng để tôi mầu những vùng được bao bởi đường thẳng và đường cong Đồng thời để vẽ chữ
Cả hai lớp brush và pen đều được định nghĩ bên trong không gian tên namespace System.Drawing
Bút vẽ (Pen) là một cây bút được sử dụng dể vẽ đường thằng, đường cong và phác thảo hình dạng:
Pen (Color): Thiết lập mầu cho đối tượng
Pen (brush): Thiết lập brush cho đối tượng
Pen (Color, float): Thiết lập Color với độ rộng nét vẽ cho đối tượng
Trang 14Pen (Brush, float): Thiết lập Brush với độ rộng nét vẽ với đối tượng.
Các Thuộc tính:
Alignment: Thiết lập liên kết cho đối tượngBrush: Thiết lập brush đối tượng
Color: Thiết lập mầu cho đối tượngDashStyle: Thiết lập kiểu nét vẽ cho đỗi tượngWidth: Bể rộng nét vẽ của đối tượng
//Thiết lập đơn vị cho g
g.PageUnit = GraphicsUnit.Inch;
// thiết lập mầu và độ dộng của g
Pen color = new Pen(Color.Red, 1 / g.DpiX);
Pen color1 = new Pen(Brushes.Black, 1 / g.DpiX);
//vẽ một đường thẳng từ tọa độ (0,0) đến tọa độ (1,1)
g.DrawLine(color1, 0, 0, 1, 1);
}
}
}
Trang 15Chổi vẽ (Brush) được dùng để tô đầy những vùng được bao bởi đường thẳng và đường công đồng thời dùng để vẽ chũ.
SolidBrush: Một bàn trải đơn giản có một mầu duy nhất, tác dụng như một cái chổi để
tô màu đặc
HatchBrush là loại chổi tô màu vùng dựa theo một số mẫu lặp lại của ảnh
Pen apen = new Pen(Color.Blue, 5);
// Kẻ một đường thẳng từ điểm (10,10) đến điểm (60,60)
g.DrawLine(apen, 10, 10, 60, 60);
g.Dispose();
}
Trang 16}
}
Hình 2 Line
3.3 Color
Tạo Một mầu: Color.Tên Mầu
Ví Dụ: Color.Blue;
Name: Quy định font chữ cho văn bản
Bold: True: Đậm, False: bỏ đậm
Italic: True: Chữ Nghiêm, Fasle: Bỏ Nghiêng
Size: quy định cỡ chữ cho văn bản
Underline: True gạch dưới, false: bỏ gách dưới
TextAlign: Căn lề (left, Center, Right )
Ví dụ:
Trang 17// tạo một label mới tên là lb1
Label lb1 = new Label();
// font chữ là Time New Roman
lb1.Name = "Time new Roman";
//Đoạn text muốn hiện lên
lb1.Text = "Tran Van Huynh";
lb1.Size = new Size(200, 45);
// Hiển thị Label lên
this.Controls.Add(lb1);
}
}
}
Trang 18Hình 2.2 Label
3.5 Timer
Công dụng: Quy định một khoảng thơi gian để thực hiện một công việc
Thuộc tính:
Enable: bật tất chế độ hẹn thời gian
Interval: Khoảng thời gian định kì
private void timer1_Tick(object sender, EventArgs e)
Trang 19Hình 2 Timer
Từ Khóa: DrawRectangle ()/DrawRectangles
DrawRectangle (Mầu, tọa độ x, tọa độ y, chiều dài, chiều rộng);
Trang 22CHƯƠNG IV CHƯƠNG TRÌNH MÔ PHỎNG GIAO
THỨC FTP
4.1 Giao Diện Form kết nối từ client lên server
Chương trình mô phỏng giao thức có giao diện chính thể hiện các chúc năng kết nối từ client với server, upload file từ client lên server, download từ Server về client
Trong form chính sử dụng hàm Onpaint () để vẽ lên phần form chính
Với DrawRectangle: vẽ hình chữ nhật để vẽ client và Server
Với DrawString: Hiện các text lên form
Giao diện có 3 button với các chức năng cụ thể Connect, UpLoad và Download
Code Form chính:
Trang 23public static Pen aPen = new Pen(Color.Blue, 2);
protected override void OnPaint(PaintEventArgs e)
// tieu de cua chuong trinh
f = new Font(new FontFamily("Times New Roman"),
lb4.Text = "Send Host: " + host.Text;
lb4.Location = new Point(lb4.Location.X - 40, lb4.Location.Y);
rTb1.Text = "Connect to " + host.Text + " :21";
“;
->";
Trang 24if (pB1.Value == 45)
{
lb4.Text = "USER " + user.Text;
lb4.Location = new Point(lb4.Location.X + 40, lb4.Location.Y);
Trang 25rTb1.Text += "Command:PASS";
->";
Trang 26if (comboBox1.SelectedItem == "PWD"){
frmPWD frmpwd = new frmPWD();
frmpwd.Show();
}else
if (comboBox1.SelectedItem == "RENAME"){
frmReadFILE frf = new frmReadFILE();
frf.Show();
}else
if (comboBox1.SelectedItem == "DISCONNECT"){
lb1.Text = "";lb2.Text = "";lb3.Text = "";lb4.Text = "";rTb1.Text = "";}
Trang 27Đây là giao diện chính của chương trình mô phỏng giao thức FTP, có một Server, một client và có Textbox, combobox, rich textbox, button (CLICK)
Khi bạn điền đầy đủ thông tin cho host, username, pass, tại chọn lệnh ta chọn
“CONNECT” và ấn vào button “CLICK”
Hình 4 Ghi thông tin tài khoản để thực hiện kết nốiQuá trình Connect từ client đến máy chủ được bắt đầu:
Trang 28Hình 4 Quá trình kết nối đang diễn ra
Tại clent sẽ gửi host đến server yêu cầu kết nối, và Sever sẽ trả lời lại client rằng
“Response: 220 ProFTPD 1.3.4rc2 Server ready.” Tiếp đó, client sẽ gửi đến server tên đăng nhập “Command: USER kutrinh” Khi nhận được usename Server sẽ yêu cầu pass client “Response: 331 Password required for kutrinh” và client trả lời “Command: PASS” Quá trình Connect thành công “Response: 230 User kutrinh logged in” Thông báo Connection Success
Hình 4 Quá trình kết nối thành công
Trang 294.2 Form xem thư mục đang làm việc
Tại form chính, tạo khu vực comboBox ta chọn lệnh PWD, nghĩa là chọn form xem thư vực đang làm việc
Hình 4 Chọn PWD để xem thư mục hiện hành
Code form xem thưc mục đang làm việc:
Trang 30SolidBrush BT = new SolidBrush(Color.Black);
public static Pen aPen = new Pen(Color.Blue, 2);
protected override void OnPaint(PaintEventArgs e)
// tieu de cua chuong trinh
f = new Font(new FontFamily("Times New Roman"),
" -lb2.Location = new Point(lb2.Location.X - 115, lb2.Location.Y);