ỨNG DỤNG OPENVPN TRONG bảo mật hệ THỐNG MẠNG CHO DOANH NGHIỆP
Trang 1HỮU NGHỊ VIỆT-HÀN
KHOA KHOA HỌC MÁY TÍNH
- -ĐỒ ÁN TỐT NGHIỆP NGÀNH MẠNG MÁY TÍNH
Đà Nẵng, tháng 6 năm 2012
Trang 2LỜI CẢM ƠN
Để hoàn thành đồ án tốt nghiệp này, lời đầu tiên em xin chân thành cảm ơn cácthầy giáo, cô giáo Khoa Khoa Học Máy Tính, những người đã dạy dỗ, trang bị cho emnhững kiến thức bổ ích trong năm học vừa qua
Em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy Lê Kim Trọng, người đã tận tìnhhướng dẫn em trong suốt quá trình làm đồ án
Một lần nữa em xin chân thành cảm ơn sự giúp đỡ của các thầy cô
Đà nẵng, ngày 2 tháng 6 năm 2012
Trang 3MỤC LỤC
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT 6
DANH MỤC BẢNG BIỂU 7
DANH MỤC HÌNH VẼ, ĐỒ THỊ 8
MỞ ĐẦU 10
CHƯƠNG 1: TỔNG QUAN VỀ MẠNG MÁY TÍNH 12
1.1 TỔNG QUAN VỀ MẠNG MÁY TÍNH 12
1.1.1 Lịch sử hình thành 12
1.1.2 Khái niệm mạng máy tính 13
1.2 MÔ HÌNH PHÂN TẦNG 15
1.2.1 OSI 15
1.2.2 TCP/IP 19
1.3.1 Nguyên tắc truyền thông 21
1.3.2 Nguyên tắc của phương pháp phân tầng 21
1.3.3 Địa chỉ IP 23
1.4 PHÂN LOẠI MẠNG MÁY TÍNH 24
1.4.1 Theo khoảng cách địa lý 24
1.4.2 Theo kỹ thuật chuyển mạch 24
1.4.3 Theo cơ chế hoạt động 24
CHƯƠNG 2 : TỔNG QUAN VỀ PHẦN MỀM NGUỒN MỞ 24
2.1 KHÁI NIỆM PHẦN MỀM NGUỒN MỞ 24
2.1.1 Lịch sử phát triển phần mềm mã nguồn mở 24
2.2 GIỚI THIỆU HỆ ĐIỀU HÀNH LINUX 26
2.2.1 Lịch sử Linux 27
2.2.2 Giao tiếp trên môi trường Linux 28
2.2.3 Giới thiệu hệ thống tập tin và thư mục 29
2.2.4 Phân loại phần mềm nguồn mở 30
2.2.5 Phân biệt phần mềm nguồn mở với một số phần mềm khác 31
Trang 4CHƯƠNG 3 : CÔNG NGHỆ VPN VÀ CÁC GIAO THỨC HỖ TRỢ 32
3.1 TỔNG QUAN VỀ CÔNG NGHỆ VPN 32
3.1.1 Giới thiệu về công nghệ VPN 32
3.1.2 Định nghĩa VPN 33
3.1.4 Các thành phần cần thiết để tạo kết nối VPN 37
3.2 CÁC GIAO THỨC VPN 37
3.2.1 L2TP 37
3.2.3 PPTP 38
3.2.4 GRE 43
3.2.5 IPSec 44
3.2.6 Bảng so sánh các giao thức 45
3.3 KẾT NỐI VPN 46
3.3.1 Các dạng kết nối VPN 46
3.3.2 So sánh VPN Client – to – Site và VPN Site – to – Site 51
CHƯƠNG 4: GIỚI THIỆU MÔ HÌNH TRIỂN KHAI OPENVPN TRÊN UBUNTU SERVER 52
4.1 MÔ HÌNH HỆ THỐNG 52
4.1.1 VPN Client – to – Site 52
4.1.2 VPN Site – to – Site 53
4.2 CÀI ĐẶT VÀ CẤU HÌNH OPENVPN 54
4.2.1 OpenVPN Client – to – Site 54
4.2.2 OpenVPN Site – to – Site 56
4.3 TIẾN HÀNH QUAY KẾT NỐI 57
4.3.1 Kiểm tra VPN Client – to – Site 57
4.3.2 Kiểm tra VPN Site – to – Site 58
4.4 Quan sát bằng gói tin Wireshark 58
KẾT LUẬN 59
TÀI LIỆU THAM KHẢO 60
Trang 5DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
VPN Virtual Private Network GNU General Public License FSF Free Software Foundation
GPL General Public License
L2TP Layer 2 Tunneling Protocol PPTP Point-to-Point Tunneling Protocol GRE Generic Routing Encapsulation
DANH MỤC BẢNG BIỂU
Trang 6Bảng 3.1 Bảng các thông điệp điều khiển kết nối PPTP 40 Bảng 3.2 Bảng so sánh các giao thức 43 Bảng 3.3 Bảng so sánh VPN Client to Site và VPN Site to Site 50
DANH MỤC HÌNH VẼ, ĐỒ THỊ
Trang 7Hình 1.1 Mạng ngang hàng 14
Hình 1.2 Mạng Client – Server 14
Hình 1.3 Mô hình OSI 16
Hình 1.4 Mô hình TCP/IP 19
Hình 1.5 Mô hình truyền thông đơn giản 3 tầng 22
Hình 1.6 Trao đổi giữa các tầng 23
Hình 3.1 Minh họa mô hình kết nối VPN 34
Hình 3.2 Giao thức L2TP 38
Hình 3.3 Định dạng gói tin điều khiển thông điệp PPTP 40
Hình 3.4 Định dạng gói tin dữ liệu PPTP 40
Hình 3.5 Quá trình điều khiển kết nối 41
Hình 3.6 Quá trình xử lý dữ liệu PPTP 43
Hình 3.7 IPSec 45
Hình 3.8 Remote Access VPN 47
Hình 3.9 Site to Site VPN 48
Hình 3.10 Intranet VPNs 50
Hình 3.11 Extranet VPNs 50
Hình 3.12 Thiết lập một kết nối Client to Server 51
Hình 4.1 Mô hình giả lập hệ thống VPN Client – to – Site 52
Hình 4.2 Mô hình giả lập VPN Site – to - Site 54
Hình 4.3 IP cấp phát thành công cho VPN Client 57
Hình 4.4 IP cấp phát thành công cho máy VPN2_Client 58
Hình 4.5 Kiểm tra bằng Wireshark 58
MỞ ĐẦU
Trang 81 Lý do chọn đề tài.
Hiện nay, doanh nghiệp có chuỗi chi nhánh, cửa hàng ngày càng trở nên phổ biến.Không những vậy, nhiều doanh nghiệp còn triển khai đội ngũ bán hàng đến tận ngườidùng Do đó, để kiểm soát, quản lý, tận dụng tốt nguồn tài nguyên, nhiều doanh nghiệp đãtriển khai giải pháp phần mềm quản lý nguồn tài nguyên có khả năng hỗ trợ truy cập, truyxuất thông tin từ xa
Tuy nhiên, việc truy xuất cơ sở dữ liệu từ xa luôn đòi hỏi cao về vấn đề an toàn,bảo mật Để giải quyết vấn đề này, nhiều doanh nghiệp đã chọn giải pháp mạng riêng ảoVPN (Virtual Private Network) với nhiều cấp độ bảo mật, trang thiết bị dễ tìm mua
2 Mục tiêu và nhiệm vụ nghiên cứu.
Mục tiêu sau khi nghiên cứu và thử nghiệm thành công OpenVPN trên ubuntu thì
sẽ ứng dụng mô hình triển khai OpenVPN này cho các doanh nghiệp lớn, cũng như làdoanh nghiệp vừa và nhỏ
Nhiệm vụ nghiên cứu là tìm hiểu để nắm rõ OpenVPN là gì, đưa ra các bảng sosánh, phân tích, đánh giá ưu và nhược điểm của OpenVPN, các giao thức được sử dụng vàtriển khai OpenVPN trên ubuntu
3 Đối tượng và phạm vi nghiên cứu.
Đối tượng nghiên cứu:
- Hệ điều hành mã nguồn mở Ubuntu
- Mô hình VPN và các giao thức liên quan
Phạm vi nghiên cứu: Mô hình doanh nghiệp vừa và nhỏ
4 Phương pháp nghiên cứu.
Tổng hợp từ các tài liệu tiếng anh cũng như tiếng việt đã thu thập được để làmphần cơ sở lý thuyết, kết hợp với việc tìm hiểu các câu lệnh cài đặt, cấu hình liên quanđến mã nguồn mở và OpenVPN, ứng dụng phần mềm máy ảo vmware để làm phần demothực nghiệm
5 Ý nghĩa khoa học và thực tiễn.
Ý nghĩa khoa học:
Trang 9+ giúp sinh viên nắm được các kiến thức về mạng máy tính và phần mềmnguồn mở.
+ Hiểu được cơ chế và cách thức làm việc của các giao thức bảo mật VPN
Nội dung đồ án được trình bày trong gồm 4 chương:
- Chương 1: Tổng quan về mạng máy tính
- Chương 2: Tổng quan về phần mềm nguồn mở
- Chương 3: Công nghệ VPN và các giao thức hỗ trợ
- Chương 4: Mô hình hệ thống và triển khai OpenVPN trên Ubuntu Server
- Cuối cùng là kết luận và tài liệu tham khảo
CHƯƠNG 1: TỔNG QUAN VỀ MẠNG MÁY TÍNH
Trang 101.1 TỔNG QUAN VỀ MẠNG MÁY TÍNH
1.1.1 Lịch sử hình thành
Máy tính của thập niên 1940 là các thiết bị cơ-điện-tử lớn và rất dễ hỏng Sự phátminh ra transitor bán dẫn vào năm 1947 tạo ra cơ hội làm ra chiếc máy tính nhỏ và đángtin cậy hơn
Năm 1950, các máy tính lớn chạy bởi các chương trình ghi trên thẻ đục lỗ bắt đầuđược dùng trong các học viện lớn Điều này tuy tạo ra nhiều thuận lợi với máy tính có khảnăng được lập trình nhưng cũng có rất nhiều khó khăn trong việc tạo ra các chương trìnhdựa trên thẻ đục lỗ này
Vào cuối thập niên 1950, người ta phát minh ra mạch tích hợp IC chứa nhiềutransitor trên một mẫu bán dẫn nhỏ, tạo ra một bước nhảy vọt trong việc chế tạo các máytính mạnh hơn, nhanh hơn và nhỏ hơn Đến nay, IC có thể chứa hàng triệu transitor trênmột mạch
Vào cuối thập niên 1960, đầu thập niên 1970, các máy tính nhỏ được gọi làminicomputer bắt đầu xuất hiện Năm 1997, công ty máy tính Apple Computer giới thiệumáy vi tính cũng được gọi là máy tính cá nhân (personal computer - PC)
Năm1981, IBM đưa ra máy tính cá nhân đầu tiên Sự thu nhỏ ngày càng tinh vihơn của các IC đưa đến việc sử dụng rộng rãi máy tính cá nhân tại nhà và trong kinhdoanh
Vào giữa thập niên 1980, người sử dụng dùng các máy tính độc lập bắt đầu chia sẻcác tập tin bằng cách dùng modem kết nối các máy tính khác Cách thức này được gọi làđiểm nối điểm, hay truyền theo kiểu quay số Khái niệm này được mở rộng bằng cáchdùng các máy tính là trung tâm truyền tin trong một kết nối quay số Các máy tính nàyđược gọi là sàn thông báo Các người dùng kết nối đến sàn thông báo này, để lại đó haylấy đi các thông điệp, cũng như gửi lên hay tải về các tập tin Hạn chế của hệ thống là córất ít hướng truyền tin, và chỉ với những ai biết về sàn thông báo đó Ngoài ra, các máytính tại sàn thông báo cần một modem cho mỗi kết nối, khi số lượng kết nối tăng lên, hệthống không thể đáp ứng được nhu cầu
Trang 11Qua các thập niên 1950, 1970, 1980, 1990, Bộ Quốc Phòng Hoa Kỳ đã phát triểncác mạng diện rộng WAN có độ tin cậy cao, nhằm phục vụ các mục đích quân sự và khoahọc Công nghệ này khác truyền tin điểm nối điểm Nó cho phép nhiều máy tính kết nốilại với nhau bằng các đường dẫn khác nhau Bản thân mạng sẽ xác định dữ liệu di chuyển
từ máy tính này đến máy tính khác như thế nào Thay vì chỉ có thể thông tin với một máytính tại một thời điểm, nó có thể thông tin với nhiều máy tính cùng lúc bằng cùng một kếtnối Sau này, WAN của Bộ Quốc Phòng Hoa Kỳ đã trờ thành Internet
1.1.2 Khái niệm mạng máy tính
Mạng máy tính là tập hợp các máy tính độc lập kết nối với nhau theo một chuẩn kỹthuật nhất định Hai máy tính gọi là nối mạng với nhau nếu chúng có khả năng trao đổithông tin Phương tiện kết nối có thể là cáp đồng, cáp quang, sóng viba, hồng ngoại hoặc
vệ tinh
Mạng máy tính có nhiều kích cỡ, cấu trúc và hình thức tổ chức khác nhau tùythuộc vào từng ứng dụng cụ thể của mạng máy tính Tuy nhiên, chúng có thể phân thànhhai loại chính là: mạng có cấu trúc ngang hàng và mạng có cấu trúc Client – Server (máytrạm – máy chủ)
Hình 1.1 Mạng ngang hàng
Trang 12Hình 1.2 Mạng Client – ServerTrên thực tế, không có một phương pháp phân loại thống nhất cho tất cả các loạimạng máy tính, tuy nhiên khi xét đến một mạng máy tính người ta quan tâm đến hai đặcđiểm quan trọng: phương thức truyền dẫn và quy mô mạng.
Có hai phương thức truyền dẫn được sử dụng phổ biến đó là: truyền quảng bá vàtruyền điểm-nối-điểm Truyền quảng bá là phương thức sử dụng kênh thông tin đơnchung cho tất cả các máy trạm trên mạng Gói dữ liệu được gửi từ một máy trạm mongmuốn thì gói dữ liệu đó sẽ được xử lý, nếu không sẽ được bỏ qua Một hệ thống mạngtruyền quảng bá hỗ trợ việc truyền dữ liệu đến một tập hợp các máy trạm, thì được gọi làtruyền đa điểm
Đối với phương thức truyền điểm-nối-điểm, mạng máy tính sử dụng phương thứcnày bao gồm tập hợp nhiều kết nối giữa các máy trạm Gói dữ liệu từ đầu phát dữ liệu đếnđầu thu dữ liệu có thể sẽ đi qua một hoặc nhiều máy trạm trung gian theo nhiều tuyếntruyền dẫn khác nhau với độ dài khác nhau
Trường hợp mạng máy tính sử dụng phương thức truyền điểm-nối-điểm với mộtđầu phát và một đầu thu được gọi là phương thức truyền unicasting
Phương thức phân loại thứ hai dựa vào quy mô mạng hay kích thước vật lý củamạng Theo quy mô từ nhỏ đến lớn ta có các loại mạng sau:
- Mạng cá nhân (Personal Are Network-PAN)
- Mạng LAN (Local Area Network)-mạng cục bộ: kết nối các nút trên một phạm vigiới hạn Phạm vi này có thể là một công ty, hay một tòa nhà
Trang 13- Mạng WAN (Wide Area Network): nhiều mạng LAN kết nối với nhau tạo thànhmạng WAN
- MAN (Metropolitan Area Network), tương tự như WAN, nó cũng kết nối nhiềumạng LAN Tuy nhiên, một mạng MAN có phạm vi là một thành phố hay một đô thịnhỏ MAN sử dụng các mạng tốc độ cao để kết nối các mạng LAN của trường học, chínhphủ, công ty, , bằng cách sử dụng các liên kết nhanh tới từng điểm như cáp quang
1.2.1 OSI
Hình 1.3 Mô hình OSI
Mô hình OSI có 7 lớp và được thiết kế theo các nguyên tắc sau:
- Một lớp được tạo ra tương ứng với một khái niệm trừu tượng
- Một lớp thực hiện một chức năng hoàn chỉnh nào đó
- Chức năng của mỗi lớp phải được chọn theo xu hướng phù hợp với các giaothứcđã được chuẩn hóa
- Biên của các lớp phải được thiết kế sao cho tối thiểu hóa được lượng thông tintruyền qua các giao diện
- Số lượng các lớp không quá ít để đảm bảo thực hiện đủ các chức năng cần thiết vàkhông được quá nhiều để kiến trúc của nó không trở nên cồng kềnh
Trang 141.2.1.1 Lớp vật lý
Lớp vật lý bao gồm việc truyền tải các tín hiệu trong môi trường từ máy tính nàyđến máy tính khác Lớp này gồm có các chi tiết kỹ thuật về các đặc tính điện và cơ như:mức điện áp, định thời tín hiệu, tốc độ dữ liệu, độ dài truyền tải lớn nhất và các kết nối vật
lý của thiết bị mạng Để một thiết bị hoạt động chỉ trong lớp vật lý, nó sẽ không có bất kỳkiến thức nào về dữ liệu mà nó truyền tải Một thiết bị lớp vật lý chỉ truyền tải hoặc nhận
dữ liệu một cách đơn giản.
- Cơ chế truy cập đường truyền
- Thông báo lỗi
- Thứ tự phân phối frame
- Điều khiển dòng
Tại lớp data link, các bít đến từ lớp vật lý được chuyển thành các frame dữ liệubằng cách dùng một số nghi thức tại lớp này Lớp data link được chia thành hai lớp con:
- Lớp con LLC (logical link control)
- Lớp con MAC (media access control)
Lớp con LLC là phần trên so với các giao thức truy cập đường truyền khác, nócung cấp sự mềm dẻo về giao tiếp Bởi vì lớp con LLC hoạt động độc lập với các giaothức truy cập đường truyền, cho nên các giao thức lớp trên hơn (ví dụ như IP ở lớp mạng)
có thể hoạt động mà không phụ thuộc vào loại phương tiện LAN Lớp con LLC có thể lệthuộc vào các lớp thấp hơn trong việc cung cấp truy cập đường truyền Lớp con MACcung cấp tính thứ tự truy cập vào môi trường LAN Khi nhiều trạm cùng truy cập chia sẻmôi trường truyền, để định danh mỗi trạm, lớp cho MAC định nghĩa một trường địa chỉphần cứng, gọi là địa chỉ MAC address
Trang 15Địa chỉ MAC là một con số đơn nhất đối với mỗi giao tiếp LAN (card mạng) Lớpvật lý (Physical Layer): định nghĩa các qui cách về điện, cơ, thủ tục và các đặc tả chứcnăng để kích hoạt, duy trì và dừng một liên kết vật lý giữa các hệ thống đầu cuối.
Một số các đặc điểm trong lớp vật lý này bao gồm:
tố khác Nó cũng quản lý lưu lượng trên mạng chẳng hạn như chuyển đổi gói, định tuyến,
và kiểm soát sự tắc nghẽn dữ liệu.Dữ liệu ở lớp này gọi packet hoặc datagram
1.2.1.4 Lớp vận chuyển
Lớp vận chuyển phân đoạn dữ liệu từ hệ thống máy truyền và tái thiết lập dữ liệuvào một luồng dữ liệu tại hệ thống máy nhận đảm bảo rằng việc bàn giao các thông điệpgiữa các thiết bị đáng tin cậy Dữ liệu tại lớp này gọi là segment
Lớp này thiết lập, duy trì và kết thúc các mạch ảo đảm bảo cung cấp các dịch vụsau:
- Xếp thứ tự các phân đoạn: khi một thông điệp lớn được tách thành nhiều phânđoạn nhỏ để bàn giao, lớp vận chuyển sẽ sắp xếp thứ tự các phân đoạn trước khi ráp nốicác phân đoạn thành thông điệp ban đầu
- Kiểm soát lỗi: khi có phân đoạn bị thất bại, sai hoặc trùng lắp, lớp vận chuyển sẽyêu cầu truyền lại
- Kiểm soát luồng: lớp vận chuyển dùng các tín hiệu báo nhận để xác nhận Bên gửi
sẽ không truyền đi phân đoạn dữ liệu kế tiếp nếu bên nhận chưa gởi tín hiệu xác nhậnrằng đã nhận được phân đoạn dữ liệu trước đó đầy đủ
Trang 161.2.1.5 Lớp phiên
Lớp này có chức năng thiết lập, quản lý, và kết thúc các phiên thông tin giữa haithiết bị truyền nhận Lớp phiên cung cấp các dịch vụ cho lớp trình bày Lớp Session cungcấp sự đồng bộ hóa giữa các tác vụ người dùng bằng cách đặt những điểm kiểm tra vàoluồng dữ liệu Bằng cách này, nếu mạng không hoạt động thì chỉ có dữ liệu truyền sauđiểm kiểm tra cuối cùng mới phải truyền lại Lớp này cũng thi hành kiểm soát hội thoạigiữa các quá trình giao tiếp, điều chỉnh bên nào truyền, khi nào, trong bao lâu Ví dụ như:RPC, NFS, Lớp này kết nối theo ba cách: Haft duplex,Simplex, Full-duplex
1.2.1.6 Lớp trình diễn
Lớp này chịu trách nhiệm thương lượng và xác lập dạng thức dữ liệu được trao đổi
Nó đảm bảo thông tin mà lớp ứng dụng của một hệ thống đầu cuối gởi đi, lớp ứng dụngcủa hệ thống khác có thể đọc được Lớp trình bày thông dịch giữa nhiều dạng dữ liệukhác nhau thông qua một dạng chung, đồng thời nó cũng nén và giải nén dữ liệu
1.2.1.7 Lớp ứng dụng
Lớp ứng dụng tương tác trực tiếp với người sử dụng và nó cung cấp các dịch vụmạng cho các ứng dụng của ngời sử dụng nhưng không cung cấp dịch vụ cho các lớpkhác Lớp này thiết lập khả năng liên lạc giữa những ngời sử dụng, đồng bộ và thiết lậpcác quy trình xử lý lỗi và đảm bảo tính toàn vẹn của dữ liệu
1.2.2 TCP/IP
Hình 1.4 Mô hình TCP/IP
Sự ra đời của họ giao thức TCP/IP gắn liền với sự ra đời của Internet mà tiền thân
là mạng ARPAnet (Advanced Research Projects Agency) do Bộ Quốc phòng Mỹ tạo ra.Đây là bộ giao thức được dùng rộng rãi nhất vì tính mở của nó Hai giao thức được dùng
Trang 17chủ yếu ở đây là TCP (Transmission Control Protocol) và IP (Internet Protocol) Chúng
đã nhanh chóng được đón nhận và phát triển bởi nhiều nhà nghiên cứu và các hãng côngnghiệp máy tính với mục đích xây dựng và phát triển một mạng truyền thông mở rộngkhắp thế giới mà ngày nay chúng ta gọi là Internet
TCP/IP có cấu trúc tương tự như mô hình OSI, tuy nhiên để đảm bảo tính tươngthích giữa các mạng và sự tin cậy của việc truyền thông tin trên mạng, bộ giao thứcTCP/IP được chia thành 2 phần riêng biệt: giao thức IP sử dụng cho việc kết nối mạng vàgiao thức TCP để đảm bảo việc truyền dữ liệu một cách tin cậy
1.2.2.1 Lớp ứng dụng
Tại mức cao nhất này, người sử dụng thực hiện các chương trình ứng dụng truyxuất đến các dịch vụ hiện hữu trên TCP/IP Internet Một ứng dụng tương tác với mộttrong những protocol ở mức giao vận (transport) để gửi hoặc nhận dữ liệu Mỗi chươngtrình ứng dụng chọn một kiểu giao vận mà nó cần, có thể là một dãy tuần tự từng thôngđiệp hoặc một chuỗi các byte liên tục Chương trình ứng dụng sẽ gửi dữ liệu đi dưới dạngnào đó mà nó yêu cầu đến lớp giao vận
1.2.2.2 Lớp giao vận
Nhiệm vụ cơ bản của lớp giao vận là cung cấp phương tiện liên lạc từ một chươngtrình ứng dụng này đến một chưng trình ứng dụng khác Việc thông tin liên lạc đó thườngđược gọi là end-to-end Mức chuyên trở có thể điều khiển luông thông tin Nó cũng có thểcung cấp sự giao vận có độ tin cậy, bảo đảm dữ liệu đến nơi mà không có lỗi và theo đúngthứ tự Để làm được điều đó, phần mềm protocol lớp giao vận cung cấp giao thức TCP,trong quá trình trao đổi thông tin nơi nhận sẽ gửi ngược trở lại một xác nhận (ACK) vànơi gửi sẽ truyền lại những gói dữ liệu bị mất Tuy nhiên trong những môi trường truyềndẫn tốt như cáp quang chẳng hạn thì việc xy ra lỗi là rất nhỏ Lớp giao vận có cung cấpmột giao thức khác đó là UDP
1.2.2.3 Lớp internet
Nhiệm vụ cơ bản của lớp này là xử lý việc liên lạc của các thiết bị trên mạng Nónhận được một yêu cầu để gửi gói dữ liệu từ lớp trên cùng với một định danh của máy màgói dữ liệu phía được gửi đến Nó đóng segment vào trong một packet, điền vào phần đầucủa packet, sau đó sử dụng các giao thức định tuyến để chuyển gói tin đến được đích của
Trang 18nó hoặc trạm kế tiếp Khi đó tại nơi nhận sẽ kiểm tra tính hợp lệ của chúng, và sử dụngtiếp các giao thức định tuyến để xử lý gói tin Đối với những packet được xác định thuộccùng mạng cục bộ, phần mềm Internet sẽ cắt bỏ phần đầu của packet, và chọn một trongcác giao thức lớp chuyên trở thích hợp để xử lý chúng Cuối cùng, lớp Internet gửi vànhận các thông điệp kiểm soát và xử lý lỗi ICMP.
1.2.2.4 Lớp giao tiếp mạng
Lớp thấp nhất của mô hình TCP/IP chính là lớp giao tiếp mạng, có trách nhiệmnhận các IP datagram và truyền chúng trên một mạng nhất định Người ta lại chia lớp giaotiếp mạng thành 2 lớp con là:
- Lớp vật lý: Lớp vật lý làm việc với các thiết bị vật lý, truyền tới dòng bit 0, 1 từ nigửi đến nơi nhận
- Lớp liên kết dữ liệu: Tại đây dữ liệu được tổ chức thành các khung (frame) Phầnđầu khung chứa địa chỉ và thông tin điều khiển, phần cuối khung dành cho việc phát hiệnlỗi
1.3.1 Nguyên tắc truyền thông
Để một mạng máy tính trở một môi trường truyền dữ liệu thì nó cần phải có nhữngyếu tố sau:
- Các hệ thống được liên kết với nhau theo một cấu trúc kết nối (topology) nào đó
- Việc chuyển dữ liệu từ máy tính này đến máy tính khác do mạng thực hiện thôngqua những quy định thống nhất gọi là giao thức của mạng
- Phân chia hoạt động truyền thông của hệ thống thành nhiều lớp theo các nguyêntắc nhất định
- Việc xét các module một cách độc lập với nhau cho phép giảm độ phức tạp choviệc thiết kế và cài đặt Phương pháp này được sử dụng rộng rãi trong việc xây dựngmạng và các chương trình truyền thông và được gọi là phương pháp phân tầng (layer)
1.3.2 Nguyên tắc của phương pháp phân tầng
Mỗi hệ thống thành phần trong mạng được xây dựng như một cấu trúc nhiều tầng
và đều có cấu trúc giống nhau như: số lượng tầng và chức năng của mỗi tầng
Trang 19Các tầng nằm chồng lên nhau, dữ liệu được chỉ trao đổi trực tiếp giữa hai tầng kềnhau từ tầng trên xuống tầng dưới và ngược lại.
Cùng với việc xác định chức năng của mỗi tầng chúng ta phải xác định mối quan
hệ giữa hai tầng kề nhau Dữ liệu được truyền đi từ tầng cao nhất của hệ thống truyền lầnlượt đến tầng thấp nhất sau đó truyền qua đường nối vật lý dưới dạng các bit tới tầng thấpnhất của hệ thống nhận, sau đó dữ liệu được truyền ngược lên lần lượt đến tầng cao nhấtcủa hệ thống nhận
Chỉ có hai tầng thấp nhất có liên kết vật lý với nhau còn các tầng trên cùng thứ tưchỉ có các liên kết logic với nhau Liên kết logic của một tầng được thực hiện thông quacác tầng dưới và phải tuân theo những quy định chặt chẽ, các quy định đó được gọi giaothức của tầng
Hình 1.5 Mô hình truyền thông đơn giản 3 tầngTrong kiến trúc phân tầng, một số mô hình được phát triển
o Mô hình tham chiếu kết nối các hệ thống mở OSI
o Mô hình Internet : TCP/IP
Xét trên phương diện lập trình với máy tính, ta xét mô hình phân tầng thu gọn:Nói chung trong truyền thông có sự tham gia của các thành phần: các chương trình ứngdụng, các chương trình truyền thông, các máy tính và các mạng Các chương trình ứngdụng là các chương trình của người sử dụng được thực hiện trên máy tính và có thể thamgia vào quá trình trao đổi thông tin giữa hai máy tính Trên một máy tính với hệ điều hành
đa nhiệm (như Windows, UNIX) thường được thực hiện đồng thời nhiều ứng dụng trong
đó có những ứng dụng liên quan đến mạng và các ứng dụng khác Các máy tính được nối
Trang 20với mạng và các dữ liệu được trao đổi thông qua mạng từ máy tính này đến máy tínhkhác.
Việc gửi dữ liệu được thực hiện giữa một ứng dụng với một ứng dụng khác trênhai máy tính khác nhau thông qua mạng được thực hiện như sau: Ứng dụng gửi chuyển
dữ liệu cho chương trình truyền thông trên máy tính của nó, chương trình truyền thông sẽgửi chúng tới máy tính nhận Chương trình truyền thông trên máy nhận sẽ tiếp nhận dữliệu, kiểm tra nó trước khi chuyển giao cho ứng dụng đang chờ dữ liệu
Với mô hình truyền thông đơn giản người ta chia chương trình truyền thông thành
ba tầng không phụ thuộc vào nhau là: tầng ứng dụng, tầng giao vận và tầng tiếp cậnmạng
Tầng tiếp cận mạng liên quan tới việc trao đổi dữ liệu giữa máy tính và mạng mà
nó được nối vào Để dữ liệu đến được đích máy tính gửi cần phải chuyển địa chỉ của máytính nhận cho mạng và qua đó mạng sẽ chuyển các thông tin tới đích Ngoài ra máy gửi cóthể sử dụng một số phục vụ khác nhau mà mạng cung cấp như gửi ưu tiên, tốc độ cao.Trong tầng này có thể có nhiều phần mềm
Tầng giao vận: thực hiện quá trình truyền thông end-to-end giữa 2 ứng dụngkhông liên quan tới mạng và nằm ở trên tầng tiếp cận mạng Tầng truyền dữ liệu khôngquan tâm tới bản chất các ứng dụng đang trao đổi dữ liệu mà quan tâm tới làm sao chocác dữ liệu được trao đổi một cách an toàn Tầng truyền dữ liệu đảm bảo các dữ liệu đếnđược đích và đến theo đúng thứ tự mà chúng được xử lý Trong tầng truyền dữ liệu người
ta phải có những cơ chế nhằm đảm bảo sự chính xác đó và rõ ràng các cơ chế này khôngphụ thuộc vào bản chất của từng ứng dụng và chúng sẽ phục vụ cho tất cả các ứng dụng
Tầng ứng dụng: sẽ chứa các module phục vụ cho tất cả những ứng dụng của người
sử dụng Với các loại ứng dụng khác nhau (như là truyền file, truyền thư mục) cần cácmodule khác nhau
Hình 1.6 Trao đổi giữa các tầng
Trang 211.3.3 Địa chỉ IP
Mỗi địa chỉ IP có độ dài 32 bits (đối với IP4) được tách thành 4 vùng (mỗi vùng 1byte), có thể được biểu thị dưới dạng thập phân, bát phân, thập lục phân hoặc nhị phân.Cách viết phổ biến nhất là dùng ký pháp thập phân có dấu chấm để tách giữa các vùng.Địa chỉ IP là để định danh duy nhất cho một host bất kỳ trên liên mạng Khuôn dạng địachỉ IP: mỗi host trên mạng TCP/IP được định danh duy nhất bởi một địa chỉ có khuôndạng <Network Number, Host number>
Do tổ chức và độ lớn của các mạng con của liên mạng có thể khác nhau, người tachia các địa chỉ IP thành 5 lớp ký hiệu A,B,C, D, E Các bit đầu tiên của byte đầu tiênđược dùng để định danh lớp địa chỉ (0-lớp A; 10 lớp B; 110 lớp C; 1110 lớp D; 11110 lớpE).Subneting
Trong nhiều trường hợp, một mạng có thể được chia thành nhiều mạngcon(subnet), lúc đó có thể đưa thêm các vùng subnetid để định danh các mạng con Vùngsubnetid được lấy từ vùng hostid, cụ thể đối với 3 lớp A, B, C
1.4.1 Theo khoảng cách địa lý
Phân làm 4 loại: mạng cục bộ, mạng đô thị, mạng diện rộng, mạng toàn cầu
- Mạng cục bộ (Local Area Networks - LAN): cài đặt trong phạm vi tương đối hẹp,khoảng cách lớn nhất giữa các máy tính nối mạng là vài chục km
- Mạng đô thị (Metropolitan Area Networks - MAN): cài đặt trong phạm vi một đôthị, một trung tâm kinh tế xã hội, có bán kính nhỏ hơn 100 km
- Mạng diện rộng (Wide Area Networks - WAN): phạm vi của mạng có thể vượt quabiên giới quốc gia và thậm chí cả lục địa
- Mạng toàn cầu (Global Area Networks - GAN): phạm vi rộng khắp các lục địa
1.4.2 Theo kỹ thuật chuyển mạch
Phân làm 3 loại: mạng chuyển mạch kênh, mạng chuyển mạch thông báo, mạngchuyển mạch gói
1.4.3 Theo cơ chế hoạt động
Cơ chế hoạt động dựa theo mô hình chuẩn OSI và TCP/IP thông qua các lớp
Trang 22CHƯƠNG 2 : TỔNG QUAN VỀ PHẦN MỀM NGUỒN MỞ
…và các sản phẩm khác
Năm 1988 các nỗ lực ủng hộ PMMNM (Phần mềm mã nguồn mở) đã hình thànhOSI (Open Source Initiative) OSI nỗ lực để tạo ra các khung pháp lý, cung cấp các thôngtin cần thiết cho người sử dụng, các nhà phát triển, các công ty dịch vụ có thể phát triển,khai thác, cung cấp dịch vụ, kinh doanh PMMNM
Mặc dù có một quá trình phát triển khá lâu dài, tuy nhiên trên thực tế phải đến năm
2008 mới có những quy định chặt chẽ của pháp luật, một số nước bảo hộ PMMNM Ví dụkhi bạn vi phạm bản quyền của phần mềm, tất cả các quyền được gán trong bản quyền lậptức trở thành vô hiệu Quy định này không tác động nhiều đến phần mềm sở hữu, nhưngvới PMMNM, khi các quyền trở thành vô hiệu hầu như chắc chắn người sử dụng sẽ viphạm các sỡ hữu trí tuệ
Trang 23Mã nguồn mở, tên tiếng anh là Open Source, là thuật ngữ chỉ các phần mềm côngkhai mã nguồn Người dùng không phải trả một khoản chi phí nào, hơn thế nữa họ cóquyền xem, sửa đổi và cải tiến, nâng cấp theo một số nguyên tắc chung quy định tronggiấy phép phần mềm nguồn mở GPL (General Public License) Ông tổ của mã nguồn mở
là Richard Stallman, người đã xây dựng dự án GNU, và cho ra giấy phép mã nguồn mởGPL, hai nền tảng then chốt cho sự phát triển của mã nguồn mở
Từ hai định nghĩa trên ta có thể hiểu được, phần mềm nguồn mở là gì Phần mềmnguồn mở là phần mềm được cung cấp dưới dạng mã và nguồn, không chỉ miễn phí vềgiá mua mà chủ yếu là miễn phí về bản quyền Người dùng có quyền sửa đổi, cải tiến,phát triển, nâng cấp theo một số nguyên tắc chung quy định trong giấy phép phần mềmnguồn mở (ví dụ như GPL – General Public License) mà không cần xin phép ai, điều mà
họ không được phép làm với phần mềm nguồn đóng (tức là phần mềm thương mại)
2.1.1.2 Các thao tác trên phần mềm mã nguồn mở
Trên phần mềm, có thể thực hiện các thao tác:
Sản xuất phần mềm: Nghiên cứu nhu cầu của người sử dụng, thiết kế, coding,
compiling và releasing
Cài đặt phần mềm: Để có thể sử dụng, phần mềm cần được cài đặt Cài đặt là
thao tác ghi các mã cần thiết cho việc thực hiện môi trường vào bộ nhớ thích hợp đểngười sử dụng có thể sử dụng
Sử dụng phần mềm: Cài đặt và sử dụng phần mềm trên máy tính Máy tính này
có thể là máy tính cá nhân, máy chủ, máy tính công cộng,…Tùy theo từng bối cảnh việc
sử dụng phần mềm có thể có các ràng buộc khác nhau (cài trên một máy, cài trên nhiềumáy, cài trên nhiều CPU,…) Các phần mềm có bản quyền thường bảo vệ việc sử dụngphần mềm bằng serial key, active code và có những trường hợp bằng khóa vật lý
Thay đổi phần mềm: Trong quá trình sử dụng có thể xuất hiện nhu cầu thay đổi.
Việc thay đổi này có thể được tiến hành bởi nhà tác giả sản xuất phần mềm, hoặc có thể
do một người khác Để thay đổi tính năng phần mềm cần có mã nguồn của phần mềm.Nếu không có mã nguồn có thể dịch ngược để thu mã nguồn từ mã thực hiện Mã nguồnphần mềm có thể được phân phối theo nhiều kênh khác nhau (mạng, lưu trữ, truyền tay,lây nhiễm)
Trang 24Các thao tác khác: Phân tích ngược mã nguồn, phân tích giao diện, mô phỏng,
thực hiện luân phiên,…Phần mềm được quản lý bởi các quy tắc về bản quyền và sở hữutrí tuệ, cho phép thực hiện hoặc không thực hiện các thao tác nói trên trong các điều kiệnkhác nhau
Bản quyền phần mềm: Là tài liệu quy định việc thực hiện các thao tác trên phần
mềm Có thể có các bản quyền phần mềm sở hữu, bản quyền cho phần mềm miễn phí /phần mềm chia sẽ, bản quyền cho phần mềm tự do và mã nguồn mở
2.2.1 Lịch sử Linux
Linux là hệ điều hành mô phỏng Unix, được xây dựng trên phần nhân (kernel), vàgói phần mềm mã nguồn mở Linux được công bố dưới bản quyền của GPL (GeneralPublic License)
Unix ra đời giữa những năm 1960, ban đầu được phát triển bởi AT&T, sau đóđược đăng ký thương mại và phát triển theo nhiều dòng dưới cái tên khác nhau Năm
1990 xu hướng phát triển phần mềm nguồn mở xuất hiện và được thúc đẩy bởi tổ chứcGNU Một số license về mã nguồn mở ra đời ví dụ BSD, GPL Năm 1991, Linus Torvalviết thêm phiên bản nhân v0.01 (kernel) đầu tiên của Linux đưa lên các BBS, nhóm ngườidùng để mọi người cùng sử dụng và phát triển Năm 1996, nhân v1.0 chính thức công bố
và ngày càng nhân được sự quan tâm của người dùng Năm 1999, phiên bản nhân v2.2mang nhiều đặc tính ưu việt và giúp cho Linux bắt đầu trở thành đối thủ cạnh tranh đáng
kể của MSWindows trên môi trường Server Năm 2000 phiên bản nhân v2.4 hỗ trợ nhiềuthiết bị mới (đa xử lý tới 32 chip, USB, RAM trên 2GB…) bắt đầu đặt chân vào thịtrường máy chủ cao cấp Quá trình phát triển Linux như sau:
Trang 25Giống như Unix, Linux gồm 3 thành phần chính: kernel, shell và cấu trúc file.
Kernel là chương trình nhân, chạy các chương trình và quản lý các thiết bị phần
cứng như đĩa và máy in
Shell (môi trường) cung cấp giao diện cho người sử dụng, còn được mô tả như một
bộ biên dịch Shell nhận các câu lệnh từ người sử dụng, và gửi các câu lệnh đó cho nhânthực hiện Nhiều shell được phát triển, linux cung cấp một số shell như: desktops,windows manager, và môi trường dòng lệnh Hiện nay chủ yếu tồn tại 3 shell: Bourne,Korn và C Shell Bourne được phát triển tại phòng thí nghiệm, Bell và C Shell đượcphát triển cho phiên bản BSD của Unix, Korn shell là phiên bản cải tiến của BourneShell Những phiên bản hiện nay của Unix, bao gồm cả Linux, tích hợp cả 3 shell trên
Cấu trúc file quy định cách lưu trữ file trên đĩa File được nhóm trong các thư mục.
Mỗi thư mục có thể chứa file và các thư mục con khác Một số thư mục là các thư mụcchuẩn do hệ thống sử dụng Người dùng có thể tạo các file/ thư mục của riêng mìnhcũng như dịch chuyển các file giữa các thư mục đó Hơn nữa, với Linux người dùng cóthể thiết lập quyền truy nhập file/ thư mục, cho phép hay hạn chế một người dùng hoặcmột nhóm truy cập file Các thư mục trong Linux được tổ chức theo cấu trúc cây, bắtđầu bằng thư mục gốc (root) Các thư mục khác được phân nhánh từ thư mục này
Kernel, shell và cấu trúc file cấu thành nên cấu trúc hệ điều hành Với những thànhphần trên người dùng có thể chạy chương trình, quản lý file, và tương tác với hệ thống
2.2.2 Giao tiếp trên môi trường Linux
Terminal: Khái niệm Terminal xuất hiện từ xa xưa khi các hệ thống máy tính rất
lớn, người sử dụng không tương tác trực tiếp với hệ thống mà thông qua các Terminal ở
xa Các hệ thống Terminal này gồm màn hình và bàn phím, ngày nay do kích thước bé
đi nên các Terminal này chính là máy tính của người sử dụng
Console: Ngoài ra hệ thống Linux nói chung hay các máy chủ dịch vụ của các hệ
điều hành khác nói riêng đều cung cấp cho người quản trị một giao diện Terminal đặcbiệt gọi là Console Trước kia console tồn tại dưới dạng một cổng giao tiếp riêng biệt,còn ngày nay dưới dạng một Console ảo cho phép mở cùng lúc nhiều phiên làm việctrên một máy tính
Trang 26Trình soạn thảo vi: Chương trình vi là một chương trình soạn thảo mạnh mà gần
như chắc chắn được tìm thấy trên tất cả các hệ điều hành họ Linux, bởi kích thước vàkhả năng của vi không đòi hỏi nhiều tài nguyên, thêm vào đó là chức năng soạn thảo cơbản, vi có thể tìm kiếm, thay thế, kết nối các file và nó có ngôn ngữ macro của chính nó,cũng như đặc điểm bổ sung
Có hai chế độ trong vi:
- Chế độ thứ nhất là chế độ input: Trong chế độ này, văn bản được đưa vào trong tàiliệu, bạn có thể chèn và bổ sung văn bản
- Chế độ thứ hai là chế độ dòng lệnh: Khi ở chế độ này, bạn có thể dịch chuyển trêntài liệu, trộn các dòng, tìm kiếm…Bạn có thể thực hiện tất cả các chức năng của vi từ chế
độ dòng lệnh, ngoại trừ việc nhập văn bản
Tiện ích MC (Midnight Commander): Trong thời kỳ của DOS trước Windows, việc
định hướng các tập tin thông qua hệ thống menu và các chương trình quản lý bắt đầuphát triển mạnh, cho dù chúng chỉ dựa trên chế độ text Linux cũng có một chương trìnhtiện ích với chức năng tương tự như vậy gọi là Midnight Commander Bạn không phảimất công tìm kiếm MC, phần lớn các nhà phân phối Linux đều cung cấp kèm theo HĐH
và nó được cài trong /usr/bin/mc Chương trình chạy ở hai chế độ textmode và đồ họa
MC có một số tính năng mà DOS không có Bạn có thể thay đổi quyền sở hữu tập tin vàxem chi tiết về quyền truy cập tập tin MC còn có khả năng quản lý quy trình, cho phépbạn xem những quá trình đang được thực hiện ở chế độ nền, và bạn có thể dừng chúng,khởi động lại hoặc tắt chúng hoàn toàn
2.2.3 Giới thiệu hệ thống tập tin và thư mục
Các hệ thống máy tính sử dụng thiết bị lưu trữ ngoài để lưu trữ thông tin một cáchbền vững Các thiết bị lưu trữ quản lý không gian bộ nhớ ngoài theo từng khối dữ liệu.Giữa các khối dữ liệu chỉ liên quan về mặt vật lý, không có liên quan gì về mặt ngữ nghĩa
Để có thể sử dụng các khối dữ liệu này một cách thuận tiện, các khối dữ liệu có chungngữ nghĩa, có chung mục đích sử dụng, được gộp lại với nhau và được quản lý bởi mộtkhối dữ liệu điều khiển Các khối dữ liệu gộp lại như vậy gọi là một tệp (file) Khi người
sử dụng có nhiều tệp, để có thể quản lý các tệp dễ dàng hơn, các tệp được gộp lại vớinhau theo yêu cầu của người sử dụng, bổ sung thêm một tệp chứa danh mục và vị trí của
Trang 27các tệp được gộp Tệp chứa danh mục này được gọi là tệp thư mục Về phần mình, tệp thưmục cũng có thể được gộp vào với các tệp, khác để tạo thành thư mục
Với cách nhóm tệp như vậy, trong hệ thống sẽ có 2 loại tệp cơ bản:
- Tệp thông thường chỉ chứa dữ liệu
- Tệp thư mục chỉ chứa danh mục các tệp và các thư mục con nằm trong thư mục đó.Các tệp và các thư mục kết hợp với nhau tạo ra một hoặc nhiều cây thư mục, trong
đó có các tệp thông thường là các nút lá Nút gốc của các cây là các điểm cố định để từ
đó có thể truy cập được nút lá trong cây Ở dưới HĐH Linux, các tệp và thư mục tạothành một cây duy nhất có thư mục gốc ký hiệu là / - (thư mục gốc) Các thư mục conthường gặp của thư mục gốc là các thư mục:
- /bin: thư mục tệp chương trình cơ bản
- /boot: thư mục chứa hạt nhân của HĐH
- /etc: thư mục chứa tệp cấu hình
- /dev: thư mục các tệp thiết bị
- /home: thư mục chứa dữ liệu người sử dụng
- /lib: thư viện hệ thống
- /usr: thư muc ứng dụng
- /var: thư mục dữ liệu cập nhật
- /proc: thư mục chứa các dữ liệu của nhân hệ điều hành và BIOS
Các tệp thư mục lưu trữ các thư mục con và tệp Các thư mục con và tệp đều đượcđặt tên Giống như trong HĐH Windows, Linux cho phép tên tệp có thể dài đến 255 ký
tự, có thể bao gồm các ký tự đặt biệt
Để truy cập được vào các thư mục và tệp, xuất phát từ các nút gốc truy cập vào cácthư mục con cho đến khi đến được tệp cần thiết Tập hợp tên của các thư mục con từ nútgốc đến tệp cần truy cập, phân cách các tên bằng dấu /, gọi là đường dẫn tuyệt đối đếntệp Trong mọi trường hợp, luôn luôn có thể dùng đường dẫn tuyệt đối để tham chiếu tớitệp
Khi người sử dụng truy cập vào hệ thống hoặc khi các chương trình đang thực hiện,một thư mục được sử dụng để tham chiếu tới tất cả các tệp và thư mục khác trong hệ
Trang 28thống Với người sử dụng đó thường là thư mục /home Với chương trình, đó thường làthư mục gọi câu lệnh thực hiện, thư mục này được gọi là thư mục làm việc hiện tại.
Trong một thư mục luôn luôn có 2 thư mục đặt biệt: / để biểu diễn thư mục hiện tại
và / biểu diễn thư mục cha của thư mục hiện tại
Trong nhiều trường hợp, sẽ hiệu quả hơn nếu truy cập vào một tệp thông qua đường
đi trong cây từ thư mục hiện tại đến tệp cần truy cập bằng cách sử dụng / và / Mộtđường dẫn như vậy sẽ phụ thuộc vào thư mục làm việc hiện tại, được gọi là đường dẫntương đối
2.2.4 Phân loại phần mềm nguồn mở
2.2.4.1 Theo phương thức hoạt động
Phần mềm hệ thống: dùng để vận hành máy tính và các phần cứng máy tính, ví dụnhư các hệ điều hành máy tính Windows XP, Linux, Unix, các thư viện động DLL(Dynamic Link Library) của hệ điều hành, các trình điều khiển (driver), phần sụnfirmware và BIOS
Phần mềm ứng dụng: để người dùng có thể hoàn thành một hay nhiều công việcnào đó, ví dụ như phần mềm văn phòng, phần mềm doanh nghiệp, phần mềm quản lýnguồn nhân lực
Phần mềm chuyển dịch mã bao gồm trình biên dịch và thông dịch: các loại chươngtrình này sẽ đọc các câu lệnh từ các mã nguồn được viết bởi lập trình viên bằng một ngônngữ lập trình và dịch nó sang ngôn ngữ máy mà máy tính có thể hiểu được
2.2.4.2 Theo khả năng ứng dụng
Những phần mềm không phụ thuộc, nó có thể được bán cho bất kỳ khách hàngnào trên thị trường tự do Ví dụ phần mềm về cơ sở dữ liệu Oracle, Photoshop…Nhữngphần mềm được viết theo đơn đặt hàng hay hợp đồng của một khách hàng cụ thể nào đó(một công ty, bệnh viện, trường học…)
2.2.4.3 Theo điều kiện sử dụng
Phần mềm mã nguồn mở, FreeWare,ShareWare
2.2.4.4 Theo hiệu quả xã hội
Phần mềm độc hại, Phần mềm giáo dục
Trang 29sở hữu thường rất chặt chẽ về quyền phân phối và quản lý, hạn chế quyền thay đổi và cảitiến và hầu như không cho phép việc phân tích ngược mã Ví dụ: MS Office, Photoshop…
2.2.5.3 Phần mềm chia sẽ
Phần mềm cung cấp miễn phí với một số hạn chế chức năng hoặc mức độ thuậntiện Người dùng chỉ có đầy đủ chức năng khi trả tiền mua giấy phép