147
CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ THÔNG TIN SỐ 67/2006/QH11 NGÀY 29 THÁNG 6 NĂM 2006 Chương I: NHỮNG QUY ĐỊNH CHUNG Điều 1. Phạm vi điều chỉnh Luật này quy định về hoạt động ứng dụng và phát triển công nghệ thông tin, các biện pháp bảo đảm ứng dụng và phát triển công nghệ thông tin, quyền và nghĩa vụ của cơ quan, tổ chức, cá nhân (sau đây gọi chung là tổ chức, cá nhân) tham gia hoạt động ứng dụng và phát triển công nghệ thông tin. Điều 2. Đối tượng áp dụng Luật này áp dụng đối với tổ chức, cá nhân Việt Nam, tổ chức, cá nhân nước ngoài tham gia hoạt động ứng dụng và phát triển công nghệ thông tin tại Việt Nam. Điều 3. Áp dụng Luật công nghệ thông tin 1. Trường hợp có sự khác nhau giữa quy định của Luật công nghệ thông tin với quy định của luật khác về cùng một vấn đề liên quan đến hoạt động ứng dụng và phát triển công nghệ thông tin thì áp dụng quy định của Luật công nghệ thông tin. 2. Trường hợp điều ước quốc tế mà Cộng hòa xã hội chủ nghĩa Việt Nam là thành viên có quy định khác với quy định của Luật này thì áp dụng quy định của điều ước quốc tế đó. Điều 4. Giải thích từ ngữ Trong Luật này, các từ ngữ dưới đây được hiểu như sau: 1. Công nghệ thông tin là tập hợp các phương pháp khoa học, công nghệ và công cụ kỹ thuật hiện đại để sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi thông tin số. 2. Thông tin số là thông tin được tạo lập bằng phương pháp dùng tín hiệu số. 3. Môi trường mạng là môi trường trong đó thông tin được cung cấp, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi thông qua cơ sở hạ tầng thông tin. 4. Cơ sở hạ tầng thông tin là hệ thống trang thiết bị phục vụ cho việc sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi thông tin số, bao gồm mạng viễn thông, mạng Internet, mạng máy tính và cơ sở dữ liệu. 5. Ứng dụng công nghệ thông tin là việc sử dụng công nghệ thông tin vào các hoạt động thuộc lĩnh vực kinh tế - xã hội, đối ngoại, quốc phòng, an ninh và các

CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

  • Upload
    others

  • View
    35

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN

1. LUẬT CÔNG NGHỆ THÔNG TIN

SỐ 67/2006/QH11 NGÀY 29 THÁNG 6 NĂM 2006

Chương I: NHỮNG QUY ĐỊNH CHUNG

Điều 1. Phạm vi điều chỉnh

Luật này quy định về hoạt động ứng dụng và phát triển công nghệ thông tin, các biện pháp bảo đảm ứng dụng và phát triển công nghệ thông tin, quyền và nghĩa vụ của cơ quan, tổ chức, cá nhân (sau đây gọi chung là tổ chức, cá nhân) tham gia hoạt động ứng dụng và phát triển công nghệ thông tin.

Điều 2. Đối tượng áp dụng

Luật này áp dụng đối với tổ chức, cá nhân Việt Nam, tổ chức, cá nhân nước ngoài tham gia hoạt động ứng dụng và phát triển công nghệ thông tin tại Việt Nam.

Điều 3. Áp dụng Luật công nghệ thông tin

1. Trường hợp có sự khác nhau giữa quy định của Luật công nghệ thông tin với quy định của luật khác về cùng một vấn đề liên quan đến hoạt động ứng dụng vàphát triển công nghệ thông tin thì áp dụng quy định của Luật công nghệ thông tin.

2. Trường hợp điều ước quốc tế mà Cộng hòa xã hội chủ nghĩa Việt Nam là thành viên có quy định khác với quy định của Luật này thì áp dụng quy định củađiều ước quốc tế đó.

Điều 4. Giải thích từ ngữ

Trong Luật này, các từ ngữ dưới đây được hiểu như sau:

1. Công nghệ thông tin là tập hợp các phương pháp khoa học, công nghệ và công cụ kỹ thuật hiện đại để sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và traođổi thông tin số.

2. Thông tin số là thông tin được tạo lập bằng phương pháp dùng tín hiệu số.

3. Môi trường mạng là môi trường trong đó thông tin được cung cấp, truyền đưa,thu thập, xử lý, lưu trữ và trao đổi thông qua cơ sở hạ tầng thông tin.

4. Cơ sở hạ tầng thông tin là hệ thống trang thiết bị phục vụ cho việc sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi thông tin số, bao gồm mạng viễn thông, mạng Internet, mạng máy tính và cơ sở dữ liệu.

5. Ứng dụng công nghệ thông tin là việc sử dụng công nghệ thông tin vào các hoạt động thuộc lĩnh vực kinh tế - xã hội, đối ngoại, quốc phòng, an ninh và các

Page 2: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

2

hoạt động khác nhằm nâng cao năng suất, chất lượng, hiệu quả của các hoạt động này.

6. Phát triển công nghệ thông tin là hoạt động nghiên cứu - phát triển liên quan đến quá trình sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi thông tin số; phát triển nguồn nhân lực công nghệ thông tin; phát triển công nghiệp công nghệ thông tin và phát triển dịch vụ công nghệ thông tin.

7. Khoảng cách số là sự chênh lệch về điều kiện, khả năng sử dụng máy tính và cơ sở hạ tầng thông tin để truy nhập các nguồn thông tin, tri thức.

8. Đầu tư mạo hiểm trong lĩnh vực công nghệ thông tin là đầu tư cho doanh nghiệp hoạt động trong lĩnh vực đó có triển vọng đem lại lợi nhuận lớn nhưng có rủi ro cao.

9. Công nghiệp công nghệ thông tin là ngành kinh tế - kỹ thuật công nghệ cao sản xuất và cung cấp sản phẩm công nghệ thông tin, bao gồm sản phẩm phần cứng, phần mềm và nội dung thông tin số.

10. Phần cứng là sản phẩm thiết bị số hoàn chỉnh; cụm linh kiện; linh kiện; bộ phận của thiết bị số, cụm linh kiện, linh kiện.

11. Thiết bị số là thiết bị điện tử, máy tính, viễn thông, truyền dẫn, thu phát sóngvô tuyến điện và thiết bị tích hợp khác được sử dụng để sản xuất, truyền đưa, thuthập, xử lý, lưu trữ và trao đổi thông tin số.

12. Phần mềm là chương trình máy tính đ?ược mô tả bằng hệ thống ký hiệu, mã hoặc ngôn ngữ để điều khiển thiết bị số thực hiện chức năng nhất định.

13. Mã nguồn là sản phẩm trước biên dịch của một phần mềm, chưa có khả năngđiều khiển thiết bị số.

14. Mã máy là sản phẩm sau biên dịch của một phần mềm, có khả năng điều khiển thiết bị số.

15. Thư rác là thư điện tử, tin nhắn được gửi đến người nhận mà người nhận đó không mong muốn hoặc không có trách nhiệm phải tiếp nhận theo quy định của pháp luật.

16. Vi rút máy tính là chương trình máy tính có khả năng lây lan, gây ra hoạt động không bình thường cho thiết bị số hoặc sao chép, sửa đổi, xóa bỏ thông tin lưu trữ trong thiết bị số.

17. Trang thông tin điện tử (Website) là trang thông tin hoặc một tập hợp trang thông tin trên môi trường mạng phục vụ cho việc cung cấp, trao đổi thông tin.

18. Số hóa là việc biến đổi các loại hình thông tin sang thông tin số.

Điều 5. Chính sách của Nhà nước về ứng dụng và phát triển công nghệ thông tin

1. Ưu tiên ứng dụng và phát triển công nghệ thông tin trong chiến lược phát triển kinh tế - xã hội và sự nghiệp công nghiệp hóa, hiện đại hóa đất nước.

Page 3: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

3

2. Tạo điều kiện để tổ chức, cá nhân hoạt động ứng dụng và phát triển công nghệthông tin đáp ứng yêu cầu phát triển kinh tế - xã hội, đối ngoại, quốc phòng, an ninh; thúc đẩy công nghiệp công nghệ thông tin phát triển thành ngành kinh tế trọng điểm, đáp ứng nhu cầu thị trường nội địa và xuất khẩu.

3. Khuyến khích đầu tư cho lĩnh vực công nghệ thông tin.

4. Ưu tiên dành một khoản ngân sách nhà nước để ứng dụng công nghệ thông tintrong một số lĩnh vực thiết yếu, tạo lập nền công nghiệp công nghệ thông tin và phát triển nguồn nhân lực công nghệ thông tin.

5. Tạo điều kiện thuận lợi để phát triển cơ sở hạ tầng thông tin quốc gia.

6. Có chính sách ưu đãi để tổ chức, cá nhân có hoạt động ứng dụng và phát triển công nghệ thông tin đối với nông nghiệp; nông thôn, vùng sâu, vùng xa, biên giới, hải đảo; người dân tộc thiểu số, người tàn tật, người có hoàn cảnh khó khăn.

7. Bảo đảm quyền và lợi ích hợp pháp của tổ chức, cá nhân ứng dụng và phát triển công nghệ thông tin.

8. Tăng cường giao lưu và hợp tác quốc tế; khuyến khích hợp tác với tổ chức, cánhân Việt Nam ở nước ngoài trong lĩnh vực công nghệ thông tin.

Điều 6. Nội dung quản lý nhà nước về công nghệ thông tin

1. Xây dựng, tổ chức thực hiện chiến lược, quy hoạch, kế hoạch, chính sách ứng dụng và phát triển công nghệ thông tin.

2. Xây dựng, ban hành, tuyên truyền, phổ biến, tổ chức thực hiện văn bản quy phạm pháp luật, tiêu chuẩn quốc gia, quy chuẩn kỹ thuật trong lĩnh vực công nghệ thông tin.

3. Quản lý an toàn, an ninh thông tin trong hoạt động ứng dụng công nghệ thôngtin.

4. Tổ chức quản lý và sử dụng tài nguyên thông tin, cơ sở dữ liệu quốc gia.

5. Quản lý và tạo điều kiện thúc đẩy công tác hợp tác quốc tế về công nghệ thông tin.

6. Quản lý, đào tạo, bồi dưỡng và phát triển nguồn nhân lực công nghệ thông tin.

7. Xây dựng cơ chế, chính sách và các quy định liên quan đến sản phẩm, dịch vụcông ích trong lĩnh vực công nghệ thông tin.

8. Xây dựng cơ chế, chính sách và các quy định về việc huy động nguồn lực công nghệ thông tin phục vụ quốc phòng, an ninh và các trường hợp khẩn cấp quy định tại Điều 14 của Luật này.

9. Quản lý thống kê về công nghệ thông tin.

10. Thanh tra, kiểm tra, giải quyết khiếu nại, tố cáo và xử lý vi phạm trong lĩnh vực công nghệ thông tin.

Page 4: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

4

Điều 7. Trách nhiệm quản lý nhà nước về công nghệ thông tin

1. Chính phủ thống nhất quản lý nhà nước về công nghệ thông tin.

2. Bộ Bưu chính, Viễn thông chịu trách nhiệm trước Chính phủ trong việc chủ trì, phối hợp với bộ, cơ quan ngang bộ có liên quan thực hiện quản lý nhà nước về công nghệ thông tin.

3. Bộ, cơ quan ngang bộ trong phạm vi nhiệm vụ, quyền hạn của mình có trách nhiệm chủ trì, phối hợp với Bộ Bưu chính, Viễn thông thực hiện quản lý nhà nước về công nghệ thông tin theo phân công của Chính phủ.

4. Ủy ban nhân dân tỉnh, thành phố trực thuộc trung ương trong phạm vi nhiệm vụ, quyền hạn của mình thực hiện quản lý nhà nước về công nghệ thông tin tại địa phương.

5. Việc tổ chức thực hiện ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước do Chính phủ quy định.

Điều 8. Quyền của tổ chức, cá nhân tham gia hoạt động ứng dụng và phát triển công nghệ thông tin

1. Tổ chức, cá nhân tham gia hoạt động ứng dụng công nghệ thông tin có các quyền sau đây:

a) Tìm kiếm, trao đổi, sử dụng thông tin trên môi trường mạng, trừ thông tin có nội dung quy định tại khoản 2 Điều 12 của Luật này;

b) Yêu cầu khôi phục thông tin của mình hoặc khôi phục khả năng truy nhập đếnnguồn thông tin của mình trong trường hợp nội dung thông tin đó không vi phạm quy định tại khoản 2 Điều 12 của Luật này;

c) Yêu cầu cơ quan nhà nước có thẩm quyền giải quyết theo quy định của pháp luật trong trường hợp bị từ chối việc khôi phục thông tin hoặc khôi phục khả năng truy nhập đến nguồn thông tin đó;

d) Phân phát các địa chỉ liên lạc có trên môi trường mạng khi có sự đồng ý của chủ sở hữu địa chỉ liên lạc đó;

đ) Từ chối cung cấp hoặc nhận trên môi trường mạng sản phẩm, dịch vụ trái với quy định của pháp luật và phải chịu trách nhiệm về việc đó.

2. Tổ chức, cá nhân tham gia phát triển công nghệ thông tin có các quyền sau đây:

a) Nghiên cứu và phát triển sản phẩm công nghệ thông tin;

b) Sản xuất sản phẩm công nghệ thông tin; số hóa, duy trì và làm tăng giá trị cácnguồn tài nguyên thông tin.

3. Cơ quan nhà nước có quyền từ chối nhận thông tin trên môi trường mạng nếu độ tin cậy và bí mật của thông tin đó được truyền đưa qua môi trường mạng không được bảo đảm.

Điều 9. Trách nhiệm của tổ chức, cá nhân tham gia hoạt động ứng dụng và

Page 5: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

5

phát triển công nghệ thông tin

1. Tổ chức, cá nhân tham gia hoạt động ứng dụng công nghệ thông tin phải chịu trách nhiệm về nội dung thông tin số của mình trên môi trường mạng.

2. Tổ chức, cá nhân khi hoạt động kinh doanh trên môi trường mạng phải thông báo công khai trên môi trường mạng những thông tin có liên quan, bao gồm:

a. Tên, địa chỉ địa lý, số điện thoại, địa chỉ thư điện tử;

b. Thông tin về quyết định thành lập, giấy phép hoạt động hoặc giấy chứng nhậnđăng ký kinh doanh (nếu có);

c. Tên cơ quan quản lý nhà cung cấp (nếu có);

d. Thông tin về giá, thuế, chi phí vận chuyển (nếu có) của hàng hóa, dịch vụ.

3. Tổ chức, cá nhân tham gia phát triển công nghệ thông tin có trách nhiệm sau đây:

a) Bảo đảm tính trung thực của kết quả nghiên cứu - phát triển;

b) Bảo đảm quyền và lợi ích hợp pháp của chủ sở hữu cơ sở dữ liệu và không gây cản trở cho việc sử dụng cơ sở dữ liệu đó khi thực hiện hành vi tái sản xuất, phân phối, quảng bá, truyền đưa, cung cấp nội dung hợp thành cơ sở dữ liệu đó.

4. Khi hoạt động trên môi trường mạng, cơ quan nhà nước có trách nhiệm sau đây:

a) Thông báo trên phương tiện thông tin đại chúng về các hoạt động thực hiện trên môi trường mạng theo quy định tại khoản 1 Điều 27 của Luật này;

b) Thông báo cho tổ chức, cá nhân có liên quan địa chỉ liên hệ của cơ quan đó trên môi trường mạng;

c) Trả lời theo thẩm quyền văn bản của tổ chức, cá nhân gửi đến cơ quan nhà nước thông qua môi trường mạng;

d) Cung cấp trên môi trường mạng thông tin phục vụ lợi ích công cộng, thủ tục hành chính;

đ) Sử dụng chữ ký điện tử theo quy định của pháp luật về giao dịch điện tử;

e) Bảo đảm độ tin cậy và bí mật của nội dung thông tin trong việc gửi, nhận văn bản trên môi trường mạng;

g) Bảo đảm tính chính xác, đầy đủ, kịp thời của thông tin, văn bản được trao đổi,cung cấp và lấy ý kiến trên môi trường mạng;

h) Bảo đảm hệ thống thiết bị cung cấp thông tin, lấy ý kiến trên môi trường mạng hoạt động cả trong giờ và ngoài giờ làm việc, trừ trường hợp bất khả kháng;

i) Thực hiện việc cung cấp thông tin và lấy ý kiến qua trang thông tin điện tử phải tuân thủ quy định tại Điều 28 của Luật này.

Điều 10. Thanh tra về công nghệ thông tin

Page 6: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

6

1. Thanh tra Bộ Bưu chính, Viễn thông thực hiện chức năng thanh tra chuyên ngành về công nghệ thông tin.

2. Tổ chức và hoạt động của thanh tra về công nghệ thông tin thực hiện theo quyđịnh của pháp luật về thanh tra.

Điều 11. Hội, hiệp hội về công nghệ thông tin

1. Hội, hiệp hội về công nghệ thông tin có trách nhiệm bảo vệ quyền và lợi ích hợp pháp của tổ chức, cá nhân tham gia hoạt động ứng dụng và phát triển công nghệ thông tin.

2. Hội, hiệp hội về công nghệ thông tin được tổ chức và hoạt động theo quy địnhcủa pháp luật về hội.

Điều 12. Các hành vi bị nghiêm cấm

1. Cản trở hoạt động hợp pháp hoặc hỗ trợ hoạt động bất hợp pháp về ứng dụng và phát triển công nghệ thông tin; cản trở bất hợp pháp hoạt động của hệ thống máy chủ tên miền quốc gia; phá hoại cơ sở hạ tầng thông tin, phá hoại thông tin trên môi trường mạng.

2. Cung cấp, trao đổi, truyền đưa, lưu trữ, sử dụng thông tin số nhằm mục đích sau đây:

a) Chống Nhà nước Cộng hoà xã hội chủ nghĩa Việt Nam, phá hoại khối đoàn kết toàn dân;

b) Kích động bạo lực, tuyên truyền chiến tranh xâm lược, gây hận thù giữa các dân tộc và nhân dân các nước, kích động dâm ô, đồi trụy, tội ác, tệ nạn xã hội, mê tín dị đoan, phá hoại thuần phong mỹ tục của dân tộc;

c) Tiết lộ bí mật nhà nước, bí mật quân sự, an ninh, kinh tế, đối ngoại và những bí mật khác đã được pháp luật quy định;

d) Xuyên tạc, vu khống, xúc phạm uy tín của tổ chức, danh dự, nhân phẩm, uy tín của công dân;

đ) Quảng cáo, tuyên truyền hàng hoá, dịch vụ thuộc danh mục cấm đã được pháp luật quy định.

3. Xâm phạm quyền sở hữu trí tuệ trong hoạt động công nghệ thông tin; sản xuất, lưu hành sản phẩm công nghệ thông tin trái pháp luật; giả mạo trang thông tin điện tử của tổ chức, cá nhân khác; tạo đường dẫn trái phép đối với tên miền của tổ chức, cá nhân sử dụng hợp pháp tên miền đó.

Chương II: ỨNG DỤNG CÔNG NGHỆ THÔNG TIN

Mục 1

QUY ĐỊNH CHUNG VỀ ỨNG DỤNG CÔNG NGHỆ THÔNG TIN

Điều 13. Nguyên tắc chung về hoạt động ứng dụng công nghệ thông tin

1. Tổ chức, cá nhân có quyền tiến hành các hoạt động ứng dụng công nghệ

Page 7: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

7

thông tin theo quy định của Luật này và các quy định khác của pháp luật có liên quan.

2. Việc ứng dụng công nghệ thông tin vào các hoạt động thuộc lĩnh vực kinh tế -xã hội, đối ngoại, quốc phòng, an ninh; hoạt động phòng, chống lụt, bão, thiên tai, thảm họa khác, cứu hộ, cứu nạn và các hoạt động khác được Nhà nước khuyến khích.

3. Tổ chức, cá nhân tiến hành hoạt động viễn thông, hoạt động phát thanh, truyền hình trên môi trường mạng phải thực hiện các quy định của pháp luật về viễn thông, báo chí và các quy định của Luật này.

Điều 14. Ưu tiên ứng dụng công nghệ thông tin trong trường hợp khẩn cấp

1. Cơ quan nhà nước có thẩm quyền quyết định huy động một phần hoặc toàn bộcơ sở hạ tầng thông tin để ưu tiên phục vụ cho việc ứng dụng công nghệ thông tin khi có một trong các trường hợp khẩn cấp sau đây:

a) Phục vụ phòng, chống lụt, bão, hỏa hoạn, thiên tai, thảm họa khác;

b) Phục vụ cấp cứu và phòng, chống dịch bệnh;

c) Phục vụ cứu nạn, cứu hộ;

d) Phục vụ quốc phòng, an ninh, bảo đảm trật tự, an toàn xã hội, phòng, chống tội phạm.

2. Chính phủ quy định cụ thể việc ưu tiên ứng dụng công nghệ thông tin trong các trường hợp khẩn cấp.

Điều 15. Quản lý và sử dụng thông tin số

1. Tổ chức, cá nhân có quyền tự do sử dụng thông tin số vào mục đích chính đáng, phù hợp với quy định của pháp luật.

2. Cơ quan nhà nước có thẩm quyền chịu trách nhiệm thực hiện các biện pháp bảo đảm việc truy nhập và sử dụng thuận lợi thông tin số.

3. Việc cung cấp, trao đổi, truyền đưa, lưu trữ, sử dụng thông tin số phải bảo đảm không vi phạm quy định tại khoản 2 Điều 12 của Luật này và các quy định khác của pháp luật có liên quan.

4. Tổ chức, cá nhân không được trích dẫn nội dung thông tin số của tổ chức, cá nhân khác trong trường hợp chủ sở hữu thông tin số đã có cảnh báo hoặc pháp luật quy định việc trích dẫn thông tin là không được phép.

5. Trường hợp được phép trích dẫn thông tin số, tổ chức, cá nhân có trách nhiệmnêu rõ nguồn của thông tin đó.

Điều 16. Truyền đưa thông tin số

1. Tổ chức, cá nhân có quyền truyền đưa thông tin số của tổ chức, cá nhân khác phù hợp với quy định của Luật này.

2. Tổ chức, cá nhân truyền đưa thông tin số của tổ chức, cá nhân khác không

Page 8: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

8

phải chịu trách nhiệm về nội dung thông tin được lưu trữ tự động, trung gian, tạm thời do yêu cầu kỹ thuật nếu hoạt động lưu trữ tạm thời nhằm mục đích phục vụ cho việc truyền đưa thông tin và thông tin được lưu trữ trong khoảng thời gian đủ để thực hiện việc truyền đưa.

3. Tổ chức, cá nhân truyền đưa thông tin số có trách nhiệm tiến hành kịp thời các biện pháp cần thiết để ngăn chặn việc truy nhập thông tin hoặc loại bỏ thôngtin trái pháp luật theo yêu cầu của cơ quan nhà nước có thẩm quyền.

4. Tổ chức, cá nhân truyền đưa thông tin số của tổ chức, cá nhân khác không phải chịu trách nhiệm về nội dung thông tin đó, trừ trường hợp thực hiện một trong các hành vi sau đây:

a) Chính mình bắt đầu việc truyền đưa thông tin;

b) Lựa chọn người nhận thông tin được truyền đưa;

c) Lựa chọn và sửa đổi nội dung thông tin được truyền đưa.

Điều 17. Lưu trữ tạm thời thông tin số

1. Tổ chức, cá nhân có quyền lưu trữ tạm thời thông tin số của tổ chức, cá nhân khác.

2. Tổ chức, cá nhân lưu trữ tạm thời thông tin số của tổ chức, cá nhân khác không phải chịu trách nhiệm về nội dung thông tin đó, trừ trường hợp thực hiện một trong các hành vi sau đây:

a) Sửa đổi nội dung thông tin;

b) Không tuân thủ quy định về truy nhập hoặc cập nhật nội dung thông tin;

c) Thu thập dữ liệu bất hợp pháp thông qua việc lưu trữ thông tin tạm thời;

d) Tiết lộ bí mật thông tin.

Điều 18. Cho thuê chỗ lưu trữ thông tin số

1. Cho thuê chỗ lưu trữ thông tin số là dịch vụ cho thuê dung lượng thiết bị lưu trữ để lưu trữ thông tin trên môi trường mạng.

2. Nội dung thông tin số lưu trữ không được vi phạm quy định tại khoản 2 Điều 12 của Luật này.

3. Tổ chức, cá nhân cho thuê chỗ lưu trữ thông tin số có trách nhiệm sau đây:

a) Thực hiện yêu cầu của cơ quan nhà nước có thẩm quyền về việc xác định danh sách chủ sở hữu thuê chỗ lưu trữ thông tin số để thiết lập trang thông tin điện tử và danh sách chủ sở hữu thông tin số được lưu trữ bởi tổ chức, cá nhân đó;

b) Tiến hành kịp thời các biện pháp cần thiết để ngăn chặn việc truy nhập thông tin số hoặc loại bỏ thông tin số trái pháp luật theo yêu cầu của cơ quan nhà nướccó thẩm quyền;

c) Ngừng cho tổ chức, cá nhân khác thuê chỗ lưu trữ thông tin số trong trường

Page 9: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

9

hợp tự mình phát hiện hoặc được cơ quan nhà nước có thẩm quyền thông báo cho biết thông tin đang được lưu trữ là trái pháp luật;

d) Bảo đảm bí mật thông tin của tổ chức, cá nhân thuê chỗ lưu trữ thông tin.

Điều 19. Công cụ tìm kiếm thông tin số

1. Công cụ tìm kiếm thông tin số là chương trình máy tính tiếp nhận yêu cầu tìmkiếm thông tin số, thực hiện việc tìm kiếm thông tin số và gửi lại thông tin số tìm kiếm được.

2. Nhà nước có chính sách khuyến khích tổ chức, cá nhân phát triển, cung cấp công cụ tìm kiếm thông tin số.

3. Tổ chức, cá nhân có trách nhiệm ngừng cung cấp cho tổ chức, cá nhân khác công cụ tìm kiếm đến các nguồn thông tin số trong trường hợp tự mình phát hiệnhoặc được cơ quan nhà nước có thẩm quyền thông báo cho biết thông tin đó là trái pháp luật.

Điều 20. Theo dõi, giám sát nội dung thông tin số

1. Cơ quan nhà nước có thẩm quyền chịu trách nhiệm theo dõi, giám sát thông tin số; điều tra các hành vi vi phạm pháp luật xảy ra trong quá trình truyền đưa hoặc lưu trữ thông tin số.

2. Tổ chức, cá nhân tham gia ứng dụng công nghệ thông tin không phải chịu trách nhiệm theo dõi, giám sát thông tin số của tổ chức, cá nhân khác, điều tra các hành vi vi phạm pháp luật xảy ra trong quá trình truyền đưa hoặc lưu trữ thông tin số của tổ chức, cá nhân khác, trừ trường hợp cơ quan nhà nước có thẩm quyền yêu cầu.

Điều 21. Thu thập, xử lý và sử dụng thông tin cá nhân trên môi trường mạng

1. Tổ chức, cá nhân thu thập, xử lý và sử dụng thông tin cá nhân của người khác trên môi trường mạng phải được người đó đồng ý, trừ trường hợp pháp luật có quy định khác.

2. Tổ chức, cá nhân thu thập, xử lý và sử dụng thông tin cá nhân của người khác có trách nhiệm sau đây:

a) Thông báo cho người đó biết về hình thức, phạm vi, địa điểm và mục đích củaviệc thu thập, xử lý và sử dụng thông tin cá nhân của người đó;

b) Sử dụng đúng mục đích thông tin cá nhân thu thập được và chỉ lưu trữ những thông tin đó trong một khoảng thời gian nhất định theo quy định của pháp luật hoặc theo thoả thuận giữa hai bên;

c) Tiến hành các biện pháp quản lý, kỹ thuật cần thiết để bảo đảm thông tin cá nhân không bị mất, đánh cắp, tiết lộ, thay đổi hoặc phá huỷ;

d) Tiến hành ngay các biện pháp cần thiết khi nhận được yêu cầu kiểm tra lại, đính chính hoặc hủy bỏ theo quy định tại khoản 1 Điều 22 của Luật này; không

Page 10: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

10

được cung cấp hoặc sử dụng thông tin cá nhân liên quan cho đến khi thông tin đó được đính chính lại.

3. Tổ chức, cá nhân có quyền thu thập, xử lý và sử dụng thông tin cá nhân của người khác mà không cần sự đồng ý của người đó trong trường hợp thông tin cá nhân đó được sử dụng cho mục đích sau đây:

a) Ký kết, sửa đổi hoặc thực hiện hợp đồng sử dụng thông tin, sản phẩm, dịch vụtrên môi trường mạng;

b) Tính giá, cước sử dụng thông tin, sản phẩm, dịch vụ trên môi trường mạng;

c) Thực hiện nghĩa vụ khác theo quy định của pháp luật.

Điều 22. Lưu trữ, cung cấp thông tin cá nhân trên môi trường mạng

1. Cá nhân có quyền yêu cầu tổ chức, cá nhân lưu trữ thông tin cá nhân của mình trên môi trường mạng thực hiện việc kiểm tra, đính chính hoặc hủy bỏ thông tin đó.

2. Tổ chức, cá nhân không được cung cấp thông tin cá nhân của người khác cho bên thứ ba, trừ trường hợp pháp luật có quy định khác hoặc có sự đồng ý của người đó.

3. Cá nhân có quyền yêu cầu bồi thường thiệt hại do hành vi vi phạm trong việc cung cấp thông tin cá nhân.

Điều 23. Thiết lập trang thông tin điện tử

1. Tổ chức, cá nhân có quyền thiết lập trang thông tin điện tử theo quy định của pháp luật và chịu trách nhiệm quản lý nội dung và hoạt động trang thông tin điệntử của mình.

2. Tổ chức, cá nhân sử dụng tên miền quốc gia Việt Nam ".vn" khi thiết lập trang thông tin điện tử không cần thông báo với Bộ Bưu chính, Viễn thông. Tổ chức, cá nhân khi thiết lập trang thông tin điện tử không sử dụng tên miền quốc gia Việt Nam ".vn" phải thông báo trên môi trường mạng với Bộ Bưu chính, Viễn thông những thông tin sau đây:

a) Tên tổ chức ghi trong quyết định thành lập, giấy phép hoạt động, giấy chứng nhận đăng ký kinh doanh hoặc giấy phép mở văn phòng đại diện; tên cá nhân;

b) Số, ngày cấp, nơi cấp chứng minh thư nhân dân hoặc số, ngày cấp, nơi cấp hộchiếu của cá nhân;

c) Địa chỉ trụ sở chính của tổ chức hoặc nơi thường trú của cá nhân;

d) Số điện thoại, số fax, địa chỉ thư điện tử;

đ) Các tên miền đã đăng ký.

3. Tổ chức, cá nhân phải chịu trách nhiệm trước pháp luật về tính chính xác của các thông tin quy định tại khoản 2 Điều này, khi thay đổi thông tin thì phải thôngbáo về sự thay đổi đó.

Page 11: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

11

4. Trang thông tin điện tử được sử dụng cho hoạt động báo chí phải thực hiện quy định của Luật này, pháp luật về báo chí và các quy định khác của pháp luật có liên quan.

5. Trang thông tin điện tử được sử dụng cho hoạt động kinh tế - xã hội, đối ngoại, quốc phòng, an ninh phải thực hiện quy định của Luật này và các quy định khác của pháp luật có liên quan.

Mục 2

ỨNG DỤNG CÔNG NGHỆ THÔNG TIN TRONG HOẠT ĐỘNG CỦA CƠ QUAN NHÀ NƯỚC

Điều 24. Nguyên tắc ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước

1. Việc ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước phải được ưu tiên, bảo đảm tính công khai, minh bạch nhằm nâng cao hiệu lực, hiệu quả hoạt động của cơ quan nhà nước; tạo điều kiện để nhân dân thực hiện tốt quyền và nghĩa vụ công dân.

2. Việc ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước phải thúc đẩy chương trình đổi mới hoạt động của cơ quan nhà nước và chương trình cải cách hành chính.

3. Việc cung cấp, trao đổi thông tin phải bảo đảm chính xác và phù hợp với mục đích sử dụng.

4. Quy trình, thủ tục hoạt động phải công khai, minh bạch.

5. Sử dụng thống nhất tiêu chuẩn, bảo đảm tính tương thích về công nghệ trong toàn bộ hệ thống thông tin của các cơ quan nhà nước.

6. Bảo đảm an ninh, an toàn, tiết kiệm và có hiệu quả.

7. Người đứng đầu cơ quan nhà nước phải chịu trách nhiệm về việc ứng dụng công nghệ thông tin thuộc thẩm quyền quản lý của mình.

Điều 25. Điều kiện để triển khai ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước

1. Cơ quan nhà nước có trách nhiệm chuẩn bị các điều kiện để triển khai ứng dụng công nghệ thông tin trong hoạt động của cơ quan mình.

2. Chính phủ quy định cụ thể các điều kiện bảo đảm cho ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước; xây dựng và tổ chức thực hiện chương trình quốc gia về ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước với các nội dung chủ yếu sau đây:

a) Lộ trình thực hiện các hoạt động trên môi trường mạng của các cơ quan nhà nước;

b) Các ngành, lĩnh vực có tác động lớn đến phát triển kinh tế - xã hội cần ưu tiên

Page 12: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

12

ứng dụng công nghệ thông tin;

c) Việc chia sẻ, sử dụng chung thông tin số;

d) Lĩnh vực được ưu tiên, khuyến khích nghiên cứu - phát triển, hợp tác quốc tế, phát triển nguồn nhân lực và xây dựng cơ sở hạ tầng thông tin đáp ứng yêu cầu ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước trong từng giai đoạn;

đ) Nguồn tài chính bảo đảm cho ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước;

e) Các chương trình, đề án, dự án trọng điểm về ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước.

Điều 26. Nội dung ứng dụng công nghệ thông tin trong hoạt động của cơ quan nhà nước

1. Xây dựng và sử dụng cơ sở hạ tầng thông tin phục vụ cho hoạt động của cơ quan nhà nước và hoạt động trao đổi, cung cấp thông tin giữa cơ quan nhà nước với tổ chức, cá nhân.

2. Xây dựng, thu thập và duy trì cơ sở dữ liệu phục vụ cho hoạt động của cơ quan và phục vụ lợi ích công cộng.

3. Xây dựng các biểu mẫu phục vụ cho việc trao đổi, cung cấp thông tin và lấy ýkiến góp ý của tổ chức, cá nhân trên môi trường mạng.

4. Thiết lập trang thông tin điện tử phù hợp với quy định tại Điều 23 và Điều 28 của Luật này.

5. Cung cấp, chia sẻ thông tin với cơ quan khác của Nhà nước.

6. Thực hiện việc cung cấp dịch vụ công trên môi trường mạng.

7. Xây dựng, thực hiện kế hoạch đào tạo, nâng cao nhận thức và trình độ ứng dụng công nghệ thông tin của cán bộ, công chức.

8. Thực hiện hoạt động trên môi trường mạng theo quy định tại Điều 27 của Luật này.

Điều 27. Hoạt động của cơ quan nhà nước trên môi trường mạng

1. Hoạt động của cơ quan nhà nước trên môi trường mạng bao gồm:

a) Cung cấp, trao đổi, thu thập thông tin với tổ chức, cá nhân;

b) Chia sẻ thông tin trong nội bộ và với cơ quan khác của Nhà nước;

c) Cung cấp các dịch vụ công;

d) Các hoạt động khác theo quy định của Chính phủ.

2. Thời điểm và địa điểm gửi, nhận thông tin trên môi trường mạng thực hiện theo quy định của pháp luật về giao dịch điện tử.

Điều 28. Trang thông tin điện tử của cơ quan nhà nước

Page 13: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

13

1. Trang thông tin điện tử của cơ quan nhà nước phải đáp ứng các yêu cầu sau đây:

a) Bảo đảm cho tổ chức, cá nhân truy nhập thuận tiện;

b) Hỗ trợ tổ chức, cá nhân truy nhập và sử dụng các biểu mẫu trên trang thông tin điện tử (nếu có);

c) Bảo đảm tính chính xác và sự thống nhất về nội dung của thông tin trên trang thông tin điện tử;

d) Cập nhật thường xuyên và kịp thời thông tin trên trang thông tin điện tử;

đ) Thực hiện quy định của pháp luật về bảo vệ bí mật nhà nước.

2. Trang thông tin điện tử của cơ quan nhà nước phải có những thông tin chủ yếu sau đây:

a) Tổ chức, chức năng, nhiệm vụ, quyền hạn của cơ quan đó và của từng đơn vị trực thuộc;

b) Hệ thống văn bản quy phạm pháp luật chuyên ngành và văn bản pháp luật có liên quan;

c) Quy trình, thủ tục hành chính được thực hiện bởi các đơn vị trực thuộc, tên của người chịu trách nhiệm trong từng khâu thực hiện quy trình, thủ tục hành chính, thời hạn giải quyết các thủ tục hành chính;

d) Thông tin tuyên truyền, phổ biến, hướng dẫn thực hiện pháp luật, chế độ, chính sách, chiến lược, quy hoạch chuyên ngành;

đ) Danh mục địa chỉ thư điện tử chính thức của từng đơn vị trực thuộc và cán bộ, công chức có thẩm quyền;

e) Thông tin về dự án, hạng mục đầu tư, đấu thầu, mua sắm công;

g) Danh mục các hoạt động trên môi trường mạng đang được cơ quan đó thực hiện theo quy định tại khoản 1 Điều 27 của Luật này;

h) Mục lấy ý kiến góp ý của tổ chức, cá nhân.

3. Cơ quan nhà nước cung cấp miễn phí thông tin quy định tại khoản 2 Điều này.

Mục 3

ỨNG DỤNG CÔNG NGHỆ THÔNG TIN TRONG THƯƠNG MẠI

Điều 29. Nguyên tắc ứng dụng công nghệ thông tin trong thương mại

1. Tổ chức, cá nhân có quyền ứng dụng công nghệ thông tin trong thương mại.

2. Hoạt động thương mại trên môi trường mạng phải tuân thủ quy định của Luật này, pháp luật về thương mại và pháp luật về giao dịch điện tử.

Điều 30. Trang thông tin điện tử bán hàng

1. Tổ chức, cá nhân có quyền thiết lập trang thông tin điện tử bán hàng theo quy định của Luật này và các quy định khác của pháp luật có liên quan.

Page 14: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

14

2. Trang thông tin điện tử bán hàng phải bảo đảm các yêu cầu chủ yếu sau đây:

a) Cung cấp đầy đủ, chính xác thông tin về hàng hóa, dịch vụ, điều kiện giao dịch, thủ tục giải quyết tranh chấp và bồi thường thiệt hại;

b) Cung cấp cho người tiêu dùng thông tin về phương thức thanh toán an toàn vàtiện lợi trên môi trường mạng;

c) Công bố các trường hợp người tiêu dùng có quyền hủy bỏ, sửa đổi thỏa thuận trên môi trường mạng.

3. Tổ chức, cá nhân sở hữu trang thông tin điện tử bán hàng chịu trách nhiệm về nội dung thông tin cung cấp trên trang thông tin điện tử, thực hiện quy định của Luật này và các quy định khác của pháp luật có liên quan về giao kết hợp đồng, đặt hàng, thanh toán, quảng cáo, khuyến mại.

Điều 31. Cung cấp thông tin cho việc giao kết hợp đồng trên môi trường mạng

1. Trừ trường hợp các bên liên quan có thoả thuận khác, tổ chức, cá nhân bán hàng hóa, cung cấp dịch vụ phải cung cấp các thông tin sau đây cho việc giao kết hợp đồng:

a) Trình tự thực hiện để tiến tới giao kết hợp đồng trên môi trường mạng;

b) Biện pháp kỹ thuật xác định và sửa đổi thông tin nhập sai;

c) Việc lưu trữ hồ sơ hợp đồng và cho phép truy nhập hồ sơ đó.

2. Khi đưa ra các thông tin về điều kiện hợp đồng cho người tiêu dùng, tổ chức, cá nhân phải bảo đảm cho người tiêu dùng khả năng lưu trữ và tái tạo được các thông tin đó.

Điều 32. Giải quyết hậu quả do lỗi nhập sai thông tin thương mại trên môi trường mạng

Trường hợp người mua nhập sai thông tin gửi vào trang thông tin điện tử bán hàng mà hệ thống nhập tin không cung cấp khả năng sửa đổi thông tin, người mua có quyền đơn phương chấm dứt hợp đồng nếu đã thực hiện các biện pháp sau đây:

1. Thông báo kịp thời cho người bán biết về thông tin nhập sai của mình và người bán cũng đã xác nhận việc nhận được thông báo đó;

2. Trả lại hàng hoá đã nhận nhưng chưa sử dụng hoặc hưởng bất kỳ lợi ích nào từ hàng hóa đó.

Điều 33. Thanh toán trên môi trường mạng

1. Nhà nước khuyến khích tổ chức, cá nhân thực hiện thanh toán trên môi trườngmạng theo quy định của pháp luật.

2. Điều kiện, quy trình, thủ tục thanh toán trên môi trường mạng do cơ quan nhà nước có thẩm quyền quy định.

Page 15: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

15

Mục 4

ỨNG DỤNG CÔNG NGHỆ THÔNG TIN TRONG MỘT SỐ LĨNH VỰC

Điều 34. Ứng dụng công nghệ thông tin trong lĩnh vực giáo dục và đào tạo

1. Nhà nước có chính sách khuyến khích ứng dụng công nghệ thông tin trong việc dạy, học, tuyển sinh, đào tạo và các hoạt động khác trong lĩnh vực giáo dục và đào tạo trên môi trường mạng.

2. Tổ chức, cá nhân tiến hành hoạt động giáo dục và đào tạo trên môi trường mạng phải tuân thủ quy định của Luật này và quy định của pháp luật về giáo dục.

3. Cơ quan nhà nước có thẩm quyền chịu trách nhiệm xây dựng, triển khai thực hiện chương trình hỗ trợ tổ chức, cá nhân nhằm thúc đẩy ứng dụng công nghệ thông tin trong giáo dục và đào tạo.

4. Bộ Giáo dục và Đào tạo quy định điều kiện hoạt động giáo dục và đào tạo, công nhận giá trị pháp lý của văn bằng, chứng chỉ trong hoạt động giáo dục và đào tạo trên môi trường mạng và thực hiện kiểm định chất lượng giáo dục và đào tạo trên môi trường mạng.

Điều 35. Ứng dụng công nghệ thông tin trong lĩnh vực y tế

1. Nhà nước có chính sách khuyến khích ứng dụng công nghệ thông tin trong lĩnh vực y tế.

2. Tổ chức, cá nhân tiến hành hoạt động y tế trên môi trường mạng phải tuân thủquy định của Luật này, pháp luật về y, dược và các quy định khác của pháp luật có liên quan.

3. Bộ Y tế quy định cụ thể điều kiện hoạt động y tế trên môi trường mạng.

Điều 36. Ứng dụng công nghệ thông tin trong lĩnh vực văn hóa - thông tin

1. Nhà nước có chính sách khuyến khích ứng dụng công nghệ thông tin trong việc số hóa sản phẩm văn hóa, lưu trữ, quảng bá sản phẩm văn hóa đã được số hóa và các hoạt động khác trong lĩnh vực văn hóa.

2. Tổ chức, cá nhân tiến hành hoạt động văn hóa, báo chí trên môi trường mạng phải tuân thủ quy định của Luật này và các quy định của pháp luật về báo chí, văn hóa - thông tin.

3. Tổ chức, cá nhân được Nhà nước hỗ trợ kinh phí để thực hiện số hóa các sản phẩm văn hóa có giá trị bảo tồn phải tuân thủ quy định của Chính phủ về điều kiện thực hiện số hóa các sản phẩm văn hóa có giá trị bảo tồn.

4. Chính phủ quy định việc quản lý hoạt động giải trí trên môi trường mạng nhằm bảo đảm yêu cầu sau đây:

a) Nội dung giải trí phải lành mạnh, có tính giáo dục, tính văn hóa, không trái thuần phong mỹ tục của dân tộc;

b) Gắn trách nhiệm và quyền lợi của các đối tượng tham gia hoạt động giải trí

Page 16: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

16

trên môi trường mạng với lợi ích chung của xã hội, cộng đồng;

c) Bảo đảm an toàn kỹ thuật và chất lượng dịch vụ;

d) Bảo đảm an ninh chính trị, trật tự, an toàn xã hội và ngăn chặn các loại tội phạm phát sinh từ hoạt động này.

Điều 37. Ứng dụng công nghệ thông tin trong quốc phòng, an ninh và một số lĩnh vực khác

Hoạt động ứng dụng công nghệ thông tin phục vụ quốc phòng, an ninh và một số lĩnh vực khác được thực hiện theo quy định của Chính phủ.

Chương III: PHÁT TRIỂN CÔNG NGHỆ THÔNG TIN

Mục 1

NGHIÊN CỨU - PHÁT TRIỂN CÔNG NGHỆ THÔNG TIN

Điều 38. Khuyến khích nghiên cứu - phát triển công nghệ thông tin

1. Nhà nước khuyến khích tổ chức, cá nhân nghiên cứu - phát triển công nghệ, sản phẩm công nghệ thông tin nhằm phát triển kinh tế - xã hội, bảo đảm quốc phòng, an ninh, nâng cao đời sống vật chất, tinh thần của nhân dân.

2. Tổ chức, cá nhân nghiên cứu - phát triển công nghệ, sản phẩm công nghệ thông tin để đổi mới quản lý kinh tế - xã hội, đổi mới công nghệ được hưởng ưu đãi về thuế, tín dụng và các ưu đãi khác theo quy định của pháp luật.

3. Nhà nước tạo điều kiện để tổ chức, cá nhân hoạt động khoa học và công nghệ chuyển giao kết quả nghiên cứu - phát triển công nghệ, sản phẩm công nghệ thông tin để ứng dụng rộng rãi vào sản xuất và đời sống.

Điều 39. Cơ sở vật chất, kỹ thuật phục vụ cho hoạt động nghiên cứu - phát triển công nghệ thông tin

Nhà nước huy động các nguồn vốn để đầu tư xây dựng cơ sở vật chất, kỹ thuật của các tổ chức nghiên cứu - phát triển công nghệ thông tin; khuyến khích tổ chức, cá nhân đầu tư xây dựng cơ sở vật chất, kỹ thuật phục vụ nghiên cứu - phát triển công nghệ thông tin; đầu tư một số phòng thí nghiệm trọng điểm về công nghệ thông tin đạt tiêu chuẩn quốc tế; ban hành quy chế sử dụng phòng thí nghiệm trọng điểm về công nghệ thông tin.

Điều 40. Nghiên cứu - phát triển công nghệ, sản phẩm công nghệ thông tin

1. Nhà nước khuyến khích tổ chức, cá nhân tham gia nghiên cứu - phát triển công nghệ, sản phẩm công nghệ thông tin.

2. Nhà nước ưu tiên dành một khoản từ ngân sách nhà nước cho các chương trình, đề tài nghiên cứu - phát triển phần mềm; ưu tiên hoạt động nghiên cứu - phát triển công nghệ thông tin ở trường đại học, viện nghiên cứu; phát triển các mô hình gắn kết nghiên cứu, đào tạo với sản xuất về công nghệ thông tin.

Page 17: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

17

3. Cơ quan quản lý nhà nước về công nghệ thông tin chủ trì, phối hợp với cơ quan quản lý nhà nước về khoa học và công nghệ tổ chức tuyển chọn cơ sở nghiên cứu, đào tạo, doanh nghiệp thực hiện nhiệm vụ nghiên cứu - phát triển sản phẩm công nghệ thông tin trọng điểm.

Điều 41. Tiêu chuẩn, chất lượng trong hoạt động ứng dụng và phát triển công nghệ thông tin

1. Việc quản lý tiêu chuẩn, chất lượng sản phẩm, dịch vụ công nghệ thông tin được thực hiện theo quy định của pháp luật về tiêu chuẩn, chất lượng.

2. Khuyến khích tổ chức, cá nhân tham gia sản xuất, cung cấp sản phẩm, dịch vụcông nghệ thông tin, công bố tiêu chuẩn cơ sở và phải bảo đảm sản phẩm, dịch vụ của mình phù hợp với tiêu chuẩn đã công bố.

3. Chất lượng sản phẩm, dịch vụ công nghệ thông tin được quản lý thông qua các hình thức sau đây:

a) Chứng nhận phù hợp tiêu chuẩn, quy chuẩn kỹ thuật;

b) Công bố phù hợp tiêu chuẩn, quy chuẩn kỹ thuật;

c) Kiểm định chất lượng.

4. Bộ Bưu chính, Viễn thông công bố sản phẩm, dịch vụ công nghệ thông tin cầnáp dụng tiêu chuẩn quốc gia hoặc tiêu chuẩn quốc tế; ban hành và công bố áp dụng quy chuẩn kỹ thuật; quy định cụ thể về quản lý chất lượng sản phẩm, dịch vụ công nghệ thông tin; quy định các điều kiện đối với cơ quan đo kiểm trong nước và nước ngoài để phục vụ cho việc quản lý chất lượng sản phẩm, dịch vụ công nghệ thông tin và công bố cơ quan đo kiểm về công nghệ thông tin có thẩmquyền.

5. Việc thừa nhận lẫn nhau về đánh giá phù hợp tiêu chuẩn đối với sản phẩm công nghệ thông tin giữa Cộng hòa xã hội chủ nghĩa Việt Nam với nước ngoài và với tổ chức quốc tế được thực hiện theo quy định của điều ước quốc tế mà Cộng hòa xã hội chủ nghĩa Việt Nam là thành viên.

Mục 2

PHÁT TRIỂN NGUỒN NHÂN LỰC CÔNG NGHỆ THÔNG TIN

Điều 42. Chính sách phát triển nguồn nhân lực công nghệ thông tin

1. Nhà nước có chính sách phát triển quy mô và tăng cường chất lượng đào tạo nguồn nhân lực công nghệ thông tin.

2. Chương trình, dự án ưu tiên, trọng điểm của Nhà nước về ứng dụng và phát triển công nghệ thông tin phải có hạng mục đào tạo nhân lực công nghệ thông tin.

3. Tổ chức, cá nhân được khuyến khích thành lập cơ sở đào tạo nhân lực công nghệ thông tin theo quy định của pháp luật.

4. Cơ sở đào tạo được hưởng ưu đãi trong hoạt động đào tạo về công nghệ thông

Page 18: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

18

tin tương đương với doanh nghiệp sản xuất phần mềm.

5. Nhà nước có chính sách hỗ trợ giáo viên, sinh viên và học sinh trong hệ thốnggiáo dục quốc dân truy nhập Internet tại các cơ sở giáo dục.

Điều 43. Chứng chỉ công nghệ thông tin

Bộ Bưu chính, Viễn thông chủ trì, phối hợp với Bộ Giáo dục và Đào tạo, Bộ Laođộng - Thương binh và Xã hội quy định điều kiện hoạt động đào tạo công nghệ thông tin và cấp chứng chỉ công nghệ thông tin, việc công nhận chứng chỉ công nghệ thông tin của tổ chức nước ngoài sử dụng ở Việt Nam.

Điều 44. Sử dụng nhân lực công nghệ thông tin

1. Người hoạt động chuyên trách về ứng dụng và phát triển công nghệ thông tin trong các cơ quan nhà nước được hưởng chế độ ưu đãi về điều kiện làm việc.

2. Tiêu chuẩn ngành nghề, chức danh về công nghệ thông tin do cơ quan nhà nước có thẩm quyền ban hành.

Điều 45. Người Việt Nam làm việc tại nước ngoài

1. Nhà nước khuyến khích tổ chức, cá nhân tìm kiếm và mở rộng thị trường lao động nhằm tạo việc làm ở nước ngoài cho người lao động Việt Nam tham gia các hoạt động về công nghệ thông tin theo quy định của pháp luật Việt Nam, phùhợp với pháp luật của nước sở tại và điều ước quốc tế mà Cộng hòa xã hội chủ nghĩa Việt Nam là thành viên.

2. Nhà nước có chính sách ưu đãi cho tổ chức, cá nhân nước ngoài, người Việt Nam định cư ở nước ngoài tuyển dụng lao động trong nước để phát triển, sản xuất, gia công sản phẩm công nghệ thông tin.

Điều 46. Phổ cập kiến thức công nghệ thông tin

1. Nhà nước có chính sách khuyến khích phổ cập kiến thức công nghệ thông tin trong phạm vi cả nước.

2. Ủy ban nhân dân tỉnh, thành phố trực thuộc trung ương có trách nhiệm xây dựng và triển khai các hoạt động phổ cập kiến thức công nghệ thông tin cho tổ chức, cá nhân trong địa phương mình.

3. Bộ Giáo dục và Đào tạo có trách nhiệm xây dựng chương trình và tổ chức thực hiện phổ cập kiến thức công nghệ thông tin trong hệ thống giáo dục quốc dân.

4. Nhà nước có chính sách hỗ trợ việc học tập, phổ cập kiến thức công nghệ thông tin đối với người tàn tật, người nghèo, người dân tộc thiểu số và các đối tượng ưu tiên khác phù hợp với yêu cầu phát triển trong từng thời kỳ theo quy định của Chính phủ.

Mục 3

PHÁT TRIỂN CÔNG NGHIỆP CÔNG NGHỆ THÔNG TIN

Điều 47. Loại hình công nghiệp công nghệ thông tin

Page 19: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

19

1. Công nghiệp phần cứng là công nghiệp sản xuất các sản phẩm phần cứng, baogồm phụ tùng, linh kiện, thiết bị số.

2. Công nghiệp phần mềm là công nghiệp sản xuất các sản phẩm phần mềm, baogồm phần mềm hệ thống, phần mềm ứng dụng, phần mềm điều khiển, tự động hóa và các sản phẩm tương tự khác; cung cấp các giải pháp cài đặt, bảo trì, hướng dẫn sử dụng.

3. Công nghiệp nội dung là công nghiệp sản xuất các sản phẩm thông tin số, baogồm thông tin kinh tế - xã hội, thông tin khoa học - giáo dục, thông tin văn hóa -giải trí trên môi trường mạng và các sản phẩm tương tự khác.

Điều 48. Chính sách phát triển công nghiệp công nghệ thông tin

1. Nhà nước có chính sách ưu đãi, ưu tiên đầu tư phát triển công nghiệp công nghệ thông tin, đặc biệt chú trọng công nghiệp phần mềm và công nghiệp nội dung để trở thành một ngành kinh tế trọng điểm trong nền kinh tế quốc dân.

2. Nhà nước khuyến khích các nhà đầu tư tham gia hoạt động đầu tư mạo hiểm vào lĩnh vực công nghiệp công nghệ thông tin, đầu tư phát triển và cung cấp thiết bị số giá rẻ.

3. Chính phủ quy định cụ thể mức ưu đãi, ưu tiên và các điều kiện khác cho pháttriển công nghiệp công nghệ thông tin.

Điều 49. Phát triển thị trường công nghiệp công nghệ thông tin

Cơ quan nhà nước có thẩm quyền ban hành quy định và tổ chức thực hiện các hoạt động phát triển thị trường công nghiệp công nghệ thông tin, bao gồm:

1. Thúc đẩy ứng dụng công nghệ thông tin; ưu tiên sử dụng nguồn vốn ngân sách nhà nước để mua sắm, sử dụng các sản phẩm công nghệ thông tin được sảnxuất trong nước;

2. Xúc tiến thương mại, tổ chức triển lãm, hội chợ trong nước, hỗ trợ các doanh nghiệp tham gia triển lãm, hội chợ quốc tế, quảng bá, tiếp thị hình ảnh công nghiệp công nghệ thông tin của Việt Nam trên thế giới;

3. Phương pháp định giá phần mềm phục vụ cho việc quản lý các dự án ứng dụng và phát triển công nghệ thông tin.

Điều 50. Sản phẩm công nghệ thông tin trọng điểm

1. Sản phẩm công nghệ thông tin trọng điểm là sản phẩm công nghệ thông tin bảo đảm được một trong những yêu cầu sau đây:

a) Thị trường trong nước có nhu cầu lớn và tạo giá trị gia tăng cao;

b) Có tiềm năng xuất khẩu;

c) Có tác động tích cực về đổi mới công nghệ và hiệu quả kinh tế đối với các ngành kinh tế khác;

d) Đáp ứng được yêu cầu về quốc phòng, an ninh.

Page 20: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

20

2. Bộ Bưu chính, Viễn thông công bố danh mục và xây dựng chương trình phát triển các sản phẩm công nghệ thông tin trọng điểm trong từng thời kỳ phù hợp với quy hoạch phát triển công nghiệp công nghệ thông tin.

3. Các sản phẩm công nghệ thông tin thuộc danh mục sản phẩm công nghệ thông tin trọng điểm quy định tại khoản 2 Điều này được Nhà nước ưu tiên đầu tư nghiên cứu - phát triển, sản xuất.

4. Tổ chức, cá nhân tham gia nghiên cứu - phát triển, sản xuất sản phẩm công nghệ thông tin trọng điểm được hưởng ưu đãi theo quy định của Chính phủ; được Nhà nước ưu tiên đầu tư và được hưởng một phần tiền bản quyền đối với sản phẩm công nghệ thông tin trọng điểm do Nhà nước đầu tư.

5. Tổ chức, cá nhân tham gia nghiên cứu - phát triển, sản xuất sản phẩm công nghệ thông tin trọng điểm do Nhà nước đầu tư phải đáp ứng các điều kiện do cơ quan nhà nước có thẩm quyền quy định; không được chuyển giao, chuyển nhượng công nghệ, giải pháp phát triển sản phẩm công nghệ thông tin trọng điểm do Nhà nước đầu tư khi chưa có sự đồng ý của cơ quan nhà nước có thẩm quyền; chịu sự kiểm tra, kiểm soát, tuân thủ chế độ báo cáo theo quy định của cơquan nhà nước có thẩm quyền về hoạt động nghiên cứu - phát triển, sản xuất và xúc tiến thương mại các sản phẩm công nghệ thông tin trọng điểm.

Điều 51. Khu công nghệ thông tin tập trung

1. Khu công nghệ thông tin tập trung là loại hình khu công nghệ cao, tập trung hoặc liên kết cơ sở nghiên cứu - phát triển, sản xuất, kinh doanh, đào tạo về công nghệ thông tin. Tổ chức, cá nhân đầu tư và hoạt động trong khu công nghệ thông tin tập trung được hưởng các chính sách ưu đãi của Nhà nước áp dụng đối với khu công nghệ cao.

2. Khuyến khích tổ chức, cá nhân trong nước và nước ngoài đầu tư, xây dựng khu công nghệ thông tin tập trung theo quy hoạch của Chính phủ.

Mục 4

PHÁT TRIỂN DỊCH VỤ CÔNG NGHỆ THÔNG TIN

Điều 52. Loại hình dịch vụ công nghệ thông tin

1. Điều tra, khảo sát, nghiên cứu thị trường về công nghệ thông tin.

2. Tư vấn, phân tích, lập kế hoạch, phân loại, thiết kế trong lĩnh vực công nghệ thông tin.

3. Tích hợp hệ thống, chạy thử, dịch vụ quản lý ứng dụng, cập nhật, bảo mật.

4. Thiết kế, lưu trữ, duy trì trang thông tin điện tử.

5. Bảo hành, bảo trì, bảo đảm an toàn mạng và thông tin.

6. Cập nhật, tìm kiếm, lưu trữ, xử lý dữ liệu và khai thác cơ sở dữ liệu.

7. Phân phối sản phẩm công nghệ thông tin.

8. Đào tạo công nghệ thông tin.

Page 21: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

21

9. Chứng thực chữ ký điện tử.

10. Dịch vụ khác.

Điều 53. Chính sách phát triển dịch vụ công nghệ thông tin

1. Nhà nước có chính sách khuyến khích phát triển dịch vụ công nghệ thông tin.

2. Chính phủ quy định cụ thể chế độ ưu đãi và các điều kiện khác cho một số loại hình dịch vụ công nghệ thông tin.

Chương IV: BIỆN PHÁP BẢO ĐẢM ỨNG DỤNG VÀ PHÁT TRIỂN CÔNG NGHỆ THÔNG TIN

Mục 1

CƠ SỞ HẠ TẦNG THÔNG TIN PHỤC VỤ ỨNG DỤNG VÀ PHÁT TRIỂN CÔNG NGHỆ THÔNG TIN

Điều 54. Nguyên tắc phát triển cơ sở hạ tầng thông tin

1. Cơ sở hạ tầng thông tin phải được phát triển để bảo đảm chất lượng và đa dạng các loại hình dịch vụ nhằm đáp ứng yêu cầu ứng dụng và phát triển công nghệ thông tin.

2. Cơ quan nhà nước có thẩm quyền chịu trách nhiệm bảo đảm sự phát triển cơ sở hạ tầng thông tin phù hợp với yêu cầu phát triển kinh tế - xã hội; tạo điều kiệnđể các thành phần kinh tế sử dụng cơ sở hạ tầng thông tin trong môi trường cạnhtranh lành mạnh, bình đẳng, minh bạch; có biện pháp đồng bộ để ngăn chặn những hành vi lợi dụng cơ sở hạ tầng thông tin vi phạm quy định Điều 12 của Luật này.

Điều 55. Bảo đảm cơ sở hạ tầng thông tin phục vụ việc ứng dụng và phát triển công nghệ thông tin

1. Nhà nước có chính sách phát triển cơ sở hạ tầng thông tin quốc gia rộng khắp,có thông lượng lớn, tốc độ và chất lượng cao, giá cước cạnh tranh so với các nước trong khu vực; khuyến khích tổ chức, cá nhân cùng đầu tư, sử dụng chung cơ sở hạ tầng thông tin.

2. Điểm truy nhập Internet công cộng được ưu tiên đặt tại bưu cục, điểm bưu điện văn hóa xã, nhà ga, bến xe, cảng biển, cảng hàng không, cửa khẩu, khu dân cư, bệnh viện, trường học, siêu thị, trung tâm văn hóa, thể thao để phục vụ nhu cầu của tổ chức, cá nhân.

Điều 56. Cơ sở hạ tầng thông tin phục vụ cơ quan nhà nước

1. Cơ sở hạ tầng thông tin phục vụ cơ quan nhà nước từ trung ương đến địa phương được thống nhất xây dựng và quản lý theo quy định của Chính phủ.

2. Kinh phí đầu tư, xây dựng, khai thác, bảo trì cơ sở hạ tầng thông tin phục vụ cơ quan nhà nước lấy từ ngân sách nhà nước và các nguồn khác.

Điều 57. Cơ sở hạ tầng thông tin phục vụ công ích

Page 22: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

22

1. Nhà nước có chính sách ưu tiên vốn đầu tư và có cơ chế hỗ trợ tài chính cho việc xây dựng và sử dụng cơ sở hạ tầng thông tin phục vụ công ích và thu hẹp khoảng cách số.

2. Cơ quan quản lý nhà nước về công nghệ thông tin các cấp chịu trách nhiệm tổchức thực hiện các chương trình, dự án thu hẹp khoảng cách số, bao gồm:

a) Lắp đặt hệ thống máy tính và truy nhập Internet tại trường học, điểm công cộng trên phạm vi toàn quốc;

b) Phát triển đội ngũ hướng dẫn sử dụng máy tính và truy nhập Internet;

c) Thu hẹp khoảng cách số giữa các vùng, miền.

Điều 58. Cơ sở dữ liệu quốc gia

1. Cơ sở dữ liệu quốc gia là tập hợp thông tin của một hoặc một số lĩnh vực kinhtế - xã hội được xây dựng, cập nhật và duy trì đáp ứng yêu cầu truy nhập và sử dụng thông tin của các ngành kinh tế và phục vụ lợi ích công cộng.

2. Tổ chức, cá nhân có quyền truy nhập và sử dụng thông tin trong cơ sở dữ liệu quốc gia, trừ trường hợp pháp luật có quy định khác.

3. Nhà nước bảo đảm một phần hoặc toàn bộ kinh phí xây dựng và duy trì cơ sở dữ liệu quốc gia.

4. Chính phủ quy định danh mục cơ sở dữ liệu quốc gia; xây dựng, cập nhật và duy trì cơ sở dữ liệu quốc gia; ban hành quy chế khai thác, sử dụng cơ sở dữ liệuquốc gia.

Điều 59. Cơ sở dữ liệu của bộ, ngành, địa phương

1. Cơ sở dữ liệu của bộ, ngành, địa phương là tập hợp thông tin được xây dựng, cập nhật và duy trì đáp ứng yêu cầu truy nhập, sử dụng thông tin của mình và phục vụ lợi ích công cộng.

2. Tổ chức, cá nhân có quyền truy nhập và sử dụng thông tin trong cơ sở dữ liệu của bộ, ngành, địa phương, trừ trường hợp pháp luật có quy định khác.

3. Nhà nước bảo đảm một phần hoặc toàn bộ kinh phí xây dựng và duy trì cơ sở dữ liệu của bộ, ngành, địa phương.

4. Bộ, cơ quan ngang bộ, cơ quan thuộc Chính phủ, Uỷ ban nhân dân tỉnh, thànhphố trực thuộc trung ương quy định danh mục cơ sở dữ liệu; xây dựng, cập nhật và duy trì cơ sở dữ liệu; ban hành quy chế khai thác, sử dụng cơ sở dữ liệu của bộ, ngành, địa phương mình.

Điều 60. Bảo vệ cơ sở hạ tầng thông tin

1. Cơ sở hạ tầng thông tin quốc gia phải được bảo vệ. Ủy ban nhân dân các cấp, lực lượng vũ trang nhân dân và tổ chức, cá nhân quản lý, khai thác cơ sở hạ tầngthông tin có trách nhiệm phối hợp bảo vệ an toàn cơ sở hạ tầng thông tin quốc gia.

2. Tổ chức, cá nhân có trách nhiệm bảo đảm an toàn cơ sở hạ tầng thông tin

Page 23: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

23

thuộc thẩm quyền quản lý; chịu sự quản lý, thanh tra, kiểm tra và thực hiện các yêu cầu về bảo đảm an toàn cơ sở hạ tầng thông tin và an ninh thông tin của các cơ quan nhà nước có thẩm quyền.

3. Tổ chức, cá nhân quản lý, khai thác cơ sở hạ tầng thông tin có trách nhiệm tạođiều kiện làm việc, kỹ thuật, nghiệp vụ cần thiết để các cơ quan nhà nước có thẩm quyền thực hiện nhiệm vụ kiểm soát và bảo đảm an ninh thông tin khi có yêu cầu.

Mục 2

ĐẦU TƯ CHO CÔNG NGHỆ THÔNG TIN

Điều 61. Đầu tư của tổ chức, cá nhân cho công nghệ thông tin

1. Nhà nước khuyến khích tổ chức, cá nhân đầu tư cho hoạt động ứng dụng côngnghệ thông tin để đổi mới quản lý kinh tế - xã hội, đổi mới công nghệ và nâng cao sức cạnh tranh của sản phẩm.

2. Nhà nước khuyến khích và bảo vệ quyền, lợi ích hợp pháp của tổ chức, cá nhân trong nước, người Việt Nam định cư ở nước ngoài, tổ chức, cá nhân nước ngoài đầu tư cho công nghệ thông tin.

3. Các khoản đầu tư của doanh nghiệp cho ứng dụng và phát triển công nghệ thông tin và các chi phí sau đây của doanh nghiệp được trừ khi tính thu nhập chịu thuế theo Luật thuế thu nhập doanh nghiệp:

a) Mở trường, lớp đào tạo công nghệ thông tin tại doanh nghiệp;

b) Cử người đi đào tạo, tiếp thu công nghệ mới phục vụ cho nhu cầu ứng dụng và phát triển công nghệ thông tin của doanh nghiệp.

Điều 62. Đầu tư của Nhà nước cho công nghệ thông tin

1. Đầu tư cho công nghệ thông tin là đầu tư phát triển.

2. Nhà nước ưu tiên bố trí ngân sách cho công nghệ thông tin, bảo đảm tỷ lệ tăngchi ngân sách cho công nghệ thông tin hằng năm cao hơn tỷ lệ tăng chi ngân sách nhà nước. Ngân sách cho công nghệ thông tin phải được quản lý, sử dụng có hiệu quả.

3. Chính phủ ban hành quy chế quản lý đầu tư phù hợp đối với các dự án ứng dụng công nghệ thông tin sử dụng vốn đầu tư có nguồn gốc từ ngân sách nhà nước.

4. Trong Mục lục ngân sách nhà nước có loại chi riêng về công nghệ thông tin.

Điều 63. Đầu tư cho sự nghiệp ứng dụng và phát triển công nghệ thông tin

1. Ngân sách nhà nước chi cho sự nghiệp ứng dụng và phát triển công nghệ thông tin được sử dụng vào các mục đích sau đây:

a) Phổ cập ứng dụng công nghệ thông tin, hỗ trợ dự án ứng dụng công nghệ thông tin có hiệu quả;

Page 24: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

24

b) Phát triển nguồn thông tin số;

c) Xây dựng cơ sở dữ liệu quốc gia, cơ sở dữ liệu của bộ, ngành, địa phương;

d) Xây dựng cơ sở hạ tầng thông tin phục vụ công ích và cơ quan nhà nước;

đ) Điều tra, nghiên cứu, xây dựng, thử nghiệm, áp dụng tiến bộ khoa học - kỹ thuật về công nghệ thông tin, cơ chế, chính sách, chiến lược, quy hoạch, kế hoạch, tiêu chuẩn, quy chuẩn kỹ thuật, định mức kinh tế - kỹ thuật, mô hình ứng dụng và phát triển công nghệ thông tin;

e) Phát triển nguồn nhân lực công nghệ thông tin;

g) Tuyên truyền, phổ biến, giáo dục pháp luật về công nghệ thông tin, đào tạo, tập huấn chuyên môn, quản lý về công nghệ thông tin;

h) Trao giải thưởng công nghệ thông tin;

i) Các hoạt động khác cho sự nghiệp ứng dụng và phát triển công nghệ thông tin.

2. Hằng năm, Bộ Bưu chính, Viễn thông chịu trách nhiệm tổng hợp dự toán kinhphí chi cho sự nghiệp ứng dụng và phát triển công nghệ thông tin quy định tại khoản 1 Điều này của các bộ, cơ quan ngang bộ, cơ quan thuộc Chính phủ và của tỉnh, thành phố trực thuộc trung ương để Chính phủ trình Quốc hội.

Điều 64. Đầu tư và phát triển công nghệ thông tin phục vụ nông nghiệp và nông thôn

1. Thu hút mọi nguồn lực để đầu tư xây dựng cơ sở hạ tầng thông tin, đẩy nhanhquá trình hiện đại hoá nông thôn, miền núi, hải đảo.

2. Tạo điều kiện thuận lợi cho nhân dân ở vùng sâu, vùng xa, vùng có đồng bào dân tộc thiểu số, vùng có điều kiện kinh tế - xã hội khó khăn, vùng có điều kiện kinh tế - xã hội đặc biệt khó khăn ứng dụng công nghệ thông tin để phục vụ sản xuất và đời sống.

3. Tổ chức, cá nhân hoạt động ứng dụng và phát triển công nghệ thông tin tại vùng sâu, vùng xa, vùng có đồng bào dân tộc thiểu số, vùng có điều kiện kinh tế - xã hội khó khăn, vùng có điều kiện kinh tế - xã hội đặc biệt khó khăn được hưởng các chính sách ưu đãi về đầu tư, tài chính và các ưu đãi khác theo quy định của pháp luật.

4. Hoạt động ứng dụng và cung cấp dịch vụ công nghệ thông tin phục vụ mục tiêu khuyến nông, khuyến lâm, khuyến ngư, đánh bắt xa bờ được Nhà nước hỗ trợ một phần kinh phí.

Mục 3

HỢP TÁC QUỐC TẾ VỀ CÔNG NGHỆ THÔNG TIN

Điều 65. Nguyên tắc hợp tác quốc tế về công nghệ thông tin

Tổ chức, cá nhân Việt Nam hợp tác về công nghệ thông tin với tổ chức, cá nhân nước ngoài, tổ chức quốc tế theo nguyên tắc tôn trọng độc lập, chủ quyền quốc gia, không can thiệp vào công việc nội bộ của nhau, bình đẳng và cùng có lợi.

Page 25: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

25

Điều 66. Nội dung hợp tác quốc tế về công nghệ thông tin

1. Phân tích xu hướng quốc tế về công nghệ thông tin, quy mô và triển vọng phát triển thị trường nước ngoài và xây dựng chiến lược phát triển thị trường công nghệ thông tin ở nước ngoài.

2. Quảng bá thông tin về định hướng, chính sách ứng dụng và phát triển công nghệ thông tin của Việt Nam và của các nước trên thế giới.

3. Xây dựng cơ chế, chính sách đẩy mạnh hợp tác giữa tổ chức, cá nhân Việt Nam với tổ chức, cá nhân nước ngoài, tổ chức quốc tế hoạt động trong lĩnh vực công nghệ thông tin.

4. Thực hiện chương trình, dự án hợp tác quốc tế về công nghệ thông tin.

5. Phát triển thị trường công nghệ thông tin ở nước ngoài, giới thiệu sản phẩm công nghệ thông tin Việt Nam qua các triển lãm quốc tế, tiếp cận với khách hàngtiềm năng.

6. Tổ chức hội thảo, hội nghị và diễn đàn quốc tế về công nghệ thông tin.

7. Ký kết, gia nhập và thực hiện các điều ước quốc tế song phương, đa phương và tham gia tổ chức khu vực, tổ chức quốc tế về công nghệ thông tin.

8. Tiếp thu công nghệ của nước ngoài chuyển giao vào Việt Nam.

Mục 4

BẢO VỆ QUYỀN, LỢI ÍCH HỢP PHÁP VÀ HỖ TRỢ NGƯỜI SỬ DỤNG SẢN PHẨM, DỊCH VỤ CÔNG NGHỆ THÔNG TIN

Điều 67. Trách nhiệm bảo vệ quyền, lợi ích hợp pháp của người sử dụng sản phẩm, dịch vụ công nghệ thông tin

Nhà nước và xã hội thực hiện các biện pháp phòng, chống các hành vi xâm hại quyền, lợi ích hợp pháp của người sử dụng sản phẩm, dịch vụ công nghệ thông tin. Quyền, lợi ích hợp pháp của người sử dụng sản phẩm, dịch vụ công nghệ thông tin được bảo vệ theo quy định của pháp luật.

Điều 68. Bảo vệ tên miền quốc gia Việt Nam ".vn"

1. Tên miền quốc gia Việt Nam ".vn" và tên miền cấp dưới của tên miền quốc gia Việt Nam ".vn" là một phần của tài nguyên thông tin quốc gia, có giá trị sử dụng như nhau và phải được quản lý, khai thác, sử dụng đúng mục đích, có hiệu quả.

Nhà nước khuyến khích tổ chức, cá nhân đăng ký và sử dụng tên miền quốc gia Việt Nam ".vn". Tên miền đăng ký phải thể hiện tính nghiêm túc để tránh gây sựhiểu nhầm hoặc xuyên tạc do tính đa âm, đa nghĩa hoặc khi không dùng dấu trong tiếng Việt.

2. Tên miền quốc gia Việt Nam ".vn" dành cho tổ chức Đảng, cơ quan nhà nước phải được bảo vệ và không được xâm phạm.

3. Tổ chức, cá nhân đăng ký sử dụng tên miền quốc gia Việt Nam ".vn" phải

Page 26: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

26

chịu trách nhiệm trước pháp luật về mục đích sử dụng và tính chính xác của các thông tin đăng ký và bảo đảm việc đăng ký, sử dụng tên miền quốc gia Việt Nam ".vn" không xâm phạm các quyền, lợi ích hợp pháp của tổ chức, cá nhân khác có trước ngày đăng ký.

4. Bộ Bưu chính, Viễn thông quy định việc đăng ký, quản lý, sử dụng và giải quyết tranh chấp tên miền quốc gia Việt Nam ".vn".

Điều 69. Bảo vệ quyền sở hữu trí tuệ trong lĩnh vực công nghệ thông tin

Việc bảo vệ quyền sở hữu trí tuệ trong lĩnh vực công nghệ thông tin phải thực hiện theo quy định của pháp luật về sở hữu trí tuệ và các quy định sau đây:

1. Tổ chức, cá nhân truyền đưa thông tin trên môi trường mạng có quyền tạo ra bản sao tạm thời một tác phẩm được bảo hộ do yêu cầu kỹ thuật của hoạt động truyền đưa thông tin và bản sao tạm thời được lưu trữ trong khoảng thời gian đủ để thực hiện việc truyền đưa thông tin;

2. Người sử dụng hợp pháp phần mềm được bảo hộ có quyền sao chép phần mềm đó để lưu trữ dự phòng và thay thế phần mềm bị phá hỏng mà không phải xin phép, không phải trả tiền bản quyền.

Điều 70. Chống thư rác

1. Tổ chức, cá nhân không được che giấu tên của mình hoặc giả mạo tên của tổ chức, cá nhân khác khi gửi thông tin trên môi trường mạng.

2. Tổ chức, cá nhân gửi thông tin quảng cáo trên môi trường mạng phải bảo đảmcho người tiêu dùng khả năng từ chối nhận thông tin quảng cáo.

3. Tổ chức, cá nhân không được tiếp tục gửi thông tin quảng cáo trên môi trườngmạng đến người tiêu dùng nếu người tiêu dùng đó thông báo không đồng ý nhậnthông tin quảng cáo.

Điều 71. Chống vi rút máy tính và phần mềm gây hại

Tổ chức, cá nhân không được tạo ra, cài đặt, phát tán vi rút máy tính, phần mềm gây hại vào thiết bị số của người khác để thực hiện một trong những hành vi sau đây:

1. Thay đổi các tham số cài đặt của thiết bị số;

2. Thu thập thông tin của người khác;

3. Xóa bỏ, làm mất tác dụng của các phần mềm bảo đảm an toàn, an ninh thông tin được cài đặt trên thiết bị số;

4. Ngăn chặn khả năng của người sử dụng xóa bỏ hoặc hạn chế sử dụng những phần mềm không cần thiết;

5. Chiếm đoạt quyền điều khiển thiết bị số;

6. Thay đổi, xóa bỏ thông tin lưu trữ trên thiết bị số;

7. Các hành vi khác xâm hại quyền, lợi ích hợp pháp của người sử dụng.

Page 27: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

27

Điều 72. Bảo đảm an toàn, bí mật thông tin

1. Thông tin riêng hợp pháp của tổ chức, cá nhân trao đổi, truyền đưa, lưu trữ trên môi trường mạng được bảo đảm bí mật theo quy định của pháp luật.

2. Tổ chức, cá nhân không được thực hiện một trong những hành vi sau đây:

a) Xâm nhập, sửa đổi, xóa bỏ nội dung thông tin của tổ chức, cá nhân khác trên môi trường mạng;

b) Cản trở hoạt động cung cấp dịch vụ của hệ thống thông tin;

c) Ngăn chặn việc truy nhập đến thông tin của tổ chức, cá nhân khác trên môi trường mạng, trừ trường hợp pháp luật cho phép;

d) Bẻ khóa, trộm cắp, sử dụng mật khẩu, khóa mật mã và thông tin của tổ chức, cá nhân khác trên môi trường mạng;

đ) Hành vi khác làm mất an toàn, bí mật thông tin của tổ chức, cá nhân khác được trao đổi, truyền đưa, lưu trữ trên môi trường mạng.

Điều 73. Trách nhiệm bảo vệ trẻ em

1. Nhà nước, xã hội và nhà trường có trách nhiệm sau đây:

a) Bảo vệ trẻ em không bị tác động tiêu cực của thông tin trên môi trường mạng;

b) Tiến hành các biện pháp phòng, chống các ứng dụng công nghệ thông tin có nội dung kích động bạo lực và khiêu dâm.

2. Gia đình có trách nhiệm ngăn chặn trẻ em truy nhập thông tin không có lợi cho trẻ em.

3. Cơ quan nhà nước có thẩm quyền tiến hành những biện pháp sau đây để ngăn ngừa trẻ em truy nhập thông tin không có lợi trên môi trường mạng:

a) Tổ chức xây dựng và phổ biến sử dụng phần mềm lọc nội dung;

b) Tổ chức xây dựng và phổ biến công cụ ngăn chặn trẻ em truy nhập thông tin không có lợi cho trẻ em;

c) Hướng dẫn thiết lập và quản lý trang thông tin điện tử dành cho trẻ em nhằm mục đích thúc đẩy việc thiết lập các trang thông tin điện tử có nội dung thông tinphù hợp với trẻ em, không gây hại cho trẻ em; tăng cường khả năng quản lý nội dung thông tin trên môi trường mạng phù hợp với trẻ em, không gây hại cho trẻ em.

4. Nhà cung cấp dịch vụ có biện pháp ngăn ngừa trẻ em truy nhập trên môi trường mạng thông tin không có lợi đối với trẻ em.

5. Sản phẩm, dịch vụ công nghệ thông tin mang nội dung không có lợi cho trẻ em phải có dấu hiệu cảnh báo.

Điều 74. Hỗ trợ người tàn tật

1. Nhà nước khuyến khích và tạo điều kiện thuận lợi cho người tàn tật tham gia hoạt động ứng dụng và phát triển công nghệ thông tin, phát triển năng lực làm

Page 28: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

28

việc của người tàn tật thông qua ứng dụng và phát triển công nghệ thông tin; có chính sách ưu tiên cho người tàn tật tham gia các chương trình giáo dục và đào tạo về công nghệ thông tin.

2. Chiến lược, kế hoạch, chính sách phát triển công nghệ thông tin quốc gia phảicó nội dung hỗ trợ, bảo đảm cho người tàn tật hòa nhập với cộng đồng.

3. Nhà nước có chính sách ưu đãi về thuế, tín dụng và ưu đãi khác cho hoạt độngsau đây:

a) Nghiên cứu - phát triển các công cụ và ứng dụng nhằm nâng cao khả năng củangười tàn tật trong việc truy nhập, sử dụng các nguồn thông tin và tri thức thông qua sử dụng máy tính và cơ sở hạ tầng thông tin;

b) Sản xuất, cung cấp công nghệ, thiết bị, dịch vụ, ứng dụng công nghệ thông tinvà nội dung thông tin số đáp ứng nhu cầu đặc biệt của người tàn tật.

Chương V: GIẢI QUYẾT TRANH CHẤP VÀ XỬ LÝ VI PHẠM

Điều 75. Giải quyết tranh chấp về công nghệ thông tin

1. Tranh chấp về công nghệ thông tin là tranh chấp phát sinh trong hoạt động ứng dụng và phát triển công nghệ thông tin.

2. Khuyến khích các bên giải quyết tranh chấp về công nghệ thông tin thông quahòa giải; trong trường hợp các bên không hòa giải được thì giải quyết theo quy định của pháp luật.

Điều 76. Hình thức giải quyết tranh chấp về đăng ký, sử dụng tên miền quốc gia Việt Nam ".vn"

Tranh chấp về đăng ký, sử dụng tên miền quốc gia Việt Nam ".vn" được giải quyết theo các hình thức sau đây:

1. Thông qua thương lượng, hòa giải;

2. Thông qua trọng tài;

3. Khởi kiện tại Tòa án.

Điều 77. Xử lý vi phạm pháp luật về công nghệ thông tin

1. Cá nhân có hành vi vi phạm pháp luật về công nghệ thông tin thì tùy theo tínhchất, mức độ vi phạm mà bị xử lý kỷ luật, xử phạt hành chính hoặc bị truy cứu trách nhiệm hình sự, nếu gây thiệt hại thì phải bồi thường theo quy định của pháp luật.

2. Tổ chức có hành vi vi phạm pháp luật về công nghệ thông tin thì tùy theo tínhchất, mức độ vi phạm mà bị xử phạt hành chính, đình chỉ hoạt động, nếu gây thiệt hại thì phải bồi thường theo quy định của pháp luật.

Chương VI: ĐIỀU KHOẢN THI HÀNH

Điều 78. Hiệu lực thi hành

Luật này có hiệu lực thi hành từ ngày 01 tháng 01 năm 2007.

Page 29: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

29

Điều 79. Hướng dẫn thi hành

Chính phủ quy định chi tiết và hướng dẫn thi hành Luật này.

Page 30: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

30

2. CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

I. TỔNG QUAN VỀ CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT1. Tầm quan trọng của cấu trúc dữ liệu và giải thuật1.1. Xây dựng cấu trúc dữ liệu

Có thể nói rằng không có một chương trình máy tính nào mà không có dữ liệu để xử lý.

Dữ liệu có thể là dữ liệu đưa vào (input data), dữ liệu trung gian hoặc dữ liệu đưa ra (output data). Do vậy, việc tổ chức để lưu trữ dữ liệu phục vụ cho chương trình có ýnghĩa rất quan trọng trong toàn bộ hệ thống chương trình. Việcxây dựng cấu trúc dữ liệu quyết định rất lớn đến chất lượng cũng như công sức của người lập trình trong việc thiết kế, cài đặt chương trình.1.2. Xây dựng giải thuậtKhái niệm giải thuật hay thuật giải mà nhiều khi còn được gọi là thuật toán dùngđể chỉ phương pháp hay cách thức (method) để giải quyết vần đề. Giải thuật có thể được minh họa bằng ngôn ngữ tự nhiên (natural language), bằng sơ đồ (flow chart) hoặc bằng mã giả (pseudo code). Trong thực tế, giải thuật thường được minh họa hay thể hiện bằng mã giả tựa trên một hay một số ngôn ngữ lập trình nào đó (thường là ngôn ngữ mà người lập trình chọn để cài đặt thuật toán), chẳng hạn như C, Pascal, …Khi đã xác định được cấu trúc dữ liệu thích hợp, người lập trình sẽ bắt đầu tiến hành xây dựng thuật giải tương ứng theo yêu cầu của bài toán đặt ra trên cơ sở của cấu trúc dữ liệu đã được chọn. Để giải quyết một vấn đề có thể có nhiều phương pháp, do vậy sự lựa chọn phương pháp phù hợp là một việc mà người lập trình phải cân nhắc và tính toán. Sự lựa chọn này cũng có thể góp phần đáng kể trong việc giảm bớt công việc của người lập trình trong phần cài đặt thuật toán trên một ngôn ngữ cụ thể.1.3. Mối quan hệ giữa cấu trúc dữ liệu và giải thuậtMối quan hệ giữa cấu trúc dữ liệu và Giải thuật có thể minh họa bằng đẳng thức:Cấu trúc dữ liệu + Giải thuật = Chương trìnhNhư vậy, khi đã có cấu trúc dữ liệu tốt, nắm vững giải thuật thực hiện thì việc thể hiện chương trình bằng một ngôn ngữ cụ thể chỉ là vấn đề thời gian. Khi có cấu trúc dữ liệu mà chưa tìm ra thuật giải thì không thể có chương trình và ngược lại không thể có Thuật giải khi chưa có cấu trúc dữ liệu. Một chương trình máy tính chỉ có thể được hoàn thiện khi có đầy đủ cả Cấu trúc dữ liệu để lưu trữ dữ liệu và Giải thuật xử lý dữ liệu theo yêu cầu của bài toán đặt ra.2. Đánh giá cấu trúc dữ liệu và giải thuật

2.1. Các tiêu chuẩn đánh giá cấu trúc dữ liệu

Để đánh giá một cấu trúc dữ liệu chúng ta thường dựa vào một số tiêu chí sau:

- Cấu trúc dữ liệu phải tiết kiệm tài nguyên (bộ nhớ trong),

Page 31: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

31

- Cấu trúc dữ liệu phải phản ảnh đúng thực tế của bài toán,- Cấu trúc dữ liệu phải dễ dàng trong việc thao tác dữ liệu.

2.2. Đánh giá độ phức tạp của thuật toánViệc đánh giá độ phức tạp của một thuật toán quả không dễ dàng chút nào. Ở dây, chúng ta chỉ muốn ước lượng thời gian thực hiện thuận toán T(n) để có thể có sự so sánh tương đối giữa các thuật toán với nhau. Trong thực tế, thời gian thực hiện một thuật toán còn phụ thuộc rất nhiều vào các điều kiện khác như cấutạo của máy tính, dữ liệu đưa vào, …, ở đây chúng ta chỉ xem xét trên mức độ của lượng dữ liệu đưa vào ban đầu cho thuật toán thực hiện.Để ước lượng thời gian thực hiện thuật toán chúng ta có thể xem xét thời gian thực hiện thuật toán trong hai trường hợp:- Trong trường hợp tốt nhất: Tmin- Trong trường hợp xấu nhất: TmaxTừ đó chúng ta có thể ước lượng thời gian thực hiện trung bình của thuật toán: Tavg3. Kiểu dữ liệu3.1. Khái niệm về kiểu dữ liệuKiểu dữ liệu T có thể xem như là sự kết hợp của 2 thành phần:- Miền giá trị mà kiểu dữ liệu T có thể lưu trữ: V,- Tập hợp các phép toán để thao tác dữ liệu: O.T = <V, O>Mỗi kiểu dữ liệu thường được đại diện bởi một tên (định danh). Mỗi phần tử dữ liệu có kiểu T sẽ có giá trị trong miền V và có thể được thực hiện các phép toán thuộc tập hợp các phép toán trong O.Để lưu trữ các phần tử dữ liệu này thường phải tốn một số byte(s) trong bộ nhớ, số byte(s) này gọi là kích thước của kiểu dữ liệu.3.2. Các kiểu dữ liệu cơ sởHầu hết các ngôn ngữ lập trình đều có cung cấp các kiểu dữ liệu cơ sở. Tùy vào mỗi ngôn ngữ mà các kiểu dữ liệu cơ sở có thể có các tên gọi khác nhau song chung quy lại có những loại kiểu dữ liệu cơ sở như sau:- Kiểu số nguyên: Có thể có dấu hoặc không có dấu và thường có các kích thướcsau:+ Kiểu số nguyên 1 byte+ Kiểu số nguyên 2 bytes+ Kiểu số nguyên 4 bytesKiểu số nguyên thường được thực hiện với các phép toán: O = {+, -, *, /, DIV, MOD, <,>, <=, >=, =, …}- Kiểu số thực: Thường có các kích thước sau:+ Kiểu số thực 4 bytes+ Kiểu số thực 6 bytes+ Kiểu số thực 8 bytes+ Kiểu số thực 10 bytesKiểu số thực thường được thực hiện với các phép toán: O = {+, -, *, /, <, >, <=,

Page 32: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

32

>=, =, …}- Kiểu ký tự: Có thể có các kích thước sau:+ Kiểu ký tự byte+ Kiểu ký tự 2 bytesKiểu ký tự thường được thực hiện với các phép toán: O = {+, -, <, >, <=, >=, =, ORD, CHR, …}- Kiểu chuỗi ký tự: Có kích thước tùy thuộc vào từng ngôn ngữ lập trìnhKiểu chuỗi ký tự thường được thực hiện với các phép toán: O = {+, &, <, >, <=, >=, =, Length, Trunc, …}- Kiểu luận lý: Thường có kích thước 1 byteKiểu luận lý thường được thực hiện với các phép toán: O = {NOT, AND, OR, XOR, <, >, <=, >=, =, …}3.3. Các kiểu dữ liệu có cấu trúcKiểu dữ liệu có cấu trúc là các kiểu dữ liệu được xây dựng trên cơ sở các kiểu dữ liệu đã có (có thể lại là một kiểu dữ liệu có cấu trúc khác). Tùy vào từng ngôn ngữ lập trình song thường có các loại sau:- Kiểu mảng hay còn gọi là dãy: kích thước bằng tổng kích thước của các phần tử - Kiểu bản ghi hay cấu trúc: kích thước bằng tổng kích thước các thành phần (Field)3.4. Kiểu dữ liệu con trỏCác ngôn ngữ lập trình thường cung cấp cho chúng ta một kiểu dữ liệu đặc biệt để lưu trữ các địa chỉ của bộ nhớ, đó là con trỏ (Pointer). Tùy vào loại con trỏ gần (near pointer) hay con trỏ xa (far pointer) mà kiểu dữ liệu con trỏ có các kích thước khác nhau:+ Con trỏ gần: 2 bytes+ Con trỏ xa: 4 bytes3.5. Kiểu dữ liệu tập tinTập tin (File) có thể xem là một kiểu dữ liệu đặc biệt, kích thước tối đa của tập tin tùy thuộc vào không gian đĩa nơi lưu trữ tập tin. Việc đọc, ghi dữ liệu trực tiếp trên tập tin rất mất thời gian và không bảo đảm an toàn cho dữ liệu trên tập tin đó. Do vậy, trong thực tế, chúng ta không thao tác trực tiếp dữ liệu trên tập tin mà chúng ta cần chuyển từng phần hoặc toàn bộ nội dung của tập tin vào trong bộ nhớ trong để xử lý.

II. KỸ THUẬT TÌM KIẾM (SEARCHING)

1. Khái quát về tìm kiếm

Trong thực tế, khi thao tác, khai thác dữ liệu chúng ta hầu như lúc nào cũng phảithực hiện thao tác tìm kiếm. Việc tìm kiếm nhanh hay chậm tùy thuộc vào trạng thái và trật tự của dữ liệu trên đó. Kết quả của việc tìm kiếm có thể là không có (không tìm thấy) hoặc có (tìm thấy). Nếu kết quả tìm kiếm là có tìm thấy thì nhiều khi chúng ta còn phải xác định xem vị trí của phần tử dữ liệu tìm thấy là ở đâu? Trong phạm vi của chương này chúng ta tìm cách giải quyết các câu hỏi này.

Page 33: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

33

Trước khi đi vào nghiên cứu chi tiết, chúng ta giả sử rằng mỗi phần tử dữ liệu được xem xét có một thành phần khóa (Key) để nhận diện, có kiểu dữ liệu là T nào đó, các thành phần còn lại là thông tin (Info) liên quan đến phần tử dữ liệu đó. Như vậy mỗi phần tử dữ liệu có cấu trúc dữ liệu như sau:

typedef struct DataElement

{ T Key;

InfoType

Info;

} DataType;

Trong tài liệu này, khi nói tới giá trị của một phần tử dữ liệu chúng ta muốn nói tới giá trị khóa (Key) của phần tử dữ liệu đó. Để đơn giản, chúng ta giả sử rằng mỗi phần tử dữ liệu chỉ là thành phần khóa nhận diện.Việc tìm kiếm một phần tử có thể diễn ra trên một dãy/mảng (tìm kiếm nội) hoặcdiễn ra trên một tập tin/ file (tìm kiếm ngoại). Phần tử cần tìm là phần tử cần thỏa mãn điều kiện tìm kiếm (thường có giá trị bằng giá trị tìm kiếm). Tùy thuộcvào từng bài toán cụ thể mà điều kiện tìm kiếm có thể khác nhau song chung quy việc tìm kiếm dữ liệu thường được vận dụng theo các thuật toán trình bày sau đây.2. Các giải thuật tìm kiếm nội (Tìm kiếm trên dãy/mảng)

2.1. Đặt vấn đề

Giả sử chúng ta có một mảng M gồm N phần tử. Vấn đề đặt ra là có hay không phần tử có giá trị bằng X trong mảng M? Nếu có thì phần tử có giá trị bằng X là phần tử thứ mấy trong mảng M?2.2. Tìm tuyến tính (Linear Search)

Thuật toán tìm tuyến tính còn được gọi là Thuật toán tìm kiếm tuần tự (Sequential Search).a. Tư tưởng:

Lần lượt so sánh các phần tử của mảng M với giá trị X bắt đầu từ phần tử đầu tiên cho đến khi tìm đến được phần tử có giá trị X hoặc đã duyệt qua hết tất cả các phần tử của mảng M thì kết thúc.

b. Thuật toán:

B1: k = 1 //Duyệt từ đầu mảngB2: IF M[k] ≠ X AND k ≤ N //Nếu chưa tìm thấy và cũng chưa duyệt hết mảng

B2.1: k++

B2.2: Lặp lại B2B3: IF k ≤ N

Page 34: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

34

Tìm thấy tại vị trí k

B4: ELSE

Không tìm thấy phần tử có giá trị X

B5: Kết thúcc. Cài đặt thuật toán:

Hàm LinearSearch có prototype:int LinearSearch (T M[], int N, T X);Hàm thực hiện việc tìm kiếm phần tử có giá trị X trên mảng M có N phần tử. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ 0 đến N-1 là vị trí tương ứng của phần tử tìm thấy. Trong trường hợp ngược lại, hàm trả về giá trị –1 (không tìm thấy). Nội dung của hàm như sau:int LinearSearch (T M[], int N, T X){ int k = 0;while (M[k] != X && k < N)k++;if (k < N)return (k);return (-1);}

d. Phân tích thuật toán:

- Trường hợp tốt nhất khi phần tử đầu tiên của mảng có giá trị bằng X:Số phép gán: Gmin = 1Số phép so sánh: Smin = 2 + 1 = 3- Trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:Số phép gán: Gmax = 1Số phép so sánh: Smax = 2N+1- Trung bình:Số phép gán: Gavg = 1Số phép so sánh: Savg = (3 + 2N + 1) : 2 = N + 2

e. Cải tiến thuật toán:

Trong thuật toán trên, ở mỗi bước lặp chúng ta cần phải thực hiện 2 phép so sánh để kiểm tra sự tìm thấy và kiểm soát sự hết mảng trong quá trình duyệt mảng. Chúng ta có thể giảm bớt 1 phép so sánh nếu chúng ta thêm vào cuối mảng một phần tử cầm canh (sentinel/stand by) có giá trị bằng X để nhận diện rasự hết mảng khi duyệt mảng, khi đó thuật toán này được cải tiến lại như sau:

B1: k = 1

B2: M[N+1] = X //Phần tử cầm canh

B3: IF M[k] ≠ X

B3.1: k++B3.2: Lặp lại B3

Page 35: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

35

B4: IF k < N

Tìm thấy tại vị trí kB5: ELSE //k = N song đó chỉ là phần tử cầm canh

Không tìm thấy phần tử có giá trị X

B6: Kết thúcHàm LinearSearch được viết lại thành hàm LinearSearch1 như sau:

int LinearSearch1 (T M[], int N, T X){ int k = 0;

M[N] = X;while (M[k] != X)

k++;if (k < N)

return (k);return (-1);}

f. Phân tích thuật toán cải tiến:

- Trường hợp tốt nhất khi phần tử đầu tiên của mảng có giá trị bằng X:Số phép gán: Gmin = 2Số phép so sánh: Smin = 1 + 1 = 2- Trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:Số phép gán: Gmax = 2Số phép so sánh: Smax = (N+1) + 1 = N + 2- Trung bình:Số phép gán: Gavg = 2Số phép so sánh: Savg = (2 + N + 2) : 2 = N/2 + 2- Như vậy, nếu thời gian thực hiện phép gán không đáng kể thì thuật toán cải tiến sẽ chạy nhanh hơn thuật toán nguyên thủy.2.3. Tìm nhị phân (Binary Search)Thuật toán tìm tuyến tính tỏ ra đơn giản và thuận tiện trong trường hợp số phần tử của dãy không lớn lắm. Tuy nhiên, khi số phần tử của dãy khá lớn, chẳng hạn chúng ta tìm kiếm tên một khách hàng trong một danh bạ điện thoại của một thành phố lớn theo thuật toán tìm tuần tự thì quả thực mất rất nhiều thời gian. Trong thực tế, thông thường các phần tử của dãy đã có một thứ tự, do vậy thuật toán tìm nhị phân sau đây sẽ rút ngắn đáng kể thời gian tìm kiếm trên dãy đã có thứ tự. Trong thuật toán này chúng ta giả sử các phần tử trong dãy đã có thứ tự tăng (không giảm dần), tức là các phần tử đứng trước luôn có giá trị nhỏ hơn hoặc bằng (không lớn hơn) phần tử đứng sau nó.

Khi đó, nếu X nhỏ hơn giá trị phần tử đứng ở giữa dãy (M[Mid]) thì X chỉ có

Page 36: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

36

thể tìm thấy ở nửa đầu của dãy và ngược lại, nếu X lớn hơn phần tử M[Mid] thì X chỉ có thể tìm thấy ở nửa sau của dãy.a. Tư tưởng:

Phạm vi tìm kiếm ban đầu của chúng ta là từ phần tử đầu tiên của dãy (First = 1)cho đến phần tử cuối cùng của dãy (Last = N).So sánh giá trị X với giá trị phần tử đứng ở giữa của dãy M là M[Mid].Nếu X = M[Mid]: Tìm thấyNếu X < M[Mid]: Rút ngắn phạm vi tìm kiếm về nửa đầu của dãy M (Last = Mid–1)Nếu X > M[Mid]: Rút ngắn phạm vi tìm kiếm về nửa sau của dãy M (First = Mid+1)Lặp lại quá trình này cho đến khi tìm thấy phần tử có giá trị X hoặc phạm vi tìmkiếm của chúng ta không còn nữa (First > Last).b. Thuật toán đệ quy (Recursion Algorithm):B1: First = 1B2: Last = N

B3: IF (First > Last) //Hết phạm vi tìm kiếm

B3.1: Không tìm thấy

B3.2: Thực hiện BktB4: Mid = (First + Last)/ 2B5: IF (X = M[Mid])

B5.1: Tìm thấy tại vị trí MidB5.2: Thực hiện Bkt

B6: IF (X < M[Mid])

Tìm đệ quy từ First đến Last = Mid – 1B7: IF (X > M[Mid])

Tìm đệ quy từ First = Mid + 1 đến Last

Bkt: Kết thúcc. Cài đặt thuật toán đệ quy:Hàm BinarySearch có prototype:int BinarySearch (T M[], int N, T X);Hàm thực hiện việc tìm kiếm phần tử có giá trị X trong mảng M có N phần tử đãcó thứ tự tăng. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ 0 đến N-1 làvị trí tương ứng của phần tử tìm thấy. Trong trường hợp ngược lại, hàm trả về giá trị –1 (không tìm thấy). Hàm BinarySearch sử dụng hàm đệ quy RecBinarySearch có prototype:

int RecBinarySearch(T M[], int First, int Last, T X);Hàm RecBinarySearch thực hiện việc tìm kiếm phần tử có giá trị X trên mảng Mtrong phạm vi từ phần tử thứ First đến phần tử thứ Last. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ First đến Last là vị trí tương ứng của phần tử tìm

Page 37: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

37

thấy. Trong trường hợp ngược lại, hàm trả về giá trị –1 (không tìm thấy). Nội dung của cáchàm như sau:int RecBinarySearch (T M[], int First, int Last, T X){ if (First > Last)return (-1);int Mid = (First + Last)/2;if (X == M[Mid])return (Mid);if (X < M[Mid])return(RecBinarySearch(M, First, Mid – 1, X));elsereturn(RecBinarySearch(M, Mid + 1, Last, X));}//==================================================int BinarySearch (T M[], int N, T X){ return (RecBinarySearch(M, 0, N – 1, X));}d. Phân tích thuật toán đệ quy:- Trường hợp tốt nhất khi phần tử ở giữa của mảng có giá trị bằng X:Số phép gán: Gmin = 1Số phép so sánh: Smin = 2- Trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:Số phép gán: Gmax = log2N + 1Số phép so sánh: Smax = 3log2N + 1- Trung bình:Số phép gán: Gavg = ½ log2N + 1Số phép so sánh: Savg = ½(3log2N + 3)e. Thuật toán không đệ quy (Non-Recursion Algorithm):

B1: First = 1B2: Last = NB3: IF (First > Last)B3.1: Không tìm thấyB3.2: Thực hiện BktB4: Mid = (First + Last)/ 2B5: IF (X = M[Mid])

B5.1: Tìm thấy tại vị trí Mid

B5.2: Thực hiện BktB6: IF (X < M[Mid])

B6.1: Last = Mid – 1B6.2: Lặp lại B3

B7: IF (X > M[Mid])

B7.1: First = Mid + 1

Page 38: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

38

B7.2: Lặp lại B3

Bkt: Kết thúc

f. Cài đặt thuật toán không đệ quy:

Hàm NRecBinarySearch có prototype: int NRecBinarySearch (T M[], int N, T X); Hàm thực hiện việc tìm kiếm phần tử có giá trị X trong mảng M có N phần tử đã có thứ tự tăng. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ 0 đến N-1 là vị trí tương ứng của phần tử tìm thấy. Trong trường hợp ngược lại, hàm trả về giá trị –1 (không tìm thấy). Nội dung của hàm NRecBinarySearch như sau:int NRecBinarySearch (T M[], int N, T X){ int First = 0;int Last = N – 1;while (First <= Last){ int Mid = (First + Last)/2;if (X == M[Mid])return(Mid);if (X < M[Mid])Last = Mid – 1;elseFirst = Mid + 1;}return(-1);}g. Phân tích thuật toán không đệ quy:

- Trường hợp tốt nhất khi phần tử ở giữa của mảng có giá trị bằng X:Số phép gán: Gmin = 3Số phép so sánh: Smin = 2- Trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:Số phép gán: Gmax = 2log2N + 4Số phép so sánh: Smax = 3log2N + 1- Trung bình:Số phép gán: Gavg = log2N + 3.5Số phép so sánh: Savg = ½(3log2N + 3)h. Ví dụ:Giả sử ta có dãy M gồm 10 phần tử có khóa như sau (N = 10):1 3 4 5 8 15 17 22 25 30- Trước tiên ta thực hiện tìm kiếm phần tử có giá trị X = 5 (tìm thấy):

3. Các giải thuật tìm kiếm ngoại (Tìm kiếm trên tập tin)

3.1. Đặt vấn đề

Page 39: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

39

Giả sử chúng ta có một tập tin F lưu trữ N phần tử. Vấn đề đặt ra là có hay không phần tử có giá trị bằng X được lưu trữ trong tập tin F? Nếu có thì phần tử có giá trị bằng X là phần tử nằm ở vị trí nào trên tập tin F?

3.2. Tìm tuyến tính

a. Tư tưởng:

Lần lượt đọc các phần tử từ đầu tập tin F và so sánh với giá trị X cho đến khi đọc được phần tử có giá trị X hoặc đã đọc hết tập tin F thì kết thúc.

b. Thuật toán:

B1: k = 0

B2: rewind(F) //Về đầu tập tin F

B3: read(F, a) //Đọc một phần tử từ tập tin F

B4: k = k + sizeof(T) //Vị trí phần tử hiện hành (sau phần tử mới đọc)

B5: IF a ≠ X AND !(eof(F))

Lặp lại B3

B6: IF (a = X)

Tìm thấy tại vị trí k byte(s) tính từ đầu tập tin

B7: ELSE

Không tìm thấy phần tử có giá trị X

B8: Kết thúc

c. Cài đặt thuật toán:

Hàm FLinearSearch có prototype:

long FLinearSearch (char * FileName, T X);

Hàm thực hiện tìm kiếm phần tử có giá trị X trong tập tin có tên FileName. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ 0 đến filelength(FileName) là vị trí tương ứng của phần tử tìm thấy so với đầu tập tin (tính bằng byte). Trong trường hợp ngược lại, hoặc có lỗi khi thao tác trên tập tin hàm trả về giá trị –1 (không tìm thấy hoặc lỗi thao tác trên tập tin). Nội dung của hàm như sau:

long FLinearSearch (char * FileName, T X)

{ FILE * Fp;

Fp = fopen(FileName, “rb”);

if (Fp == NULL)

return (-1);

long k = 0;

T a;

Page 40: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

40

int SOT = sizeof(T);

while (!feof(Fp))

{ if (fread(&a, SOT, 1, Fp) == 0)

break;

k = k + SOT;

if (a == X)

break;

}

fclose(Fp);

if (a == X)

return (k - SOT);

return (-1);

}

d. Phân tích thuật toán:

- Trường hợp tốt nhất khi phần tử đầu tiên của tập tin có giá trị bằng X:

Số phép gán: Gmin = 1 + 2 = 3

Số phép so sánh: Smin = 2 + 1 = 3

Số lần đọc tập tin: Dmin = 1

- Trường hợp xấu nhất khi không tìm thấy phần tử nào có giá trị bằng X:

Số phép gán: Gmax = N + 2

Số phép so sánh: Smax = 2N + 1

Số lần đọc tập tin: Dmax = N

- Trung bình:

Số phép gán: Gavg = ½(N + 5)

Số phép so sánh: Savg = (3 + 2N + 1) : 2 = N + 2

Số lần đọc tập tin: Davg = ½(N + 1)

3.3. Tìm kiếm theo chỉ mục (Index Search)

Như chúng ta đã biết, mỗi phần tử dữ liệu được lưu trữ trong tập tin dữ liệu F thường có kích thước lớn, điều này cũng làm cho kích thước của tập tin F cũng khá lớn. Vì vậy việc thao tác dữ liệu trực tiếp lên tập tin F sẽ trở nên lâu, chưa kể sự mất an toàn cho dữ liệu trên tập tin. Để giải quyết vấn đề này, đi kèmtheo một tập tin dữ liệu thường có thêm các tập tin chỉ mục (Index File) để làm nhiệm vụ điều khiển thứ tự truy xuất dữ liệu trên tập tin theo một khóa chỉ mục (Index key) nào đó. Mỗi phần tử dữ liệu trong tập tin chỉ mục IDX gồm có 2

Page 41: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

41

thành phần: Khóa chỉ mục và Vị trí vật lý của phần tử dữ liệu có khóa chỉ mục tương ứng trên tập tin dữ liệu. Cấu trúc dữ liệu của các phần tử trong tập tin chỉ mục như sau:

typedef struct IdxElement

{ T IdxKey;

long Pos;

} IdxType;

Tập tin chỉ mục luôn luôn được sắp xếp theo thứ tự tăng của khóa chỉ mục. Việc tạo tập tin chỉ mục IDX sẽ được nghiên cứu trong Chương 3, trong phần này chúng ta xem như đã có tập tin chỉ mục IDX để thao tác.

a. Tư tưởng:

Lần lượt đọc các phần tử từ đầu tập tin IDX và so sánh thành phần khóa chỉ mục với giá trị X cho đến khi đọc được phần tử có giá trị khóa chỉ mục lớn hơn hoặc bằng X hoặc đã đọc hết tập tin IDX thì kết thúc. Nếu tìm thấy thì ta đã có vị trí vật lý của phần tử dữ liệu trên tập tin dữ liệu F, khi đó chúng ta có thể truy cập trực tiếp đến vị trí này để đọc dữ liệu của phần tử tìm thấy.

b. Thuật toán:

B1: rewind(IDX)

B2: read(IDX, ai)

B3: IF ai.IdxKey < X AND !(eof(IDX))

Lặp lại B2

B4: IF ai.IdxKey = X

Tìm thấy tại vị trí ai.Pos byte(s) tính từ đầu tập tin

B5: ELSE

Không tìm thấy phần tử có giá trị X

B6: Kết thúc

c. Cài đặt thuật toán:

Hàm IndexSearch có prototype:

long IndexSearch (char * IdxFileName, T X);

Hàm thực hiện tìm kiếm phần tử có giá trị X dựa trên tập tin chỉ mục có tên

IdxFileName. Nếu tìm thấy, hàm trả về một số nguyên có giá trị từ 0 đến

filelength(FileName)-1 là vị trí tương ứng của phần tử tìm thấy so với đầu tập tin dữ liệu (tính bằng byte). Trong trường hợp ngược lại, hoặc có lỗi khi thao tác trên tập tin chỉ mục hàm trả về giá trị –1 (không tìm thấy). Nội dung của hàmnhư sau:

Page 42: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

42

long IndexSearch (char * IdxFileName, T X)

{ FILE * IDXFp;

IDXFp = fopen(IdxFileName, “rb”);

if (IDXFp == NULL)

return (-1);

IdxType ai;

int SOIE = sizeof(IdxType);

while (!feof(IDXFp))

{ if (fread(&ai, SOIE, 1, IDXFp) == 0)

break;

if (ai.IdxKey >= X)

break;

}

fclose(IDXFp);

if (ai.IdxKey == X)

return (ai.Pos);

return (-1);

}

d. Phân tích thuật toán:

- Trường hợp tốt nhất khi phần tử đầu tiên của tập tin chỉ mục có giá trị khóa chỉmục lớn hơn hoặc bằng X:

Số phép gán: Gmin = 1

Số phép so sánh: Smin = 2 + 1 = 3

Số lần đọc tập tin: Dmin = 1

- Trường hợp xấu nhất khi mọi phần tử trong tập tin chỉ mục đều có khóa chỉ mục nhỏ hơn giá trị X:

Số phép gán: Gmax = 1

Số phép so sánh: Smax = 2N + 1

Số lần đọc tập tin: Dmax = N

- Trung bình:

Số phép gán: Gavg = 1

Số phép so sánh: Savg = (3 + 2N + 1) : 2 = N + 2

Số lần đọc tập tin: Davg = ½(N + 1)

Page 43: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

43

III. KỸ THUẬT SẮP XẾP (SORTING)

1. Khái quát về sắp xếp

Để thuận tiện và giảm thiểu thời gian thao tác mà đặc biệt là để tìm kiếm dữ liệudễ dàng và nhanh chóng, thông thường trước khi thao tác thì dữ liệu trên mảng, trên tập tin đã có thứ tự. Do vậy, thao tác sắp xếp dữ liệu là một trong những thao tác cần thiết và thường gặp trong quá trình lưu trữ, quản lý dữ liệu.Thứ tự xuất hiện dữ liệu có thể là thứ tự tăng (không giảm dần) hoặc thứ tự giảm(không tăng dần). Trong phạm vi chương này chúng ta sẽ thực hiện việc sắp xếp dữ liệu theo thứ tự tăng. Việc sắp xếp dữ liệu theo thứ tự giảm hoàn toàn tương tự.Có rất nhiều thuật toán sắp xếp song chúng ta có thể phân chia các thuật toán sắp xếp thành hai nhóm chính căn cứ vào vị trí lưu trữ của dữ liệu trong máy tính, đó là:

- Các giải thuật sắp xếp thứ tự nội (sắp xếp thứ tự trên dãy/mảng),- Các giải thuật sắp xếp thứ tự ngoại (sắp xếp thứ tự trên tập tin/file).Cũng như trong chương trước, chúng ta giả sử rằng mỗi phần tử dữ liệu được xem xét có một thành phần khóa (Key) để nhận diện, có kiểu dữ liệu là T nào đó, các thành phần còn lại là thông tin (Info) liên quan đến phần tử dữ liệu đó. Như vậy mỗi phần tử dữ liệu có cấu trúc dữ liệu như sau:

typedef struct DataElement{ T Key;

InfoType Info;

} DataType;Trong chương này nói riêng và tài liệu này nói chung, các thuật toán sắp xếp củachúng ta là sắp xếp sao cho các phần tử dữ liệu có thứ tự tăng theo thành phần khóa (Key) nhận diện. Để đơn giản, chúng ta giả sử rằng mỗi phần tử dữ liệu chỉlà thành phần khóa nhận diện.2. Các giải thuật sắp xếp nội (Sắp xếp trên dãy/mảng)

Ở đây, toàn bộ dữ liệu cần sắp xếp được đưa vào trong bộ nhớ trong (RAM). Do vậy, số phần tử dữ liệu không lớn lắm do giới hạn của bộ nhớ trong, tuy nhiên tốc độ sắp xếp tương đối nhanh. Các giải thuật sắp xếp nội bao gồm các nhóm sau:- Sắp xếp bằng phương pháp đếm (counting sort),- Sắp xếp bằng phương pháp đổi chỗ (exchange sort),- Sắp xếp bằng phương pháp chọn lựa (selection sort),- Sắp xếp bằng phương pháp chèn (insertion sort),- Sắp xếp bằng phương pháp trộn (merge sort).Trong phạm vi của giáo trình này chúng ta chỉ trình bày một số thuật toán sắp xếp tiêu biểu trong các thuật toán sắp xếp ở các nhóm trên và giả sử thứ tự sắp xếp N phần tử có kiểu dữ liệu T trong mảng M là thứ tự tăng.

2.1. Sắp xếp bằng phương pháp đổi chỗ (Exchange Sort)

Page 44: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

44

Các thuật toán trong phần này sẽ tìm cách đổi chỗ các phần tử đứng sai vị trí (so với mảng đã sắp xếp) trong mảng M cho nhau để cuối cùng tất cả các phần tử trong mảng M đều về đúng vị trí như mảng đã sắp xếp.Các thuật toán sắp xếp bằng phương pháp đổi chỗ bao gồm:- Thuật toán sắp xếp nổi bọt (bubble sort),- Thuật toán sắp xếp lắc (shaker sort),- Thuật toán sắp xếp giảm độ tăng hay độ dài bước giảm dần (shell sort),- Thuật toán sắp xếp dựa trên sự phân hoạch (quick sort).Ở đây chúng ta trình bày hai thuật toán phổ biến là thuật toán sắp xếp nổi bọt và sắp xếp dựa trên sự phân hoạch.a. Thuật toán sắp xếp nổi bọt (Bubble Sort):- Tư tưởng:+ Đi từ cuối mảng về đầu mảng, trong quá trình đi nếu phần tử ở dưới (đứng phía sau) nhỏ hơn phần tử đứng ngay trên (trước) nó thì theo nguyên tắc của bọt khí phần tử nhẹ sẽ bị “trồi” lên phía trên phần tử nặng (hai phần tử này sẽ được đổi chỗ cho nhau). Kết quả là phần tử nhỏ nhất (nhẹ nhất) sẽ được đưa lên (trồi lên) trên bề mặt (đầu mảng) rất nhanh.+ Sau mỗi lần đi chúng ta đưa được một phần tử trồi lên đúng chỗ. Do vậy, sau N–1 lần đi thì tất cả các phần tử trong mảng M sẽ có thứ tự tăng.- Thuật toán:B1: First = 1B2: IF (First = N)Thực hiện BktB3: ELSEB3.1: Under = NB3.2: If (Under = First)Thực hiện B4B3.3: ElseB3.3.1: if (M[Under] < M[Under - 1])Swap(M[Under], M[Under – 1]) //Đổi chỗ 2 phần tử cho nhauB3.3.2: Under--B3.3.3: Lặp lại B3.2B4: First++B5: Lặp lại B2Bkt: Kết thúc- Cài đặt thuật toán:Hàm BubbleSort có prototype như sau:void BubbleSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp xếp nổi bọt. Nội dung của hàm như sau:void BubbleSort(T M[], int N){ for (int I = 0; I < N-1; I++)for (int J = N-1; J > I; J--)if (M[J] < M[J-1])

Page 45: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

45

Swap(M[J], M[J-1]);return;}Hàm Swap có prototype như sau:void Swap(T &X, T &Y);Hàm thực hiện việc hoán vị giá trị của hai phần tử X và Y cho nhau. Nội dung của hàm như sau:void Swap(T &X, T &Y){ T Temp = X;X = Y;Y = Temp;return;}- Ví dụ minh họa thuật toán:Giả sử ta cần sắp xếp mảng M có 10 phần tử sau (N = 10):M: 15 10 2 20 10 5 25 35 22 30b. Thuật toán sắp xếp dựa trên sự phân hoạch (Partitioning Sort):

Thuật toán sắp xếp dựa trên sự phân hoạch còn được gọi là thuật toán sắp xếp nhanh (Quick Sort).- Tư tưởng:+ Phân hoạch dãy M thành 03 dãy con có thứ tự tương đối thỏa mãn điều kiện:Dãy con thứ nhất (đầu dãy M) gồm các phần tử có giá trị nhỏ hơn giá trị trung bình của dãy M,Dãy con thứ hai (giữa dãy M) gồm các phần tử có giá trị bằng giá trị trung bình của dãy M,Dãy con thứ ba (cuối dãy M) gồm các phần tử có giá trị lớn hơn giá trị trung bình của dãy M,+ Nếu dãy con thứ nhất và dãy con thứ ba có nhiều hơn 01 phần tử thì chúng ta lại tiếp tục phân hoạch đệ quy các dãy con này.+ Việc tìm giá trị trung bình của dãy M hoặc tìm kiếm phần tử trong M có giá trịbằng giá trị trung bình của dãy M rất khó khăn và mất thời gian. Trong thực tế, chúng ta chọn một phần tử bất kỳ (thường là phần tử đứng ở vị trí giữa) trong dãy các phần tử cần phân hoạch để làm giá trị cho các phần tử của dãy con thứ hai (dãy giữa) sau khi phân hoạch. Phần tử này còn được gọi là phần tử biên (boundary element). Các phần tử trong dãy con thứ nhất sẽ có giá trị nhỏ hơn giátrị phần tử biên và các phần tử trong dãy con thứ ba sẽ có giá trị lớn hơn giá trị phần tử biên.+ Việc phân hoạch một dãy được thực hiện bằng cách tìm các cặp phần tử đứng ở hai dãy con hai bên phần tử giữa (dãy 1 và dãy 3) nhưng bị sai thứ tự (phần tử đứng ở dãy 1 có giá trị lớn hơn giá trị phần tử giữa và phần tử đứng ở dãy 3 có giá trị nhỏ hơn giá trị phần tử giữa) để đổi chỗ (hoán vị) cho nhau.- Thuật toán:B1: First = 1B2: Last = N

Page 46: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

46

B3: IF (First ≥ Last) //Dãy con chỉ còn không quá 01 phần tử

Thực hiện Bkt

B4: X = M[(First+Last)/2] //Lấy giá trị phần tử giữa

B5: I = First B6: IF (M[I] > X) //Xuất phát từ đầu dãy 1 để tìm phần tử có giá trị > X

Thực hiện B8B7: ELSEB7.1: I++B7.2: Lặp lại B6

B8: J = Last B9: IF (M[J] < X)//Xuất phát từ cuối dãy 3 để tìm phần tử có giá trị < X

Thực hiện B11B10: ELSEB10.1: J--B10.2: Lặp lại B9B11: IF (I ≤ J)B11.1: Hoán_Vị(M[I], M[J])B11.2: I++B11.3: J--B11.4: Lặp lại B6B12: ELSEB12.1: Phân hoạch đệ quy dãy con từ phần tử thứ First đến phần tử thứ JB12.2: Phân hoạch đệ quy dãy con từ phần tử thứ I đến phần tử thứ LastBkt: Kết thúc- Cài đặt thuật toán:Hàm QuickSort có prototype như sau:void QuickSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp xếp nhanh. Hàm QuickSort sử dụng hàm phân hoạch đệ quy PartitionSort để thực hiện việc sắp xếp theo thứ tự tăng các phần tử của một dãy con giới hạn từ phần tử thứ First đến phần tử thứ Last trên mảng M. HàmPartitionSort có prototype như sau:void PartitionSort(T M[], int First, int Last);Nội dung của các hàm như sau:void PartitionSort(T M[], int First, int Last){ if (First >= Last)return;T X = M[(First+Last)/2];int I = First;int J = Last;do { while (M[I] < X)

Page 47: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

47

I++;while (M[J] > X)J--;if (I <= J){ Swap(M[I], M[J]);I++;J--;}}while (I <= J);PartitionSort(M, First, J);PartitionSort(M, I, Last);return;}//===========================================void QuickSort(T M[], int N){ PartitionSort(M, 0, N-1);return;}- Ví dụ minh họa:

Giả sử ta cần sắp xếp mảng M có 10 phần tử sau (N = 10):

M: 45 55 25 20 15 5 25 30 10 3

2.2. Sắp xếp bằng phương pháp chọn (Selection Sort)

Giả sử ta cần sắp xếp mảng M có 10 phần tử sau (N = 10):

M: 45 55 25 20 15 5 25 30 10 3

Các thuật toán trong phần này sẽ tìm cách lựa chọn các phần tử thỏa mãn điều kiện chọn lựa để đưa về đúng vị trí của phần tử đó, cuối cùng tất cả các phần tử trong mảng M đều về đúng vị trí.Các thuật toán sắp xếp bằng phương pháp chọn bao gồm:- Thuật toán sắp xếp chọn trực tiếp (straight selection sort),- Thuật toán sắp xếp dựa trên khối/heap hay sắp xếp trên cây (heap sort).Ở đây chúng ta chỉ trình bày thuật toán sắp xếp chọn trực tiếpThuật toán sắp xếp chọn trực tiếp (Straight Selection Sort):- Tư tưởng:+ Ban đầu dãy có N phần tử chưa có thứ tự. Ta chọn phần tử có giá trị nhỏ nhất trong N phần tử chưa có thứ tự này để đưa lên đầu nhóm N phần tử.+ Sau lần thứ nhất chọn lựa phần tử nhỏ nhất và đưa lên đầu nhóm chúng ta còn lại N-1 phần tử đứng ở phía sau dãy M chưa có thứ tự. Chúng ta tiếp tục chọn phần tử có giá trị nhỏ nhất trong N-1 phần tử chưa có thứ tự này để đưa lên đầu nhóm N-1 phần tử. …. Do vậy, sau N–1 lần chọn lựa phần tử nhỏ nhất để đưa

Page 48: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

48

lên đầu nhóm thì tất cả các phần tử trong dãy M sẽ có thứ tự tăng.+ Như vậy, thuật toán này chủ yếu chúng ta đi tìm giá trị nhỏ nhất trong nhóm N-K phần tử chưa có thứ tự đứng ở phía sau dãy M. Việc này đơn giản chúng ta vận dụng thuật toán tìm kiếm tuần tự.- Thuật toán:B1: K = 0B2: IF (K = N-1)Thực hiện BktB3: Min = M[K+1]B4: PosMin = K+1B5: Pos = K+2B6: IF (Pos > N)Thực hiện B8B7: ELSEB7.1: If (Min > M[Pos])B7.1.1: Min = M[Pos]B7.1.2: PosMin = PosB7.2: Pos++B7.3: Lặp lại B6B8: HoánVị(M[K+1], M[PosMin])B9: K++B10: Lặp lại B2Bkt: Kết thúc- Cài đặt thuật toán:Hàm SelectionSort có prototype như sau:void SelectionSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp xếp chọn trực tiếp. Nội dung của hàm như sau:void SelectionSort(T M[], int N){ int K = 0, PosMin;while (K < N-1){ T Min = M[K];PosMin = K;for (int Pos = K+1; Pos < N; Pos++)if (Min > M[Pos]){ Min = M[Pos];PosMin = Pos}Swap(M[K], M[PosMin]);K++;}return;}2.3. Sắp xếp bằng phương pháp chèn (Insertion Sort)

Page 49: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

49

Các thuật toán trong phần này sẽ tìm cách tận dụng K phần tử đầu dãy M đã có thứ tự tăng, chúng ta đem phần tử thứ K+1 chèn vào K phần tử đầu dãy sao cho sau khi chèn chúng ta có K+1 phần tử đầu dãy M đã có thứ tự tăng.Ban đầu dãy M có ít nhất 1 phần tử đầu dãy đã có thứ tự tăng (K=1). Như vậy sau tối đa N-1 bước chèn là chúng ta sẽ sắp xếp xong dãy M có N phần tử theo thứ tự tăng.Các thuật toán sắp xếp bằng phương pháp chèn bao gồm:- Thuật toán sắp xếp chèn trực tiếp (straight insertion sort),- Thuật toán sắp xếp chèn nhị phân (binary insertion sort).Trong tài liệu này chúng ta chỉ trình bày thuật toán sắp xếp chèn trực tiếp.Thuật toán sắp xếp chèn trực tiếp (Straight Insertion Sort):- Tư tưởng:Để chèn phần tử thứ K+1 vào K phần tử đầu dãy đã có thứ tự chúng ta sẽ tiến hành tìm vị trí đúng của phần tử K+1 trong K phần tử đầu bằng cách vận dụng thuật giải tìm kiếm tuần tự (Sequential Search). Sau khi tìm được vị trí chèn (chắc chắn có vị trí chèn) thì chúng ta sẽ tiến hành chèn phần tử K+1 vào đúng vị trí chèn bằng cách dời các phần tử từ vị trí chèn đến phần tử thứ K sang phải (ra phía sau) 01 vị trí và chèn phần tử K+1 vào vị trí của nó.- Thuật toán:B1: K = 1B2: IF (K = N)Giáo trình: Cấu Trúc Dữ Liệu và Giải ThuậtTrang: 34Thực hiện BktB3: X = M[K+1]B4: Pos = 1B5: IF (Pos > K)Thực hiện B7B6: ELSE //Tìm vị trí chènB6.1: If (X <= M[Pos])Thực hiện B7B6.2: Pos++B6.3: Lặp lại B6.1B7: I = K+1B8: IF (I > Pos) //Nếu còn phải dời các phần tử từ Pos->K về phía sau 1 vị tríB8.1: M[I] = M[I-1]B8.2: I--B8.3: Lặp lại B8B9: ELSE //Đã dời xong các phần tử từ Pos->K về phía sau 1 vị tríB9.1: M[Pos] = X //Chèn X vào vị trí PosB9.2: K++B9.3: Lặp lại B2Bkt: Kết thúc- Cài đặt thuật toán:

Page 50: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

50

Hàm InsertionSort có prototype như sau:void InsertionSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp xếp chèn trực tiếp. Nội dung của hàm như sau:void InsertionSort(T M[], int N){ int K = 1, Pos;while (K < N){ T X = M[K];Pos = 0;while (X > M[Pos])Pos++;for (int I = K; I > Pos; I--)M[I] = M[I-1];M[Pos] = X;K++;}return;}2.4. Sắp xếp bằng phương pháp trộn (Merge Sort)

Các thuật toán trong phần này sẽ tìm cách tách mảng M thành các mảng con theo các đường chạy (run) rồi sau đó tiến hành nhập các mảng này lại theo từng cặp đường chạy để tạo thành các đường chạy mới có chiều dài lớn hơn đường chạy cũ. Sau một số lần tách/nhập thì cuối cùng mảng M chỉ còn lại 1 đường chạy, lúc đó thì các phần tử trên mảng M sẽ trở nên có thứ tự.Các thuật toán sắp xếp bằng phương pháp trộn bao gồm:- Thuật toán sắp xếp trộn thẳng hay trộn trực tiếp (straight merge sort),- Thuật toán sắp xếp trộn tự nhiên (natural merge sort).Trước khi đi vào chi tiết từng thuật toán chúng ta hãy tìm hiểu khái niệm và các vấn đề liên quan đến đường chạy (run)- Đường chạy (Run):Dãy M[I], M[I+1], …, M[J] (I ≤ J: 1 ≤ I, J ≤ N) là một đường chạy nếu nó có thứ tự.- Chiều dài của đường chạy (Run’s Length):Số phần tử của một đường chạy còn được gọi là chiều dài của đường chạy.Như vậy:+ Mỗi phần tử của dãy là một đường chạy có chiều dài bằng 1.+ Một dãy có thể bao gồm nhiều đường chạy.- Trộn các đường chạy:Khi ta trộn các đường chạy lại với nhau sẽ cho ra một đường chạy mới có chiều dài bằng tổng chiều dài các đường chạy ban đầu.a. Thuật toán sắp xếp trộn trực tiếp hay trộn thẳng (Straight Merge Sort):- Tư tưởng:

Page 51: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

51

Ban đầu dãy M có N run(s) với chiều dài mỗi run: L = 1, ta tiến hành phân phối luân phiên N run(s) của dãy M về hai dãy phụ Temp1, Temp2 (Mỗi dãy phụ có N/2 run(s)). Sau đó trộn tương ứng từng cặp run ở hai dãy phụ Temp1, Temp2 thành một run mới có chiều dài L = 2 để đưa về M và dãy M trở thành dãy có N/2 run(s) với chiều dài mỗi run: L = 2.Như vậy, sau mỗi lần phân phối và trộn các run trên dãy M thì số run trên dãy Msẽ giảm đi một nửa, đồng thời chiều dài mỗi run sẽ tăng gấp đôi. Do đó, sau Log2(N) lần phân phối và trộn thì dãy M chỉ còn lại 01 run với chiều dài là N vàkhi đó dãy M trở thành dãy có thứ tự.Trong thuật giải sau, để dễ theo dõi chúng ta trình bày riêng 02 thuật giải:+ Thuật giải phân phối luân phiên (tách) các đường chạy với chiều dài L trên dãy M về các dãy phụ Temp1, Temp2.+ Thuật giải trộn (nhập) các cặp đường chạy trên Temp1, Temp2 có chiều dài L về M thành các đường chạy với chiều dài 2*L.- Thuật toán phân phối:B1: I = 1 //Chỉ số trên MB2: J1 = 1 //Chỉ số trên Temp1B3: J2 = 1 //Chỉ số trên Temp2B4: IF (I > N) //Đã phân phối hếtThực hiện Bkt//Chép 1 run từ M sang Temp1B5: K = 1 //Chỉ số để duyệt các run

B6: IF (K > L) //Duyệt hết 1 run

Thực hiện B13

B7: Temp1[J1] = M[I] //Chép các phần tử của run trên M sang Temp1

B8: I++B9: J1++B10: K++B11: IF (I > N) //Đã phân phối hếtThực hiện BktB12: Lặp lại B6//Chép 1 run từ M sang Temp2B13: K = 1B14: IF (K > L)Thực hiện B21B15: Temp2[J2] = M[I] //Chép các phần tử của run trên M sang Temp2B16: I++B17: J2++B18: K++B19: IF (I > N) //Đã phân phối hếtThực hiện BktB20: Lặp lại B14B21: Lặp lại B4

Page 52: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

52

B22: N1 = J1-1 //Số phần tử trên Temp1B23: N2 = J2-1 //Số phần tử trên Temp2Bkt: Kết thúc- Thuật toán trộn:B1: I = 1 // Chỉ số trên MB2: J1 = 1 //Chỉ số trên Temp1B3: J2 = 1 //Chỉ số trên Temp2B4: K1 = 1 //Chỉ số để duyệt các run trên Temp1B5: K2 = 1 //Chỉ số để duyệt các run trên Temp2B6: IF (J1 > N1) //Đã chép hết các phần tử trong Temp1Thực hiện B25B7: IF (J2 > N2) //Đã chép hết các phần tử trong Temp2Thực hiện B30

B8: IF (Temp1[J1] ≤ Temp2[J2]) //Temp1[J1] đ.trước Temp2[J2] trên MB8.1: M[I] = Temp1[J1]

B8.2: I++B8.3: J1++B8.4: K1++

B8.5: If (K1 > L) //Đã duyệt hết 1 run trong Temp1

Thực hiện B11

B8.6: Lặp lại B6 //Temp2[J2] đứng trước Temp1[J1] trên M

B9: ELSE

B9.1: M[I] = Temp2[J2]B9.2: I++B9.3: J2++B9.4: K2++B9.5: If (K2 > L) //Đã duyệt hết 1 run trong Temp2Thực hiện B18B9.6: Lặp lại B6B10: Lặp lại B4 //Chép phần run còn lại trong Temp2 về MB11: IF (K2 > L) //Đã chép hết phần run còn lại trong Temp2 về MLặp lại B4B12: M[I] = Temp2[J2]B13: I++B14: J2++B15: K2++

B16: IF (J2 > N2) //Đã chép hết các phần tử trong Temp2Thực hiện B30

B17: Lặp lại B11//Chép phần run còn lại trong Temp1 về MB18: IF (K1 > L) //Đã chép hết phần run còn lại trong Temp1 về M

Page 53: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

53

Lặp lại B4B19: M[I] = Temp1[J1]B20: I++B21: J1++B22: K1++B23: IF (J1 > N1) //Đã chép hết các phần tử trong Temp1Thực hiện B25B24: Lặp lại B18//Chép các phần tử còn lại trong Temp2 về MB25: IF (J2>N2)Thực hiện BktB26: M[I] = Temp2[J2]B27: I++B28: J2++B29: Lặp lại B25//Chép các phần tử còn lại trong Temp1 về MB30: IF (J1>N1)Thực hiện BktB31: M[I] = Temp1[J1]B32: I++B33: J1++B34: Lặp lại B30Bkt: Kết thúc- Thuật toán sắp xếp trộn thẳng:B1: L = 1 //Chiều dài ban đầu của các runB2: IF (L ≥ N) //Dãy chỉ còn 01 runThực hiện BktB3: Phân_Phối(M, N, Temp1, N1, Temp2, N2, L)B4: Trộn(Temp1, N1, Temp2, N2, M, N, L)B5: L = 2*LB6: Lặp lại B2Bkt: Kết thúc- Cài đặt thuật toán:Hàm StraightMergeSort có prototype như sau:void StraightMergeSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp trộn trực tiếp. Hàm sử dụng các hàm Distribute, Merge có prototype và ý nghĩa như sau:void Distribute(T M[], int N, T Temp1[], int &N1, T Temp2[], int &N2, int L);Hàm thực hiện việc phân phối luân phiên các đường chạy có chiều dài L trên dãy M có N phần tử về thành các dãy Temp1 và Temp2 có tương ứng N1 và N2 phần tử.

void Merge(T Temp1[], int N1, T Temp2[], int N2, T M[], int &N, int L);Hàm thực hiện việc trộn từng cặp tương ứng các đường chạy với độ dài L trên

Page 54: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

54

Temp1, Temp2 về dãy M thành các đường chạy có chiều dài 2*L.Nội dung của các hàm như sau:void Distribute(T M[], int N, T Temp1[], int &N1, T Temp2[], int &N2, int L){ int I = 0, J1 = 0, J2 = 0;while (I < N){ for(int K = 0; K<L && I<N; K++, I++, J1++)Temp1[J1] = M[I];for(K = 0; K<L && I<N; K++, I++, J2++)Temp2[J2] = M[I];}N1 = J1;N2 = J2;return;}//==================================================void Merge(T Temp1[], int N1, T Temp2[], int N2, T M[], int &N, int L){ int I = 0, J1 = 0, J2 = 0, K1 = 0, K2 = 0;while (J1 < N1 && J2 < N2){ while (Temp1[J1] <= Temp2[J2] && J1 < N1 && J2 < N2){ M[I] = Temp1[J1];I++;J1++;if (J1 == N1){ for (; J2 < N2; J2++, I++)M[I] = Temp2[J2];return;}K1++;if (K1 == L){ for (; K2 < L && J2 < N2; K2++, I++, J2++)M[I] = Temp2[J2];K1 = K2 = 0;break;}}while (Temp2[J2] < Temp1[J1] && J1 < N1 && J2 < N2){ M[I] = Temp2[J2];I++;J2++;if (J2 == N2){ for (; J1 < N1; J1++, I++)M[I] = Temp1[J1];return;}

Page 55: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

55

K2++;if (K2 == L){ for (; K1 < L && J1 < N1; K1++, I++, J1++)M[I] = Temp1[J1];K1 = K2 = 0;break;}}}while (J1 < N1){ M[I] = Temp1[J1];I++;J1++;}while (J2 < N2){ M[I] = Temp2[J2];I++;J2++;}N = N1 + N2;return;}//=================================================void StraightMergeSort(T M[], int N){ int L = 1, N1 = 0, N2 = 0;T * Temp1 = new T[N];T * Temp2 = new T[N];if (Temp1 == NULL || Temp2 == NULL)return;while (L < N){ Distribute(M, N, Temp1, N1, Temp2, N2, L);Merge(Temp1, N1, Temp2, N2, M, N, L);L = 2*L;}delete Temp1;delete Temp2;return;}

b. Thuật toán sắp xếp trộn tự nhiên (Natural Merge Sort):- Tư tưởng:

Tận dụng các đường chạy tự nhiên có sẵn trên dãy, tiến hành trộn tương ứng các cặp đường chạy tự nhiên nằm hai đầu dãy M thành một đường chạy mới và phânphối luân phiên các đường chạy mới này về hai đầu dãy phụ Temp. Sau đó lại

Page 56: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

56

tiếp tục trộn tương ứng từng cặp run ở hai đầu dãy phụ Temp thành một run mới và phân phối luân phiên run mới này về hai đầu dãy M. Cứ tiếp tục như vậy cho đến khi trên M hoặc trên Temp chỉ còn lại 01 run thì kết thúc.- Thuật toán Trộn – Phân phối các cặp đường chạy tự nhiên:B1: I1 = 1 // Chỉ số từ đầu dãy MB2: I2 = N // Chỉ số từ cuối dãy MB3: J1 = 1 // Chỉ số từ đầu dãy TempB4: J2 = N // Chỉ số từ cuối dãy TempB5: Head = True // Cờ báo phía đặt run mới trong quá trình trộn - phân phối

B6: IF (I1 > I2) // Đã trộn và phân phối hết các run

Thực hiện BktB7: IF (M[I1] ≤ M[I2]) // M[I1] đứng trước M[I2] trên Temp

B7.1: If (Head = True)B7.1.1: Temp[J1] = M[I1]B7.1.2: J1++B7.2: ElseB7.2.1: Temp[J2] = M[I1]B7.2.2: J2--B7.3: I1++B7.4: If (I1 > I2)Thực hiện BktB7.5: If (M[I1] < M[I1-1]) //Đã duyệt hết 1 run phía đầu trong MThực hiện B9B7.6: Lặp lại B7B8: ELSE // M[I2] đứng trước M[I1] trên TempB8.1: If (Head = True)B8.1.1: Temp[J1] = M[I2]B8.1.2: J1++B8.2: ElseB8.2.1: Temp[J2] = M[I2]B8.2.2: J2--B8.3: I2--B8.4: If (I1 > I2)Thực hiện BktB8.5: If (M[I2] < M[I2+1]) //Đã duyệt hết 1 run phía sau trong MThực hiện B15B8.6: Lặp lại B7//Chép phần run còn lại ở phía sau trong M về TempB9: IF (M[I2] < M[I2+1]) //Đã chép hết phần run còn lại ở phía sau trong M về TempB9.1: Head = Not(Head)B9.2: Lặp lại B6

Page 57: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

57

B10: IF (Head = True)B10.1: Temp[J1] = M[I2]B10.2: J1++B11: ELSEB11.1: Temp[J2] = M[I2]B11.2: J2--B12: I2--B13: IF (I1> I2)Thực hiện BktB14: Lặp lại B9//Chép phần run còn lại ở phía trước trong M về TempB15: IF (M[I1]< M[I1-1]) //Đã chép hết phần run còn lại phía trước trong M về TempB15.1: Head = Not(Head)B15.2: Lặp lại B6B16: IF (Head = True)B16.1: Temp[J1] = M[I1]B16.2: J1++B17: ELSEB17.1: Temp[J2] = M[I1]B17.2: J2--B18: I1++B19: IF (I1> I2)Thực hiện BktB20: Lặp lại B15Bkt: Kết thúc- Thuật toán sắp xếp trộn tự nhiên:B1: L = 1 //Khởi tạo chiều dài ban đầu của run đầu tiên//Tìm chiều dài ban đầu của run đầu tiênB2: IF (N < 2)B2.1: L=NB2.2: Thực hiện BktB3: IF (M[L] ≤ M[L+1] And L < N)B3.1: L++B3.2: Lặp lại B3B4: IF (L = N) //Dãy chỉ còn 01 runThực hiện BktB5: Trộn_Phân_Phối(M, N, Temp, L)B6: IF (L = N)// Chép các phần tử từ Temp về MB6.1: I = 1B6.2: If (I > N)Thực hiện BktB6.3: M[I] = Temp[I]

Page 58: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

58

B6.4: I++B6.5: Lặp lại B6.2B7: Trộn_Phân_Phối(Temp, N, M, L)B8: Lặp lại B4Bkt: Kết thúc- Cài đặt thuật toán trộn tự nhiên:Hàm NaturalMergeSort có prototype như sau:void NaturalMergeSort(T M[], int N);Hàm thực hiện việc sắp xếp N phần tử có kiểu dữ liệu T trên mảng M theo thứ tự tăng dựa trên thuật toán sắp trộn trực tự nhiên. Hàm sử dụng hàmNaturalMergeDistribute có prototype và ý nghĩa như sau:void NaturalMergeDistribute(T M[], int N, T Temp[], int &L);Hàm thực hiện việc trộn các cặp run ở hai đầu dãy M mà run đầu tiên có chiều dài L thành một run mới chiều dài lớn hơn hoặc bằng L và phân phối luân phiên run mới này về hai đầu dãy Temp. Nội dung của hàm như sau:void NaturalMergeDistribute(T M[], int N, T Temp[], int &L){ int I1 = 0, I2 = N-1, J1 = 0, J2 = N-1, Head = 1, FirstPair = 1;while (I1 < I2){ while (M[I1] <= M[I2] && I1 < I2){ if (Head == 1){ Temp[J1] = M[I1];J1++;}else{ Temp[J2] = M[I1];J2--;}I1++;if (M[I1] < M[I1-1]){ while (M[I2] <= M[I2-1] && I2 > I1){ if (Head == 1){ Temp[J1] = M[I2];J1++;if (FirstPair == 1)L++;}else{ Temp[J2] = M[I2];J2--;}Giáo trình: Cấu Trúc Dữ Liệu và Giải ThuậtTrang: 57I2--;}

Page 59: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

59

if (Head == 1){ Temp[J1] = M[I2];J1++;If (FirstPair == 1)L++;}else{ Temp[J2] = M[I2];J2--;}I2--;FirstPair = 0;if (I1 > I2)return;Head = 0 – Head;break;}}if (I1 == I2){ Temp[J1] = M[I1];if (I1 == N-1)L = N;return;}while (M[I2] <= M[I1] && I1 < I2){ if (Head == 1){ Temp[J1] = M[I2];J1++;if (FirstPair == 1)L++;}else{ Temp[J2] = M[I2];J2--;}I2--;if (M[I2] < M[I2+1]){ while (M[I1] <= M[I1+1] && I1 < I2){ if (Head == 1){ Temp[J1] = M[I1];J1++;}else{ Temp[J2] = M[I1];

Page 60: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

60

J2--;}Giáo trình: Cấu Trúc Dữ Liệu và Giải ThuậtTrang: 58I1++;}if (Head == 1){ Temp[J1] = M[I1];J1++;}else{ Temp[J2] = M[I1];J2--;}I1++;FirstPair = 0;if (I1 > I2)return;Head = 0 – Head;break;}}if (I1 == I2){ Temp[J1] = M[I1];if (I1 == N-1)L = N;return;}}return;}//==================================================void NaruralMergeSort1(T M[], int N){ int L = 1 ;if (N < 2)return;while (M[L-1] < M[L] && L<N)L++;T * Temp = new T[N];if (Temp == NULL)return;while (L < N){ NaturalMergeDistribute(M, N, Temp, L);if (L == N)

Page 61: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

61

{ for (int I = 0; I < N; I++)M[I] = Temp[I];break;}NaturalMergeDistribute(Temp, N, M, L);}delete Temp;return;- Ví dụ minh họa thuật toán:Giả sử ta cần sắp xếp mảng M có 10 phần tử sau (N = 10):M: 51 39 45 55 20 15 20 17 40 10

3. KIẾN TRÚC MÁY TÍNH

Page 62: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

62

1. Máy tính và kiến trúc máy tính

1.1. Mở đầu

Máy tính được cấu thành từ các mạch điện tử tích hợp (integrated circuits – IC) rất phức tạp liên kết với nhau qua hệ thống kênh truyền dẫn được gọi là hệ thốngBUS. Các khối chức năng cơ bản được xây dựng với công nghệ tích hợp mật độ lớn gồm đơn vị xử lý trung tâm (CPU – Central Proccessing Unit), khối tạo xung nhịp (Clock), bộ nhớ (Memorry) và các chip tạo các cổng (Port Chips) ghép nối thiết bị ngoại vi như minh hoạ trên Hình .1

Hình 1. Hệ thống máy tính.

CPU được xây dựng từ các mạch điện tử phức tạp, có khả năng thực thi tất cả các lệnh trong tập lệnh được mô phỏng trước. Bộ nhớ được xây dựng từ các chipnhớ, có khả năng lưu giữ các lệnh của chương trình và dữ liệu. Các chip tạo cổng điều khiển việc truy xuất đến các thiết bị ngoại vi như bàn phím (Keyboard), chuột (Mouse), màn hình (Monitor), máy in Printer), các ổ đĩa (Disk Drivers). CPU chỉ truy xuất dữ liệu đến từ (input) và đi ra (output) thiết bị ngoại vi thông qua các chip tạo cổng

Cấu trúc chức năng của máy tính được mô phỏng trên Hình 1, Hệ điều hành và Ngôn ngữ lập trình bậc cao điều khiển hoạt động của các mạch điện tử trong

Page 63: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

63

máy tính. Khi cấp nguồn, chương trình khởi tạo hệ thống sẽ nạp hệ điều hành (boot hệ thống), ngôn ngữ lập trình sẽ được tải vào bộ nhớ nhờ hệ điều hành.

Ở mức trên cùng, máy tính có thể thực thi các chương trình ứng dụng. Cácchương trình ứng dụng được sử dụng nhiều như tạo các bảng tính, tạo văn bản, các bản vẽ, …, được viết bằng các ngôn ngữ lập trình khác nhau như C, C++, hoặc là liên kết giữa các ngôn ngữ. Người ta sử dụng ngôn ngữ lập trình trong mối liên kết với hệ điều hành để điều khiển hoạt động chức năng của phần cứng.Ngôn ngữ máy là ngôn ngữ duy nhất bao gồm các chỉ lệnh (Instruction) mà phần cứng có thể hiểu và thực thi, được tạo ra từ các tổ hợp các số biểu diễn theo hệ nhị phân. Các mã nhị phân này được gọi là mã lệnh, chúng tạo nên tập lệnh của CPU, giá trị “0” hoặc “1” làm nhiệm vụ “ngắt” hoặc “đóng” dòng điện để điều khiển hoạt động của các phần tử logic trong mạch điện. Cần hiểu rằng, tất cả các CPU đều làm việc với mã máy.Một khi sử dụng ngôn ngữ lập trình bậc cao, sử dụng các phát biểu (Statements),các chương trình dịch (Compiler) sẽ chuyển đổi (dịch) chúng ra mã máy để CPUhiểu và thực hiện.Mặc dù vậy, vẫn có thể nói máy tính bao giờ cũng được cấu thành từ các khối chức năng chính sau:1. Bộ nhớ trung tâm (Central Memory hoặc Main Memory). Bộ nhớtrung tâm là nơi lưu giữ chương trình và dữ liệu trước khi chươngtrình được thực hiện.2. Đơn vị điều khiển (CU - Control Unit), điều khiển mọi hoạt độngcủa tất cả các thành phần trong hệ thống máy tính theo chương trìnhmà máy tính cần thực hiện.3. Đơn vị số học và Logic (ALU – Arithmetic & Logic Unit), thực hiệncác thao tác xử lý dữ liệu thông qua các phép toán số học và Logictheo sự điều khiển của Đơn vị điều khiển. Đơn vị điều khiển CU vàđơn vị số học-logic ALU được tích hợp trong một chip IC và được gọilà Đơn vị xử lý Trung tâm (CPU-Central Proccessing Unit).4. Thiết bị vào (Input Device) thực hiện nhiệm vụ thu nhận các thôngtin, dữ liệu từ thế giớ bên ngoài, biến đổi thành dạng tương thíchvới phương thức biểu diễn trong máy tính, đưa vào CPU xử lý hoặcghi vào bộ nhớ.5. Thiết bị ra (Output Device) thực hiện nhiệm vụ đưa thông tin, dữliệu từ CPU hoặc bộ nhớ ra ngoài dưới các dạng thức được người sửdụng yêu cầu. Thiết bị vào và thiết bị ra được gọi chung là nhóm thiếtbị ngoại vi (Peripherals).Sau đây ta sẽ tìm hiểu nguyên lý kiến trúc và hoạt động của một máy tínhthông qua một máy tính đơn giản nhất.Máy tính, ở dạng đơn giản nhất, được cấu thành từ bốn khối chức năng cơbản sau:Khối điều khiển và xử lý dữ liệu: Khối chức năng này được tích hợp trongcùng một vi mạch gọi là Đơn vị xử lý trung tâm (CPU – CentralProccessing Unit).

Page 64: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

64

Khối lưu trữ dữ liệu được gọi là bộ nhớ (Memory).Khối chức năng cung cấp dữ liệu cho máy tính xử lý, hoặc phản ánh dữliệu đã được xử lý do máy tính cung cấp, được gọi là khối các thiết bị nhậpxuất (I/O devices).Các kênh truyền dẫn cung cấp sự liên lạc và trao đổi dữ liệu giữa các khốitrên, được gọi là kênh liên kết hệ thống (BUS).Trong một máy tính, mỗi khối thực hiện các chức năng nói trên có thể tồn tại nhiều đơn vị, dưới các dạng khác nhau, trong đó CPU là quan trọng nhất.Đơn vị xử lý trung tâm (CPU) có thể xử lý được các lệnh với khuôn dạng từ lệnh, giả sử với độ dài 8 bit, như sau:

B7 B6 B5 B4 B3 B2 B1 B0

Phần chứa mã lệnh Phần chứa địa chỉ toán hạng

Lệnh được tạo từ hai phần: Mã lệnh và địa chỉ toán hạngMã lệnh là một giá trị nhị phân 4 bit, mỗi tổ hợp là một lệnh có chức năng khác nhau, phần chứa địa chỉ toán hạng cũng là một giá trị nhị phân 4 bit, xác định vị trí của ô nhớ trong bộ nhớ. Phần địa chỉ xác định toán hạng mà lệnh trực tiếp xử lý.Đơn vị xử lý trung tâm gồm hai thành phần chức năng: Đơn vị số học- logic ALU (Arithmetic-Logic Unit) và đơn vị điều khiển CU (Control Unit)

Hình 2. Sơ đồ cấu trúc máy tính đơn giảnĐơn vị điều khiển CU có chức năng lấy lệnh theo tuần tự được lưu giữ từ trong bộ nhớ, giải mã lệnh và tạo các tín hiệu điều khiển hoạt động của các khối chức

Page 65: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

65

năng bên trong và bên ngoài CPU.Lệnh đọc từ ô nhớ được đưa vào thanh ghi lệnh IR, được giải mã tại khối giải mã lệnh ID để xác định công việc CPU cần thực hiện.

Đơn vị điều khiển CU gồm thanh ghi lệnh IR (Instruction Register), là nơichứa lệnh mà CPU đọc về từ ô nhớ lệnh, bao gồm cả phần mã lệnh và phần địa chỉ toán hạng, khối giải mã lệnh ID (Instruction Decoder), mạch giải mã này giải mã lệnh để xác định nhiệm vụ mà lệnh yêu cấu CPU xử lý, tạo các tín hiệu điều khiểncác tác vụ của CPU khi thực thi lệnh và thanh đếm chương trình PC (Program Counter). Thanh đếm chương trình PC làm nhiệm vụ con trỏ lệnh (Instruction Pointer), chứa địa chỉ của ô nhớ chứa lệnh sẽ thực thi trong tuần tự thực hiện chương trình. Do vậy sau khi CPU đọc được một lệnh từ bộ nhớ chương trình, sau khi được giải mã, thông qua điều khiển của CU thì PC được tăng nội dung lên để chỉ vào ô nhớ chứa lệnh tiếp theo. Trong trường hợp gặp lệnh rẽ nhánh hay lệnh gọi chương trình con, nội dung thanh đếm PC thay đổi tuỳ theo giá trị địa chỉ mà chương trình dịch gán cho nhãn hay tên chương trình con được xác định bởi người lập trình.CPU có các thanh ghi: thanh ghi gộp (Acc – Accummulator), thanh ghi tạm thời TEMP (temporary), thanh ghi đệm địa chỉ MAR (Memory Address Register), thanh ghi đệm bộ nhớ MBR (Memory Buffer Register), và thanh ghi cờ Flags. Thanh ghi Acc được sử dụng để chứa nội dung một toán hạng, và thông thường là nơi chứa kết quả thực hiện phép toán, thanh ghi tạm thời chứa nội dung toán hạng thứ hai trong các phép toán hai ngôi. Nội dung thanh ghi MAR là địa chỉ của ô nhớ mà CPU đang truy xuất, còn nội dung thanh ghi MBR là dữ liệu đọc được từ bộ nhớ hoặc sẽ được ghi vào ô nhớ. Thanh ghi cờ Flags gồm các bit biểu diễn trạng thái của kết quả thực hiện phép toán xử lý dữ liệu của CPU, Trong trường hợp đơn giản, thanh ghi cờ có 3 bit, đó là bit dấu (S – Sign) biểu diễn giá trị dữ liệu là âm hay dương, bit không (Z-Zero) biểu diễn kết quả phép toán khác 0 hay bằng 0, bit nhớ (C – Carry) biểu diễn trạng thái kết quả phép toán có bit nhớ hay không có bit nhớ. Giá trị các bit cờ trạng thái được định nghĩa như sau:

Kết quả là một số âm: (S) = 1 ; dấu ngoặc thể hiện nội dung của bit

Kết quả bằng 0: (Z) = 1

Kết quả có nhớ: (C) = 1Hoạt động thực thi một lệnh trong chương trình của máy tính có thể tóm tắtnhư sau:Chương trình và số liệu ban đầu được lưu giữ ở bộ nhớ trung tâm, đó là bộnhớ ROM (Read Only Memory), RAM (Random Access Memory).1. Bắt đầu chương trình, lệnh đầu tiên của chương trình trong vùng nhớ chương trình được đưa vào thanh ghi lệnh IR của đơn vị điều khiển (CU). Tác vụ được gọi là tác vụ nhận lệnh (Instruction Fetch).2. CU tiến hành giải mã lệnh, xác định nội dung phép toán cần xử lý là phép tínhnào, trên các dữ liệu nào. Đây là tác vụ giải mã lệnh (ID –Instruction Decoder).

Page 66: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

66

3. Nếu lệnh đòi hỏi làm việc với các toán hạng (được xác định trong lệnh), CU xác định địa chỉ tương ứng của toán hạng trong vùng nhớ dữ liệu hoặc được nhập vào từ thiết bị ngoại vi. Tác vụ này được gọi là tạo địa chỉ toán hạng (GOA - Generate Operand Address).4. Sau khi địa chỉ toán hạng được tạo, CU phát các tín hiệu điều khiển tới các thành phần liên quan để nhận toán hạng, đặt vào các thanh ghi xác định trong CPU. Tác vụ được gọi là nhận toán hạng (Operand Fetch)5. CU phát các tín hiệu điều khiển tới Đơn vị Số học-Logic (ALU). ALU thực hiện phép toán được yêu cầu trong mã lệnh. Tác vụ này gọi là thực hiện (Execute).6. Kết quả xử lý được đặt trong thanh ghi gộp (Acc) hoặc được lưu vào bộ nhớ trong tuỳ thuộc sự xác định nơi lưu giữ thể hiện đích (destination) trong lệnh. Tác vụ được gọi là Ghi lại kết quả (Write Back).

Trong trường hợp CU giải mã lệnh và đó là lệnh rẽ nhánh chương trình, CU tínhđịa chỉ ô nhớ chứa lệnh cần thực hiện tiếp và phát tín hiệu điều khiển để nhận lệnh về, công việc được tiến hành tuần tự như từ bước. Nếu không phải là lệnh rẽ nhánh chương trình, CPU phát các tín hiệu điều khiển để lấy về lệnh kế tiếp trong ô nhớ đứng ngay sau lệnh vừ thực hiện, hoạt động xẩy ra như từ bước 2.

Khi máy tính được sử dụng để giám sát hay điều khiển một quá trình thực, việc giao tiếp giữa máy tính và con người được mô tả đơn giản hoá như ở Hình.3. Thông qua chương trình giao tiếp và các thiết bị Vào/Ra, con người làm nhiệm vụ giám sát hoặc điều khiển hoạt động của máy móc hoặc quá trình.

Hình 3. Giao diện Máy tính - Con người - Máy móc

Ở mức độ đơn giản và phổ biến nhất, con người giao tiếp trực tiếp với máytính thông qua các thiết bị Vào và thiết bị Ra của nó. Các thiết bị này được gọi một

Page 67: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

67

tên chung là thiết bị ngoại vi (Peripherals hoặc I/O Devices). Con người gửi yêu cầu (lệnh hoặc dữ liệu) vào máy tính bằng cách sử dụng thiết bị nhập dữ liệu, máy tính xử lý dữ liệu và sau khi thực hiện xong gửi trả kết quả ra thiết bị xuất dữ liệu. Ở mức độ cao hơn con người sử dụng máy tính để điều khiển một đối tượng thứ ba (máy móc hoặc thiết bị). Con người gửi tín hiệu điều khiển vào máy tính, máy tính xử lý các dữ liệu được cung cấp và trực tiếp gửi yêu cầu tới thiết bị để thiết bịthực hiện các thao tác đáp ứng yêu cầu của con người. Máy tính cũng có thể gửi kết quả xử lý ra thiết bị xuất để con người kiểm tra lại yêu cầu của mình.

Với một mức độ tự động hóa cao hơn, con người chỉ gửi chương trình điều khiển thiết bị vào máy tính một lần, máy tính nhận dữ liệu, xử lý dữ liệu và gửi yêu cầu tới thiết bị. Về phần mình, thiết bị, sau khi đáp ứng yêu cầu của con người sẽ gửi trả kết quả về máy tính và trên cơ sở đó máy tính sẽ xử lý và gửi các tín hiệu điều khiển tiếp theo tới thiết bị.

Như vậy máy tính là một thực thể có thể tương tác với môi trường bên ngoài. Máy tính nhận thông tin từ bên ngoài, xử lý thông tin nhận được và gửi trả lại kết quả. Đây là mối quan hệ trao đổi hai chiều, song luôn luôn xuất phát từ yêu cầu của con người. Máy tính không thể tự mình khởi đầu quá trình này.1.2. Chức năng của máy tính

Chức năng của máy tính là thực hiện chương trình thông qua xử lý một tập lệnh do người lập trình cung cấp. Chương trình là tập hợp các lệnh được người lập trình chọn lọc và sắp xếp theo một tuần tự chặt chẽ thông qua nguyêntắc xử lý, giải quyết một vấn đề cụ thể (hay còn gọi là thuật giải).

Để thực hiện chức năng này, chương trình được lưu giữ trong bộ nhớ, việc thực hiện chương trình thực chất là các tác vụ thực thi lệnh theo tuần tự đã được người lập trình quy định. Quá trình thực thi 1 lệnh, như đã trình bày ở trên, gồm các giai đoạn sau:

1. Nhận lệnh IF-Instruction Fetch2. Giải mã lệnh ID-Instruction Decoder3. Tạo địa chỉ toán hạng GOA-Generate Operand Address4. Nhận toán hạng OF-Operand Fetch5. Xử lý lệnh EX-Execute6. Lưu kết quả WB-Write Back

InstructionFetch

InstructionDecode

GenerateOperandAddress

OperandFetch

ExecuteWrite

Back

Page 68: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

68

IF ID GOA OF EX WB

Việc đảm bảo thực hiện chương trình theo tuần tự, như đã nói ở trên, là do CU đảm nhận thông qua việc điều khiển sự thay đổi nội dung của thanh đếm chươngtrình PC. Tuần tự các lệnh trong chương trình là do người lập trình quyết định thông qua việc viết chương trình theo thuật giải.Khi thực hiện một chương trình, thông thường máy tính thực hiện các côngviệc sau:

Thứ nhất, Xử lý dữ liệu: Xử lý các yêu cầu của con người/thiết bị trên cơ sở các dữ liệu được nhập vào. Đây là chức năng quan trọng nhất. Dữ liệu có thể ở nhiều dạng khác nhau và các yêu cầu xử lý cũng rất khác biệt. Tuy nhiên máy tính chỉ có thể thực hiện được một số lượng hữu hạn các thao tác xử lý cơ bản, người lập trình dựa trên các khả năng xử lý dó mà tạo ra những khả năng xử lý các vấn đề lớn hơn và phức tạp hơn thông qua công việc lập trình.

Thứ hai, Lưu trữ dữ liệu: Muốn công việc xử lý dữ liệu đạt hiệu quả cao, máy tính phải có khả năng lưu trữ tạm thời dữ liệu và lưu trữ dữ liệu dài hạn để tái sửdụng sau này.

Thứ ba, Di chuyển dữ liệu: Để phục vụ việc xử lý, dữ liệu phải có thể di chuyển từ điểm này tới điểm khác bên trong máy tính. Ngoài ra, để có dữ liệu cho xử lý và gửi kết quả ra bên ngoài, máy tính phải có khả năng trao đổi dữ liệu với môi trường bên ngoài.

Thứ tư, Điều khiển: Để thực hiện có hiệu quả ba chức năng nói trên, các tác vụ máy tính thực hiện phải được điều khiển một cách đồng bộ và hợp lý. Quy trình điều khiển này sẽ được thực hiện nhờ con người cung cấp lệnh cho máy tính thi hành thông qua một đơn vị điều khiển bên trong máy tính.Kiến trúc máy tính phải được thiết kế để máy tính có khả năng thực hiệnnhững công việc này.

Page 69: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

69

Hình 4. Kênh dữ liệu liên kết các thành phần chức năng

1.3. Kiến trúc máy tính và cấu trúc máy tính

Để tìm hiểu kiến trúc máy tính, cần phân biệt rõ sự khác nhau cơ bản, thuộc về nguyên lý giữa kiến trúc (architecture) và tổ chức và cấu trúc (organization & structure) của một máy tính:Kiến trúc máy tính nghiên cứu những thuộc tính của một hệ thống mà người lập trình có thể nhìn thấy được, những thuộc tính quyết định trực tiếp đến việc thực thi một chương trình tính toán, xử lý dữ liệu Cấu trúc máy tính nghiên cứu về các thành phần chức năng và sự kết nối giữa chúng để tạo nên một máy tính, nhằm thực hiện những chức năng và tính năngkỹ thuật của kiến trúc.Những thuộc tính liên quan đến kiến trúc bao gồm tập lệnh cơ bản màCPU có thể thực hiện, số bit được sử dụng để biểu diễn các loại dữ liệu khác nhau, cơ chế nhập/xuất dữ liệu, và các kỹ thuật đánh địa chỉ ô nhớ, v.v... Cấu trúc máy tính lại bao gồm các thuộc tính kỹ thuật mà người lập trình không nhậnbiết được như các tín hiệu điều khiển, giao diện giữa máy tính và thiết bị ngoại vi, công nghệ xây dựng bộ nhớ, v.v…

Chẳng hạn việc quyết định máy tính có cần một lệnh cơ bản để thực hiện phép nhân hay không là vấn đề về kiến trúc. Còn thể hiện lệnh nhân bằng các đơn vị vật lý cụ thể nào (chẳng hạn, một đơn vị thuộc phần cứng đặc biệt, hay thực hiệnlặp nhiều phép cộng) lại là vấn đề về cấu trúc.

Để làm ví dụ minh họa sự khác biệt đó ta có thể xem các máy tính ở Trung tâm nghiên cứu nào đó. Các máy tính này có thể có kiến trúc rất giống nhau theo quan điểm của người lập trình. Chúng có cùng số thanh ghi (tức là thiết bị lưu trữ tạm thời), có cùng một tập lệnh cơ bản và dạng các toán hạng được nạp vào bộ nhớ giống nhau. Tuy nhiên các hệ thống này khác nhau về mặt cấu trúc: số bộ vi xử lý khác nhau, kích thước bộ nhớ của chúng cũng khác hẳn nhau, cách

Page 70: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

70

thức dữ liệu được truyền từ bộ nhớ đến bộ vi xử lý cũng không giống nhau.

Kiến trúc máy tính thường được ứng dụng trong khoảng thời gian dài, hàng chục năm; trong khi cấu trúc thường thay đổi cùng với sự phát triển của công nghệ. Trên cùng một kiến trúc, các hãng chế tạo máy tính có thể đưa ra nhiều loại máy tính khác nhau về cấu trúc, do đó các đặc trưng về hiệu suất, giá thànhcũng khác nhau. Các sản phẩm của IBM là một ví dụ điển hình. Kiến trúc máy tính của IBM vẫn còn được ứng dụng cho tới ngày nay và là ngọn cờ của thương hiệu IBM.

Trong lĩnh vực máy PC, người ta thường không phân biệt rõ ràng giữa kiến trúc và cấu trúc vì sự khác biệt giữa hai khái niệm này đã rút ngắn đáng kể. Sự phát triển của công nghệ không chỉ tác động lên cấu trúc mà còn tạo điều kiện phát triển các kiến trúc mạnh hơn và nhiều tính năng hơn; và do đó tác động qua lại giữa kiến trúc và cấu trúc thường xuyên hơn.Ngoài kiến trúc máy tính và cấu trúc máy tính còn có một lĩnh vực là kỹ thuật máy tính nghiên cứu việc xây dựng cụ thể các hệ thống: chẳng hạn như độ dài dây dẫn tạo BUS, kích cỡ các vi mạch, v.v. Người lập trình thường cần đến kiến thức về kiến trúc, đôi khi cần những hiểu biết về cấu trúc, nhưng thường rất ít khi cần đến những hiểu biết về kỹ thuật máy tính.Hiểu kiến trúc máy tính có thể giúp người lập trình nhận biết khi nào chương trình của mình tạo ra chạy chưa đạt hiệu suất tối đa của hệ thống, hiểu được các kỹ năng làm tăng hiệu suất chương trình, v.v.1.4. Kiến trúc máy tính Von Neumann

John von Neumann (Neumann János, 28 tháng 12, 1903 – 8 tháng 2, 1957) là một nhà toán học người Hungary và là một nhà bác học thông thạo nhiều lĩnh vực, đã có nhiều đóng góp vào các chuyên ngành vật lý lượng tử, giải tích hàm, lý thuyết tập hợp, kinh tế, khoa học máy tính, giải tích số, thủy động lực học, thống kê và nhiều lĩnh vực toán học khác. Đáng chú ý nhất, von Neumann là nhàtiên phong của máy tính kỹ thuật số hiện đại và áp dụng của lý thuyết toán tử (operator theory) vào cơ học lượng tử.Năm 1945, ông đã đưa ra một đề nghị về kiến trúc máy tính như sau:Lệnh (Instruction) và dữ liệu (Data) phải được lưu giữ trong một bộnhớ ghi/đọc được.Từng ô nhớ trong bộ nhớ phải được định vị bằng địa chỉ. Sự định địachỉ là tuần tự và không phụ thuộc vào nội dung của từng ô nhớ.Chương trình xử lý, giải bài toán phải thực hiện tuần tự từ lệnh này đếnlệnh tiếp theo, từ lệnh bắt đầu đến lệnh cuối cùng.2. Tổng quan về kiến trúc máy tính

Trên cơ sở nguyên lý kiến trúc Von Neumann, máy tính là một hệ thống bao gồm đơn vị xử lý trung tâm, bộ nhớ và các thiết bị vào/ra được kết nối với nhau.

Page 71: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

71

Hệ thống đường truyền dẫn liên kết các khối là một trong những vấn đề mà các hãng chế tạo máy tính gặp nhiều nan giải nhất. Để nắm được những kiến thức cơbản về kiến trúc, chúng ta sẽ bắt đầu bằng việc tìm hiểu về hướng phát triển kiếntrúc thông qua liên kết CPU với những khối chức năng cơ bản nhất trong hệ thống: bộ nhớ, thiết bị vào/ra, đơn vị điều khiển truy cập trực tiếp bộ nhớ, đơn vịđiều khiển ngắt, đơn vị tạo xung nhịp, đơn vị diều khiển, v.v…

2.1. Liên kết các khối khối chức năng2.1.1. Bộ xử lý trung tâm (CPU) và bộ nhớ

Nói đến máy tính tức là bàn luận về sự phối hợp giữa thực hiện xử lý(processing) dữ liệu và đưa ra kết luận (making decisions). Việc xử lý và đưa ra kết luận được thực hiện bởi Đơn vị xử lý trung tâm hay còn gọi là CPU của máy tính. Vậy thì “bộ não” của máy tính chính là CPU. CPU không phải là một bộ phận chức năng biết suy nghĩ và biết thực hiện công việc, song nó có khả năng thực hiện những ý đồ và công việc của người sử dụng thông qua các lệnh.Những ý tưởng của người sử dụng được thể hiện qua chương trình. Chương trình là tập hợp các lệnh được chọn lọc và sắp xếp theo một tuần tự chặt chẽ thông qua nguyên tắc xử lý, giải quyết một vấn đề cụ thể (hay còn gọi là thuật giải). Chương trình và dữ liệu tương ứng được lưu giữ trong bộ nhớ của máy tính. Bộ nhớ được chia ra thành 2 phần:

Phần lưu giữ chương trình được gọi là bộ nhớ chương trình hay Program Memory.

Phần lưu giữ dữ liệu (dữ liệu để xử lý và dữ liệu kết quả) được gọi là bộ nhớ dữ liệu hay Data Memory.

Hình 5. Hai thành phần bộ nhớ

Như vậy, CPU cần có bộ nhớ để lưu giữ chương trình và dữ liệu. Theo hình vẽ, thấy rằng CPU chỉ đọc chương trình, song với dữ liệu, nó phải đọc ra để xử lý

Page 72: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

72

và phải ghi lại kết quả, tương ứng với các mũi tên một chiều và mũi tên hai chiều trên hình.2.1.2. CPU, bộ nhớ và thiết bị vào/raCPU liên lạc với các thiết bị bên ngoài (hay còn gọi là thiết bị ngoại vi –peripherals) để đọc dữ liệu, lệnh và đưa ra kết quả đã được xử lý, ví dụ như bàn phím, máy in, màn hình... Chức năng của các thiết bị này là giao diện giữa người sử dụng và máy tính. Các thiết bị này được gọi chung là thiết bị vào/ra, hay thiết bị nhập/xuất, (I/O device). Một máy tính có thể có rất nhiều thiết bị vào/ra.

Hình II.6. CPU trong liên kết với bộ nhớ, thiết bị vào/ra và khả năng truy cập trực tiếp bộ nhớ

Thông thường, các thiết bị vào/ra không tương thích được với CPU về mặt mức tín hiệu (điện áp thể hiện mức logic “0” hoặc “1”) và tốc độ v.v…, do đó ta cần phải bổ sung vào giữa chúng các khối phối ghép (hay còn gọi là giao diện – I/O interface).2.1.3. CPU, bộ nhớ, thiết bị vào ra và khả năng truy cập trực tiếp bộ nhớ

Rõ ràng, việc trao đổi dữ liệu giữa bộ nhớ và thiết bị ngoại vi đều phải thông qua CPU. Mặc dù có lúc nào đó CPU không có yêu cầu dữ liệu, nhưng nó điều khiển quá trình trao đổi dữ liệu của mọi thành phần trong máy tính.Điều đó làm cho CPU tham gia vào mọi hoạt động và tốc độ xử lý của CPUchậm đi rất nhiều.Để giải quyết vấn đề này, kiến trúc máy tính đưa ra giải pháp thiết bị vào/rađược phép truy cập trực tiếp bộ nhớ (DMA-Direct Memory Access). Để thay thếCPU trong việc truy cập trực tiếp vào bộ nhớ, thiết bị vào/ra được ghép thêm đơn vị điều khiển truy cập trực tiếp bộ nhớ DMAC (DMA Controler). Cơ chế này thực sự mang lại hiệu quả lớn trong các hệ thống máy tính thu thập và xử lý những khối dữ liệu phức tạp và được thực hiện như sau:

Page 73: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

73

Khi thiết bị vào ra yêu cầu truy cập vào bộ nhớ, thay vì CPU tham gia vàotoàn bộ quá trình này, thiết bị vào/ra đưa ra yêu cầu thực hiện truy cập trực tiếp bộnhớ tới CPU thông qua DMA Request Line.CPU nhận yêu cầu, thực hiện việc trao quyền sử dụng đường truyền dẫndữ liệu cho thiết bị vào/ra (tức là treo dường truyền dẫn dữ liệu giữa bộ nhớ, thiết bị vào/ra và CPU), sau đó gửi thông báo nhận biết và đồng ý cho thiết bị vào/ra qua DMA Acknowledge Line). Những tín hiệu trao đổi này được gọi là tín hiệu bắt tay (Handshaking)Thiết bị vào/ra thực hiện việc Ghi hoặc Đọc bộ nhớ trực tiếp qua đường truyền dẫn dữ liệu không thông qua CPU. Như vậy CPU có thể tiếp tục thực hiện các thao tác xử lý khác.

Hình 7. CPU, bộ nhớ, thiết bị vào ra và khả năng sử dụng ngắt

2.1.4. CPU, bộ nhớ, thiết bị vào ra và khả năng sử dụng ngắt

Khối chức năng tiếp theo thực hiện việc đáp ứng yêu cầu phục vụ của CPU đối với các thiết bị vào/ra là thiết bị điều khiển ngắt (Interrupt Controller).Để hiểu ngắt cần thiết như thế nào, ta xét những khả năng sau:

- Thiết bị vào/ra chỉ cần đến CPU khi có sự trao đổi dữ liệu giữa CPU với thiết bị vào/ra.

-Một số thiết bị vào/ra hoạt động rất chậm so với khả năng xử lý của CPU, do vậy, việc CPU phải chờ đợi để trao đổi dữ liệu làm mất rất nhiều thời gian.

Dựa trên thực tế này, kiến trúc máy tính đề nghị một giải pháp hữu hiệu nhằm làm tăng hiệu suất hoạt động xử lý dữ liệu của CPU cũng như của máy tính nói chung. Giải pháp dựa trên quy trình sau:

-Thiết bị ngoại vi muốn làm việc với CPU phải gửi yêu cầu ngắt đến CPU thôngqua tín hiệu yêu cầu ngắt (Interrupt Request Signal).

Page 74: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

74

CPU tạm dừng tiến trình đang thực hiện, gửi tín hiệu chấp nhận phục vụngắt cho thiết bị vào/ra.

CPU tiến hành phục vụ thiết bị vào/ra thực chất là thực hiện việc trao đổi dữ liệu, khi thực hiện xong thì quay về tiếp tục công việc đang bỏ dở.2.1.5. Khối xung nhịp (Clock) và khối điều khiển (Control)

Đã có thể nhìn thấy rằng, chỉ cần thêm vào 2 khối cơ bản nữa là ta có một cấu trúc máy tính hoàn chỉnh: Khối xung nhịp (Clock) và khối điều khiển (Control).

Có thể nói khối điều khiển là sợi chỉ xuyên suốt, chỉ đạo mọi hoạt động của tất cả các khối chức năng nhằm đảm bảo hoạt động ổn định cho một máy tính, không bao giờ xẩy ra bất cứ sự tranh chấp nào. Khối tạo nhịp Clock thực hiện việc định thời cho mọi hoạt động trong máy tính được đồng bộ hoá.2.2. Kiến trúc máy tính nhìn từ góc độ cấu trúc cơ bảnMột hệ thống máy tính phải có các tính năng cơ bản sau:1. Khả năng thực hiện Vào/Ra - là khâu nối hay giao diện giữa người sử dụng vàmáy tính2. Khả năng Ngắt - cho phép máy tính hoạt động hiệu suất hơn và mềm dẻo hơn.3. Khả năng Truy Cập Trực tiếp Bộ Nhớ - cho phép các thiết bị vào/ra làmviệc với bộ nhớ mà không ảnh hưởng đến tiến trình thực hiện chương trìnhcủa CPUCác khối chức năng chủ yếu gồm:1. CPU - đó là bộ não của máy tính2. Bộ nhớ - nơi lưu giữ mọi dữ liệu của máy tính3. Khối điều khiển - Điều khiển sự lưu thông của các dòng dữ liệu trong tiến trình, đảm bảo không xẩy ra tranh chấp giữa các khối chức năng4. Logic yêu cầu ngắt thiết lập quan hệ phục vụ hợp lý của CPU với các thiết bị vào/ra5. Khối phối ghép vào/ra thực hiện việc đồng nhất hoá các loại tín hiệu, định thời ... giữa CPU và các thiết bị vào/ra6. Tạo nhịp Clock thực hiện việc định thời cho toàn bộ hệ thống.

Page 75: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

75

Hình 8. Kiến trúc Máy tính nhìn từ góc độ cấu trúc

Để mô tả sơ đồ tổ chức nguyên lý. Thuật ngữ được dùng nhằm minh hoạ những khối chức năng cần thiết và các kênh truyền dẫn liên kết chúng để cấu thành mộtmáy tính.Trong các chương tiếp theo, chúng ta sẽ tìm hiểu phần kiến trúc các BUS hệ thống, kiến trúc CPU, kiến trúc khối điều khiển. “Kiến trúc” nôm na có nghĩa làcác sơ đồ các tổ hợp liên kết các khối-chức năng và cấu hình hệ thống.3. Biểu diễn thông tin trong máy tính

Các máy tính xử lý các thông tin số và chữ. Các thông tin được biểu diễn dưới dạng mã nhất định. Bản chất vật lý của việc biểu diễn thông tin là điện áp (“0” ứng với không có điện áp, “1” ứng với điện áp ở mức quy chuẩn trong mạch điện tử) và việc mã hoá các thông tin số và chữ được tuân theo chuẩn quốc tế. Mã hiệu để mã hoá các thông tin cho máy tính xử lý là các giá trị của biến nhị phân "0" hoặc "1", tương ứng với biến logic "False" hoặc "True". Một biến chỉ nhận một trong hai giá trị duy nhất là “0” hoặc “1” được gọi là một bit (Binary Digit). Hai trạng thái này của bit, thực chất là các giá trị tương ứng với "False" hoặc "True", hay trạng thái "tắt" hoăc "đóng" của một công tắc điện, được sử dụng để mã hoá cho tấtcả các ký tự (gồm số, chữ và các ký tự đặc biệt khác). Các bit được ghép lạithành các đơn vị mang thông tin đầy đủ - các mã tự - cho các ký tự biểu diễn các

Page 76: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

76

số, các ký tự chữ và các ký tự đặc biệt khác.

Bit (BInary digiT) là đơn vị cơ bản mang thông tin trong hệ đếm nhị phân. Các mạch điện tử trong máy tính phát hiện sự khác nhau giữa hai trạng thái (điện áp mức “1” và điện áp mức “0”) và biểu diễn hai trạng thái đó dưới dạng một trong hai số nhị phân “1” hoặc “0”.

Nhóm 8 bit ghép kề liền nhau, tạo thành đơn vị dữ liệu cơ sở của máy tính được gọi là 1 Byte. Do được lưu giữ tương đương với một ký tự (số, chữ hoặc ký tự đặc biệt) nên Byte cũng là đơn vị cơ sở để đo các khả năng lưu giữ, xử lý của các máy tính. Các thuật ngữ như KiloByte, MegaByte hay GigaByte thường được dùng làm bội số trong việc đếm Byte, dĩ nhiên theo hệ đếm nhị phân, nghĩa là:1KiloByte = 1024 Bytes,1MegaByte = 1024 KiloBytes,1GigaByte = 1024 MegaBytes.Các đơn vị này được viết tắt tương ứng là KB, MB và GB.3.1. Mã hoá các thông tin không số

Có hai loại mã phổ cập nhất được sử dụng là mã ASCII và EBCDIC.- Mã ASCII (American Standard Code for Information Interchange)dùng 7 bits để mã hoá các ký tự- Mã EBCDIC (Extended Binary Coded Decimal Interchange Code) dùngcả 8 bits (1 Byte) để mã hoá thông tin- Loại mã trước đây được dùng nhiều trong ngành bưu điện, trong các máyteletype là mã BAUDOT, chỉ sử dụng 5 bits để mã hoá thông tin.Tồn tại nhiều loại mã khác nhau, nhưng hầu như không được sử dụng trongcác máy tính thông dụng…3.2. Hệ đếm thập phân

Từ xa xưa con người đã sử dụng công cụ tự nhiên và sẵn có nhất của mình để đếm các vật, đó là các ngón tay trên hai bàn tay của mình. Vì hai bàn tay chỉ có 10 ngón nên hệ đếm thập phân mà chúng ta sử dụng ngày nay là kết quả tự nhiên của cách đếm đó.Hệ đếm thập phân sử dụng 10 kí hiệu khác nhau để biểu diễn các số:0, 1, 2, ..., 9. Để biểu diễn các số lớn hơn 10, hệ đếm thập phân sử dụng kípháp vị trí. Theo kí pháp này giá trị mà kí hiệu biểu diễn phụ thuộc vào vị trí củanó trong dãy kí hiệu. Ví dụ 2 trong số 29 biểu diễn số 20, nhưng trong 92 biểu diễn số 2. Cũng cần nhắc lại rằng: tất cả các hệ đếm đều tuân thủ ký pháp vị trí.

Với các số 0, 1, 2, ..., 9 và kí pháp vị trí chúng ta có thể biễu diễn mọi số tự nhiên lớn tùy ý. Quy tắc biểu diễn tổng quát một số tự nhiên trong hệ thập phân là

Page 77: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

77

Ở đây 10 được gọi là cơ số của hệ đếm và các số 10-n, ..., 10-1,101, 102,..., 10n được gọi là các trọng số.Lưu ý rằng thay cho 10 chúng ta có thể sử dụng số tự nhiên a bất kỳ và kípháp vị trí để biểu diễn mọi số cũng với quy tắc trên. Khi đó hệ đếm được gọi là hệ đếm cơ số a. Ví dụ như hệ đếm cơ số 12 dùng để biểu diễn thời gian.3.3. Hệ đếm nhị phân

Máy tính số được xây dựng từ các mạch điện tử. Các mạch điện tử trong máy tính phân biệt được sự khác nhau giữa hai trạng thái (có dòng điện hay không, điệp áp cao hay thấp, v.v.) và biểu diễn các trạng thái đó dưới dạng một trong haisố 1 hoặc 0. Vì vậy các số 0 và 1 rất thích hợp và đủ để biểu diễn các số tùy ý trong máy tính. Việc chế tạo một mạch điện tin cậy có thể phân biệt được sự khác nhau giữa 1 và 0 tương đối dễ và rẻ, hơn nữa máy tính có khả năng xử lý nội bộ các số 0 và 1 rất chính xác.Các số 0 và 1 được gọi là các số nhị phân. Hệ đếm nhị phân là hệ đếm chỉdùng các số 0 và 1 và kí pháp vị trí để biểu diễn các số. Dùng ký hiệu 0 và 1 để biểu diễn số. Một số X ở dạng nhị phân có công thức tổng quát như sau:

X=anan-1........a1a0 ( Với 0<=ai<=1)

Ví dụ :11012, 10012

3.4. Hệ 8 và hệ 16

Hệ 8 và hệ 16 là những hệ thường dùng để biểu diễn các số trong tin học.

Biểu diễn các số trong hệ tám gồm các số sau: 0,1,2,3,4,5,6,7

Hệ 16 sử dụng các ký hiệu sau: 0,1,2,3,4,5,6,7,8,9

A có giá trị là 10 B có giá trị là 11

C có giá trị là 12 D có giá trị là 13

E có giá trị là 14 F có giá trị là 15

Ví dụ:

Tính giá trị của 4278

4*82+ 2*81+7*80= 256 + 16 + 7 = 279

Vậy: 4278=29710

Page 78: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

78

3.5. Biểu diễn các ký tự

Mỗi ký tự trong máy tính như chữ cái in và thường, các chữ số, các ký hiệu … được biểu diễn thông qua số nhị phân có độ dài cố định. Bảng mã Ascii (American Standard Code for Information Interchange) là bảng mã biểu diễn 1ký tự bằng 1 số nhị phân nằm trong khoảng tự 0 ->255 (chiếm 1 byte). Bảng mã này gồm có 128 ký tự chuẩn và đây được coi là bảng mã phổ dụng nhất.

Ví dụ :

A 65 A là 0100 0001 (65)

B 66 B là 0100 0010 (66)

C 67 C là 0100 0011 (67)

Page 79: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

79

4. MẠNG MÁY TÍNH

I. CÁC KIẾN THỨC CƠ SỞ

Mạng máy tính là một nhóm các máy tính, thiết bị ngoại vi được nối kết với nhau thông qua các phương tiện truyền dẫn như cáp, sóng điện từ, tia hồng ngoại... giúp cho các thiết bị này có thể trao đổi dữ liệu với nhau một cách dễ dàng. Các thành phần cơ bản cấu thành nên mạng máy tính:

- Các loại máy tính: Palm, Laptop, PC, MainFrame...

- Các thiết bị giao tiếp: Card mạng (NIC hay Adapter), Hub, Switch, Router...

- Môi trường truyền dẫn: cáp, sóng điện từ, sóng vi ba, tia hồng ngoại...

- Các protocol: TCP/IP, NetBeui, Apple Talk, IPX/SPX...

- Các hệ điều hành mạng: WinNT, Win2000, Win2003, Novell Netware, Unix...

- Các tài nguyên: file, thư mục

- Các thiết bị ngoại vi: máy in, máy fax, Modem, Scanner...

- Các ứng dụng mạng: phần mềm quản lý kho bãi, phần mềm bán vé tàu...

Server (máy phục vụ): là máy tính được cài đặt các phần mềm chuyên dụng làm chức năng cung cấp các dịch vụ cho các máy tính khác. Tùy theo dịch vụ mà các máy này cung cấp, người ta chia thành các loại server như sau: File server (cung cấp các dịch vụ về file và thư mục), Print server (cung cấp các dịch vụ về in ấn). Do làm chức năng phục vụ cho các máy tính khác nên cấu hình máy server phải mạnh, thông thường là máy chuyên dụng của các hãng như: Compaq, Intel, IBM... Client (máy trạm): là máy tính sử dụng các dịch vụ mà các máy server cung cấp. Do xử lý số công việc không lớn nên thông thường các máy này không yêu cầu có cấu hình mạnh. Peer: là những máy tính vừa đóng vai trò là máy sử dụng vừa là máy cung cấp các dịch vụ. Máy peer thườngsử dụng các hệ điều hành như: DOS, WinNT Workstation, Win9X, Win Me, Win2K Professional, WinXP...

Media (phương tiện truyền dẫn): là cách thức và vật liệu nối kết các máy lại với nhau.

Shared data (dữ liệu dùng chung): là tập hợp các tập tin, thư mục mà các máy tính chia sẻ để các máy tính khác truy cập sử dụng chúng thông qua mạng.

Resource (tài nguyên): là tập tin, thư mục, máy in, máy Fax, Modem, ổ CDROM và các thành phần khác mà người dùng mạng sử dụng.

II. CÁC LOẠI MẠNG MÁY TÍNH

1. Mạng cục bộ LAN (Local Area Network)

Mạng LAN là một nhóm máy tính và các thiết bị truyền thông mạng được nối kết với nhau trong một khu vực nhỏ như một toà nhà cao ốc, khuôn viên trường đại học, khu giải trí ...

Page 80: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

80

Các mạng LAN thường có đặc điểm sau:

- Băng thông lớn, có khả năng chạy các ứng dụng trực tuyến như xem phim, hội thảo qua mạng.

- Kích thước mạng bị giới hạn bởi các thiết bị.

- Chi phí các thiết bị mạng LAN tương đối rẻ.

- Quản trị đơn giản

User (người dùng): là người sử dụng máy trạm (client) để truy xuất các tài nguyên mạng. Thông thường một user sẽ có một username (account) và một password. Hệ thống mạng sẽ dựa vào username và password để biết bạn là ai, cóquyền vào mạng hay không và có quyền sử dụng những tài nguyên nào trên mạng.

Administrator: là nhà quản trị hệ thống mạng.

2. Mạng diện rộng WAN (Wide Area Network)

Mạng WAN bao phủ vùng địa lý rộng lớn có thể là một quốc gia, một lục địa hay toàn cầu. Mạng WAN thường là mạng của các công ty đa quốc gia hay toàn cầu, điển hình là mạng Internet. Do phạm vi rộng lớn của mạng WAN nên thông thường mạng WAN là tập hợp các mạng LAN, MAN nối lại với nhau bằng các phương tiện như: vệ tinh (satellites), sóng viba (microwave), cáp quang, cáp điện thoại...

Đặc điểm của mạng WAN:

- Băng thông thấp, dễ mất kết nối, thường chỉ phù hợp với các ứng dụng offline như e-mail, web, ftp ...

- Phạm vi hoạt động rộng lớn không giới hạn.

- Do kết nối của nhiều LAN, MAN lại với nhau nên mạng rất phức tạp và có tính toàn cầu nên thường là có tổ chức quốc tế đứng ra quản trị.

- Chi phí cho các thiết bị và các công nghệ mạng WAN rất đắt tiền.

3. Mạng Internet

Mạng Internet là trường hợp đặc biệt của mạng WAN, nó cung cấp các dịch vụ toàn cầu như mail, web, chat, ftp và phục vụ miễn phí cho mọi người.

III. CÁC MÔ HÌNH XỬ LÝ MẠNG

Cơ bản có ba loại mô hình xử lý mạng bao gồm:

- Mô hình xử lý mạng tập trung

- Mô hình xử lý mạng phân phối

- Mô hình xử lý mạng cộng tác.

1. Mô hình xử lý mạng tập trung

Toàn bộ các tiến trình xử lý diễn ra tại máy tính trung tâm. Các máy trạm cuối

Page 81: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

81

(terminals) được nối mạng với máy tính trung tâm và chỉ hoạt động như những thiết bị nhập xuất dữ liệu cho phép người dùng xem trên màn hình và nhập liệu bàn phím. Các máy trạm đầu cuối không lưu trữ và xử lý dữ liệu.

Mô hình xử lý mạng trên có thể triển khai trên hệ thống phần cứng hoặc phần mềm được cài đặt trên server.

Ưu điểm: dữ liệu được bảo mật an toàn, dễ backup và diệt virus. Chi phí cho các thiết bị thấp.

Khuyết điểm: khó đáp ứng được các yêu cầu của nhiều ứng dụng khác nhau, tốc độ truy xuất chậm.

2. Mô hình xử lý mạng phân phối

Các máy tính có khả năng hoạt động độc lập, các công việc được tách nhỏ và giao cho nhiều máy tính khác nhau thay vì tập trung xử lý trên máy trung tâm. Tuy dữ liệu được xử lý và lưu trữ tại máy cục bộ nhưng các máy tính này được nối mạng với nhau nên chúng có thể trao đổi dữ liệu và dịch vụ.

Ưu điểm: truy xuất nhanh, phần lớn không giới hạn các ứng dụng.

Khuyết điểm: dữ liệu lưu trữ rời rạc khó đồng bộ, backup và rất dễ nhiễm virus.

3. Mô hình xử lý mạng cộng tác

Mô hình xử lý cộng tác bao gồm nhiều máy tính có thể hợp tác để thực hiện mộtcông việc. Một máy tính có thể mượn năng lực xử lý bằng cách chạy các chươngtrình trên các máy nằm trong mạng.

Ưu điểm: rất nhanh và mạnh, có thể dùng để chạy các ứng dụng có các phép toán lớn.

Khuyết điểm: các dữ liệu được lưu trữ trên các vị trí khác nhau nên rất khó đồngbộ và backup, khả năng nhiễm virus rất cao.

IV. CÁC MÔ HÌNH QUẢN LÝ MẠNG

1. Workgroup

Trong mô hình này các máy tính có quyền hạn ngang nhau và không có các máytính chuyên dụng làm nhiệm vụ cung cấp dịch vụ hay quản lý. Các máy tính tự bảo mật và quản lý các tài nguyên của riêng mình. Đồng thời các máy tính cục bộ này cũng tự chứng thực cho người dùng cục bộ.

2. Domain

Ngược lại với mô hình Workgroup, trong mô hình Domain thì việc quản lý và chứng thực người dùng mạng tập trung tại máy tính Primary Domain Controller.Các tài nguyên mạng cũng được quản lý tập trung và cấp quyền hạn cho từng người dùng. Lúc đó trong hệ thống có các máy tính chuyên dụng làm nhiệm vụ cung cấp các dịch vụ và quản lý các máy trạm.

V. CÁC MÔ HÌNH ỨNG DỤNG MẠNG

Page 82: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

82

1. Mạng ngang hàng (peer to peer)

Mạng ngang hàng cung cấp việc kết nối cơ bản giữa các máy tính nhưng không có bất kỳ một máy tính nào đóng vai trò phục vụ. Một máy tính trên mạng có thểvừa là client, vừa là server. Trong môi trường này, người dùng trên từng máy tính chịu trách nhiệm điều hành và chia sẻ các tài nguyên của máy tính mình. Mô hình này chỉ phù hợp với các tổ chức nhỏ, số người giới hạn (thông thường nhỏ hơn 10 người) và không quan tâm đến vấn đề bảo mật. Mạng ngang hàng thường dùng các hệ điều hành sau: Win95, Windows for workgroup, WinNT Workstation, Win2000 Proffessional, OS/2...

Ưu điểm: do mô hình mạng ngang hàng đơn giản nên dễ cài đặt, tổ chức và quảntrị, chi phí thiết bị cho mô hình này thấp.

Khuyết điểm: không cho phép quản lý tập trung nên dữ liệu phân tán, khả năng bảo mật thấp, rất dễ bị xâm nhập. Các tài nguyên không được sắp xếp nên rất khó định vị và tìm kiếm.

2. Mạng khách chủ (client- server)

Trong mô hình mạng khách chủ có một hệ thống máy tính cung cấp các tài nguyên và dịch vụ cho cả hệ thống mạng sử dụng gọi là các máy chủ (server). Một hệ thống máy tính sử dụng các tài nguyên và dịch vụ này được gọi là máy khách (client). Các server thường có cấu hình mạnh (tốc độ xử lý nhanh, kích thước lưu trữ lớn) hoặc là các máy chuyên dụng. Dựa vào chức năng có thể chia thành các loại server như sau:

- File Server: phục vụ các yêu cầu hệ thống tập tin trong mạng.

- Print Server: phục vụ các yêu cầu in ấn trong mạng.

- Application Server: cho phép các ứng dụng chạy trên các server và trả về kết quả cho client.

- Mail Server: cung cấp các dịch vụ về gửi nhận e-mail.

- Web Server: cung cấp các dịch vụ về web.

- Database Server: cung cấp các dịch vụ về lưu trữ, tìm kiếm thông tin.

- Communication Server: quản lý các kết nối từ xa.

Hệ điều hành mạng dùng trong mô hình client - server là WinNT, Novell NetWare, Unix, Win2K...

Ưu điểm: do các dữ liệu được lưu trữ tập trung nên dễ bảo mật, backup và đồng bộ với nhau. Tài nguyên và dịch vụ được tập trung nên dễ chia sẻ và quản lý và có thể phục vụ cho nhiều người dùng.

Khuyết điểm: các server chuyên dụng rất đắt tiền, phải có nhà quản trị cho hệ thống.

VI. CÁC DỊCH VỤ MẠNG

Các dịch vụ mạng phổ biến nhất là:

Page 83: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

83

- Dịch vụ tập tin.

- Dịch vụ in ấn.

- Dịch vụ thông điệp.

- Dịch vụ thư mục.

- Dịch vụ ứng dụng.

- Dịch vụ cơ sở dữ liệu.

- Dịch vụ Web.

1. Dịch vụ tập tin (Files Services)

Dịch vụ tập tin cho phép các máy tính chia sẻ các tập tin, thao tác trên các tập tinchia sẻ này như: lưu trữ, tìm kiếm, di chuyển... Truyền tập tin: không có mạng,các khả năng truyền tải tập tin giữa các máy tính bị hạn chế. Ví dụ như chúng tamuốn sao chép một tập tin từ máy tính cục bộ ở Việt Nam sang một máy tính server đặt tại Pháp thì chúng ta dùng dịch vụ FTP để sao chép. Dịch vụ này rất phổ biến và đơn giản.

Lưu trữ tập tin: phần lớn các dữ liệu quan trọng trên mạng đều được lưu trữ tập trung theo nhiều cách khác nhau:

Lưu trữ trực tuyến (online storage): dữ liệu được lưu trữ trên đĩa cứng nên truy xuất dễ dàng, nhanh chóng, bất kể thời gian. Nhưng phương pháp này có một khuyết điểm là chúng không thể tháo rời để trao đổi hoặc lưu trữ tách rời, đồng thời chi phí lưu trữ một MB dữ liệu tương đối cao.

Lưu trữ ngoại tuyến (offline storage): thường áp dụng cho dữ liệu ít khi cần truy xuất (lưu trữ, backup). Các thiết bị phổ biến dùng cho phương pháp này là băngtừ, đĩa quang.

Lưu trữ cận tuyến (near- line storage): phương pháp này giúp ta khắc phục được tình trạng truy xuất chậm của phương pháp lưu trữ ngoại tuyến nhưng chi phí lại không cao đó là chúng ta dùng thiết bị Jukebox để tự động quản lý các băng từ và đĩa quang.

Di trú dữ liệu (data migration) là công nghệ tự động dời các dữ liệu ít dùng từ kho lưu trữ trực tuyến sang kho lưu trữ cận tuyến hay ngoại tuyến. Nói cách khác đây là quá trình chuyển các tập tin từ dạng lưu trữ này sang dạng lưu trữ khác.

Đồng bộ hóa việc cập nhật tập tin: dịch vụ này theo dõi các thay đổi khác nhau lên cùng một tập tin để đảm bảo rằng tất cả mọi người dùng đều có bản sao mới nhất của tập tin và tập tin không bị hỏng. Sao lưu dự phòng (backup) là quá trìnhsao chép và lưu trữ một bản sao dữ liệu từ thiết bị lưu trữ chính. Khi thiết bị lưutrữ chính có sự cố thì chúng ta dùng bản sao này để phục hồi dữ liệu.

2. Dịch vụ in ấn (Print Services)

Dịch vụ in ấn là một ứng dụng mạng điều khiển và quản lý việc truy cập các

Page 84: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

84

máy in, máy fax mạng.

Các lợi ích của dịch vụ in ấn:

Giảm chi phí cho nhiều người có thể chia nhau dùng chung các thiết bị đắt tiền như máy in màu, máy vẽ, máy in khổ giấy lớn. Tăng độ linh hoạt vì các máy tính có thể đặt bất kỳ nơi nào, chứ không chỉ đặt cạnh PC của người dùng.

Dùng cơ chế hàng đợi in để ấn định mức độ ưu tiên nội dung nào được in trước, nội dung nào được in sau.

3. Dịch vụ thông điệp (Message Services)

Là dịch vụ cho phép gửi/nhận các thư điện tử (e-mail). Công nghệ thư điện tử này rẻ tiền, nhanh chóng, phong phú cho phép đính kèm nhiều loại file khác nhau như: phim ảnh, âm thanh... Ngoài ra dịch vụ này còn cung cấp các ứng dụng khác như: thư thoại (voice mail), các ứng dụng nhóm làm việc (workgroupapplication).

4. Dịch vụ thư mục (Directory Services)

Dịch vụ này cho phép tích hợp mọi thông tin về các đối tượng trên mạng thành một cấu trúc thư mục dùng chung nhờ đó mà quá trình quản lý và chia sẻ tài nguyên trở nên hiệu quả hơn.

5. Dịch vụ ứng dụng (Application Services)

Dịch vụ này cung cấp kết quả cho các chương trình ở client bằng cách thực hiện các chương trình trên server. Dịch vụ này cho phép các ứng dụng huy động năng lực của các máy tính chuyên dụng khác trên mạng.

6. Dịch vụ cơ sở dữ liệu (Database Services)

Dịch vụ cơ sở dữ liệu thực hiện các chức năng sau:

- Bảo mật cơ sở dữ liệu.

- Tối ưu hóa tiến trình thực hiện các tác vụ cơ sở dữ liệu.

- Phục vụ số lượng người dùng lớn, truy cập nhanh vào các cơ sở dữ liệu.

- Phân phối dữ liệu qua nhiều hệ phục vụ CSDL.

7. Dịch vụ Web

Dịch vụ này cho phép tất cả mọi người trên mạng có thể trao đổi các siêu văn bản với nhau. Các siêu bản này có thể chứa hình ảnh, âm thanh giúp các người dùng có thể trao đổi nhanh thông tin và sống động hơn.

VII. CÁC LỢI ÍCH THỰC TẾ CỦA MẠNG.

1. Tiết kiệm được tài nguyên phần cứng.

Khi các máy tính của một phòng ban được nối mạng với nhau thì chúng ta có thể chia sẻ những thiết bị ngoại vi như máy in, máy FAX, ổ đĩa CDROM... Thayvì trang bị cho từng máy PC thì thông qua mạng chúng ta có thể dùng chung cácthiết bị này.

Page 85: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

85

Ví dụ 1: trong một phòng máy thực hành có khoảng 30 máy, nếu trang bị cho tất cả các máy trạm có đĩa cứng thì rất phí mà chúng ta lại không tận dụng được hếtnăng suất của các đĩa cứng đó. Giải pháp tập trung tất cả các ứng dụng vào server và dùng công nghệ mạng bootrom để chạy các máy trạm sẽ làm giảm chi phí phần cứng đồng thời tiện dụng cho công tác quản trị phòng máy hạn chế được tình trạng các học viên vô tình làm hỏng các máy trạm.

Ví dụ 2: Một công ty muốn rằng tất cả các phòng ban đều được sử dụng Internet thông qua modem và đường điện thoại. Nếu chúng ta trang bị cho mỗi phòng ban 1 modem và 1 đường điện thoại thì không khả thi vì vậy chúng ta phải tận dụng cơ sở hạ tầng mạng để chia sẻ 1 modem và đường điện thoại cho cả công ty đều có thể truy cập Internet.

2. Trao đổi dữ liệu trở nên dễ dàng hơn.

Theo phương pháp truyền thống muốn chép dữ liệu giữa hai máy tính chúng ta dùng đĩa mềm hoặc dùng cáp link để nối hai máy lại với nhau sau đó chép dữ liệu. Chúng ta thấy rằng hai giải pháp trên sẽ không thực tế nếu một máy đặt tại tầng trệt và một máy đặt tại tầng 5 trong một tòa nhà. Việc trao đổi dữ liệu giữa các máy tính ngày càng nhiều hơn, đa dạng hơn, khoảng cách giữa các phòng ban trong công ty ngày càng xa hơn nên việc trao đổi dữ liệu theo phương thức truyền thống không còn được áp dụng nữa, thay vào đó là các máy tính này được nối với nhau qua công nghệ mạng.

3. Chia sẻ ứng dụng: Các ứng dụng thay vì trên từng máy trạm chúng ta sẽ cài trên một máy server và các máy trạm dùng chung ứng dụng đó trên server. Lúc đó ta tiết kiệm được chi phí bản quyền và chi phí cài đặt, quản trị.

4. Tập trung dữ liệu, bảo mật và backup tốt.

Đối với các công ty lớn dữ liệu lưu trữ trên các máy trạm rời rạc dễ dẫn đến tình trạng hư hỏng thông tin và không được bảo mật. Nếu các dữ liệu này được tập trung về server để tiện việc bảo mật, backup và quét virus.

5. Sử dụng các phần mềm ứng dụng trên mạng.

Nhờ các công nghệ mạng mà các phần mềm ứng dụng phát triển mạnh và được áp dụng vào nhiều lĩnh vực như hàng không (phần mềm bán vé máy bay tại các chi nhánh), đường sắt (phần mềm theo dõi đăng ký vé và bán vé tàu), cấp thoát nước (phần mềm quản lý công ty cấp thoát nước thành phố)...

6. Sử dụng các dịch vụ Internet.

Ngày nay Internet rất phát triển, tất cả mọi người trên thế giới đều có thể trao đổi E-mail với nhau một cách dễ dàng hoặc có thể trò chuyện với nhau mà chi phí rất thấp so với phí viễn thông. Đồng thời các công ty cũng dùng công nghệ Web để quảng cáo sản phẩm, mua bán hàng hóa qua mạng (thương mại điện tử) ... Dựa trên cơ sở hạ tầng mạng chúng ta có thể xây dựng các hệ thống ứng dụng lớn như chính phủ điện tử, thương mại điện tử, điện thoại Internet nhằm giảm chi phí và tăng khả năng phục vụ ngày càng tốt hơn cho con người.

Page 86: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

86

5. ĐỊA CHỈ IP

I. TỔNG QUAN VỀ ĐỊA CHỈ IP

Là địa chỉ có cấu trúc, được chia làm hai hoặc ba phần là: network_id&host_id hoặc network_id&subnet_id&host_id. Là một con số có kích thước 32 bit. Khi trình bày, người ta chia con số 32 bit này thành bốn phần, mỗi phần có kích thước 8 bit, gọi là octet hoặc byte.

Có các cách trình bày sau:

- Ký pháp thập phân có dấu chấm (dotted-decimal notation).

Ví dụ: 172.16.30.56.

- Ký pháp nhị phân. Ví dụ: 10101100 00010000 00011110 00111000.

- Ký pháp thập lục phân. Ví dụ: AC 10 1E 38. Không gian địa chỉ IP (gồm 232 địa chỉ) được chia thành nhiều lớp (class) để dễ quản lý. Đó là các lớp: A, B, C, D và E; trong đó các lớp A, B và C được triển khai để đặt cho các host trên mạng Internet; lớp D dùng cho các nhóm multicast; còn lớp E phục vụ cho mục đích nghiên cứu. Địa chỉ IP còn được gọi là địa chỉ logical, trong khi địa chỉ MAC còn gọi là địa chỉ vật lý (hay địa chỉ physical).

II. MỘT SỐ KHÁI NIỆM VÀ THUẬT NGỮ LIÊN QUAN.

Network_id: là giá trị để xác định đường mạng. Trong số 32 bit dùng địa chỉ IP, sẽ có một số bit đầu tiên dùng để xác định network_id. Giá trị của các bit này được dùng để xác định đường mạng.

Host_id: là giá trị để xác định host trong đường mạng. Trong số 32 bit dùng làm địa chỉ IP, sẽ có một số bit cuối cùng dùng để xác định host_id. Host_id chính là giá trị của các bit này.

Địa chỉ host: là địa chỉ IP, có thể dùng để đặt cho các interface của các host. Hai host nằm thuộc cùng một mạng sẽ có network_id giống nhau và host_id khác nhau.

Mạng (network): một nhóm nhiều host kết nối trực tiếp với nhau. Giữa hai host bất kỳ không bị phân cách bởi một thiết bị layer 3. Giữa mạng này với mạng khác phải kết nối với nhau bằng thiết bị layer 3.

Địa chỉ mạng (network address): là địa chỉ IP dùng để đặt cho các mạng. Địa chỉnày không thể dùng để đặt cho một interface. Phần host_id của địa chỉ chỉ chứa các bit 0. Ví dụ 172.29.0.0 là một địa chỉ mạng.

Mạng con (subnet network): là mạng có được khi một địa chỉ mạng (thuộc lớp A, B, C) được phân chia nhỏ hơn (để tận dụng số địa chỉ mạng được cấp phát). Địa chỉ mạng con được xác định dựa vào địa chỉ IP và mặt nạ mạng con (subnet mask) đi kèm (sẽ đề cập rõ hơn ở phần sau).

Địa chỉ broadcast: là địa chỉ IP được dùng để đại diện cho tất cả các host trong mạng. Phần host_id chỉ chứa các bit 1. Địa chỉ này cũng không thể dùng để đặt

Page 87: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

87

cho một host được. Ví dụ 172.29.255.255 là một địa chỉ broadcast.

Mặt nạ mạng (network mask): là một con số dài 32 bit, là phương tiện giúp máy xác định được địa chỉ mạng của một địa chỉ IP (bằng cách AND giữa địa chỉ IP với mặt nạ mạng) để phục vụ cho công việc routing. Mặt nạ mạng cũng cho biết số bit nằm trong phần host_id. Được xây dựng theo cách: bật các bit tương ứng với phần network_id (chuyển thành bit 1) và tắt các bit tương ứng với phần host_id (chuyển thành bit 0).

Mặt nạ mặc định của lớp A: sử dụng cho các địa chỉ lớp A khi không chia mạng con, mặt nạ có giá trị 255.0.0.0.

Mặt nạ mặc định của lớp B: sử dụng cho các địa chỉ lớp B khi không chia mạng con, mặt nạ có giá trị 255.255.0.0.

Mặt nạ mặc định của lớp C: sử dụng cho các địa chỉ lớp C khi không chia mạng con, mặt nạ có giá trị 255.255.255.0.

III. GIỚI THIỆU CÁC LỚP ĐỊA CHỈ.

1. Lớp A.

Dành một byte cho phần network_id và ba byte cho phần host_id.

Để nhận diện ra lớp A, bit đầu tiên của byte đầu tiên phải là bit 0. Dưới dạng nhị phân, byte này có dạng 0xxxxxxx. Vì vậy, những địa chỉ IP có byte đầu tiên nằm trong khoảng từ 0 (00000000) đến 127 (01111111) sẽ thuộc lớp A. Ví dụ địachỉ 50.14.32.8 là một địa chỉ lớp A (50 < 127).

Byte đầu tiên này cũng chính là network_id, trừ đi bit đầu tiên làm ID nhận dạnglớp A, còn lại bảy bit để đánh thứ tự các mạng, ta được 128 (27) mạng lớp A khác nhau. Bỏ đi hai trường hợp đặc biệt là 0 và 127. Kết quả là lớp A chỉ còn 126 (27-2) địa chỉ mạng, 1.0.0.0 đến 126.0.0.0.

Phần host_id chiếm 24 bit, tức có thể đặt địa chỉ cho 16.777.216 (224) host khác nhau trong mỗi mạng.

Bỏ đi một địa chỉ mạng (phần host_id chứa toàn các bit 0) và một địa chỉ broadcast (phần host_id chứa toàn các bit 1) như vậy có tất cả 16.777.214 (224-2) host khác nhau trong mỗi mạng lớp A. Ví dụ, đối với mạng 10.0.0.0 thì nhữnggiá trị host hợp lệ là 10.0.0.1 đến 10.255.255.254.

2. Lớp B.

Dành hai byte cho mỗi phần network_id và host_id.

Dấu hiệu để nhận dạng địa chỉ lớp B là byte đầu tiên luôn bắt đầu bằng hai bit 10. Dưới dạng nhị phân, octet có dạng 10xxxxxx. Vì vậy những địa chỉ nằm trong khoảng từ 128 (10000000) đến 191 (10111111) sẽ thuộc về lớp B. Ví dụ 172.29.10.1 là một địa chỉ lớp B (128 < 172 < 191).

Phần network_id chiếm 16 bit bỏ đi 2 bit làm ID cho lớp, còn lại 14 bit cho phépta đánh thứ tự 16.384 (214) mạng khác nhau (128.0.0.0 đến 191.255.0.0)

Page 88: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

88

Phần host_id dài 16 bit hay có 65536 (216) giá trị khác nhau. Trừ 2 trường hợp đặc biệt còn lại 65534 host trong một mạng lớp B. Ví dụ, đối với mạng 172.29.0.0 thì các địa chỉ host hợp lệ là từ 172.29.0.1 đến 172.29.255.254.

3. Lớp C.

Dành ba byte cho phần network_id và một byte cho phần host_id.

Byte đầu tiên luôn bắt đầu bằng ba bit 110 và dạng nhị phân của octet này là 110xxxxx. Như vậy những địa chỉ nằm trong khoảng từ 192 (11000000) đến 223(11011111) sẽ thuộc về lớp C. Ví dụ một địa chỉ lớp C là 203.162.41.235 (192 < 203 < 223).

Phần network_id dùng ba byte hay 24 bit, trừ đi 3 bit làm ID của lớp, còn lại 21 bit hay 2.097.152 (221) địa chỉ mạng (từ 192.0.0.0 đến 223.255.255.0).

Phần host_id dài một byte cho 256 (28) giá trị khác nhau. Trừ đi hai trường hợp đặc biệt ta còn 254 host khác nhau trong một mạng lớp C. Ví dụ, đối với mạng 203.162.41.0, các địa chỉ host hợp lệ là từ 203.162.41.1 đến 203.162.41.254.

4. Lớp D và E.

Các địa chỉ có byte đầu tiên nằm trong khoảng 224 đến 255 là các địa chỉ thuộc lớp D hoặc E.

5. Ví dụ cách triển khai đặt địa chỉ IP cho một hệ thống mạng.

6. Chia mạng con (subnetting).

Một số khái niệm mới:

- Địa chỉ mạng con (địa chỉ đường mạng): bao gồm cả phần network_id và subnet_id, phần host_id chỉ chứa các bit 0. Theo hình bên trên thì ta có các địa chỉ mạng con sau: 150.150.1.0, 150.150.2.0, …

- Địa chỉ broadcast trong một mạng con: Giữ nguyên các bit dùng làm địa chỉ mạng con, đồng thời bật tất cả các bit trong phần host_id lên 1. Ví dụ địa chỉ broadcast của mạng con 150.150.1.0 là 150.150.1.255.

- Mặt nạ mạng con (subnet mask): giúp máy tính xác định được địa chỉ mạng con của một địa chỉ host. Để xây dựng mặt nạ mạng con cho một hệ thống địa chỉ, ta bật các bit trong phần network_id và subnet_id lên 1, tắt các bit trong phần host_id thành 0. Ví dụ mặt nạ mạng con dùng cho hệ thống mạng trong hình trên là 255.255.255.0.

Vấn đề đặt ra là khi xác định được một địa chỉ IP (ví dụ 172.29.8.230) ta không thể biết được host này nằm trong mạng nào (không thể biết mạng này có chia mạng con hay không, và nếu có chia thì dùng bao nhiêu bit để chia). Chính vì vậy khi ghi nhận địa chỉ IP của một host, ta cũng phải cho biết subnet mask là bao nhiêu (subnet mask có thể là giá trị thập phân, cũng có thể là số bit dùng làm subnet mask).

+ Ví dụ địa chỉ IP ghi theo giá trị thập phân của subnet mask là

Page 89: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

89

172.29.8.230/255.255.255.0

+ Hoặc địa chỉ IP ghi theo số bit dùng làm subnet mask là 172.29.8.230/24.

7. Địa chỉ riêng (private address) và cơ chế chuyển đổi địa chỉ mạng (Network Address Translation - NAT)

Tất cả các IP host khi kết nối vào mạng Internet đều phải có một địa chỉ IP do tổ chức IANA (Internet Assigned Numbers Authority) cấp phát – gọi là địa chỉ hợp lệ (hay là được đăng ký). Tuy nhiên số lượng host kết nối vào mạng ngày càng gia tăng dẫn đến tình trạng khan hiếm địa chỉ IP. Một giải pháp đưa ra là sử dụngcơ chế NAT kèm theo là RFC 1918 qui định danh sách địa chỉ riêng. Các địa chỉ này sẽ không được IANA cấp phát - hay còn gọi là địa chỉ không hợp lệ.

8. Cơ chế NAT

NAT được sử dụng trong thực tế là tại một thời điểm, tất cả các host trong một mạng LAN thường không truy xuất vào Internet đồng thời, chính vì vậy ta không cần phải sử dụng một số lượng tương ứng địa chỉ IP hợp lệ. NAT cũng được sử dụng khi nhà cung cấp dịch vụ Internet (ISP) cung cấp số lượng địa chỉ IP hợp lệ ít hơn so với số máy cần truy cập Internet. NAT được sử dụng trên các router đóng vai trò là gateway cho một mạng. Các host bên trong mạng LAN sẽ sử dụng một lớp địa chỉ riêng thích hợp. Còn danh sách các địa chỉ IP hợp lệ sẽ được cấu hình trên Router NAT. Tất cả các packet của các host bên trong mạng LAN khi gửi đến một host trên Internet đều được router NAT phân tích và chuyển đổi các địa chỉ riêng có trong packet thành một địa chỉ hợp lệ trong danhsách rồi mới chuyển đến host đích nằm trên mạng Internet. Sau đó nếu có một packet gửi cho một host bên trong mạng LAN thì Router NAT cũng chuyển đổi địa chỉ đích thành địa chỉ riêng của host đó rồi mới chuyển cho host ở bên trong mạng LAN.

Một cơ chế mở rộng của NAT là PAT (Port Address Translation) cũng dùng cho mục đích tương ứng. Lúc này thay vì chỉ chuyển đổi địa chỉ IP thì cả địa chỉ cổng dịch vụ (port) cũng được chuyển đổi (do Router NAT quyết định).

Page 90: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

90

6. CÁC KIẾN TRÚC VÀ CÔNG NGHỆ MẠNG LAN

I. CÁC KIẾN TRÚC MẠNG (TOPOLOGY).

1. Khái niệm.

Network topology là sơ đồ dùng biểu diễn các kiểu sắp xếp, bố trí vật lý của máy tính, dây cáp và những thành phần khác trên mạng theo phương diện vật lý.

Có hai kiểu kiến trúc mạng chính là: kiến trúc vật lý (mô tả cách bố trí đường truyền thực sự của mạng), kiến trúc logic (mô tả con đường mà dữ liệu thật sự dichuyển qua các node mạng)

2. Các kiểu kiến trúc mạng chính.

Mạng Bus (tuyến)

- Kiến trúc Bus là một kiến trúc cho phép nối mạng các máy tính đơn giản và phổ biến nhất. Nó dùng một đoạn cáp nối tất cả máy tính và các thiết bị trong mạng thành một hàng. Khi một máy tính trên mạng gửi dữ liệu dưới dạng tín hiệu điện thì tín hiệu này sẽ được lan truyền trên đoạn cáp đến các máy tính còn lại, tuy nhiên dữ liệu này chỉ được máy tính có địa chỉ so khớp với địa chỉ mã hóa trong dữ liệu chấp nhận. Mỗi lần chỉ có một máy có thể gửi dữ liệu lên mạng vì vậy số lượng máy tính trên bus càng tăng thì hiệu suất thi hành mạng càng chậm.

- Hiện tượng dội tín hiệu: là hiện tượng khi dữ liệu được gửi lên mạng, dữ liệu sẽ đi từ đầu cáp này đến đầu cáp kia. Nếu tín hiệu tiếp tục không ngừng nó sẽ dội tới lui trong dây cáp và ngăn không cho máy tính khác gửi dữ liệu. Để giải quyết tình trạng này người ta dùng một thiết bị terminator (điện trở cuối) đặt ở mỗi đầu cáp để hấp thu các tín hiệu điện tự do.

- Ưu điểm: kiến trúc này dùng ít cáp, dễ lắp đặt, giá thành rẻ. Khi mở rộng mạng tương đối đơn giản, nếu khoảng cách xa thì có thể dùng repeater để khuếch đại tín hiệu.

- Khuyết điểm: khi đoạn cáp đứt đôi hoặc các đầu nối bị hở ra thì sẽ có hai đầu cáp không nối với terminator nên tín hiệu sẽ dội ngược và làm cho toàn bộ hệ thống mạng sẽ ngưng hoạt động.

Những lỗi như thế rất khó phát hiện ra là hỏng chỗ nào nên công tác quản trị rất khó khi mạng lớn (nhiều máy và kích thước lớn).

Mạng star (sao)

- Trong kiến trúc này, các máy tính được nối vào một thiết bị đấu nối trung tâm (Hub hoặc Switch).

Tín hiệu được truyền từ máy tính gởi dữ liệu qua hub tín hiệu được khuếch đại và truyền đến tất cả các máy tính khác trên mạng.

- Ưu điểm: kiến trúc star cung cấp tài nguyên và chế độ quản lý tập trung. Khi

Page 91: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

91

một đoạn cáp bị hỏng thì chỉ ảnh hưởng đến máy dùng đoạn cáp đó, mạng vẫn hoạt động bình thường. Kiến trúc này cho phép chúng ta có thể mở rộng hoặc thu hẹp mạng một cách dễ dàng.

- Khuyết điểm: do mỗi máy tính đều phải nối vào một trung tâm điểm nên kiến trúc này đòi hỏi nhiều cáp và phải tính toán vị trí đặt thiết bị trung tâm. Khi thiếtbị trung tâm điểm bị hỏng thì toàn bộ hệ thống mạng cũng ngừng hoạt động.

Mạng Ring (vòng)

- Trong mạng ring các máy tính và các thiết bị nối với nhau thành một vòng khép kín, không có đầu nào bị hở. Tín hiệu được truyền đi theo một chiều và qua nhiều máy tính. Kiến trúc này dùng phương pháp chuyển thẻ bài (token passing) để truyền dữ liệu quanh mạng.

- Phương pháp chuyển thẻ bài là phương pháp dùng thẻ bài chuyển từ máy tính này sang máy tính khác cho đến khi tới máy tính muốn gửi dữ liệu. Máy này sẽ giữ thẻ bài và bắt đầu gửi dữ liệu đi quanh mạng. Dữ liệu chuyển qua từng máy tính cho đến khi tìm được máy tính có địa chỉ khớp với địa chỉ trên dữ liệu. Máytính đầu nhận sẽ gửi một thông điệp cho máy tính đầu gửi cho biết dữ liệu đã được nhận. Sau khi xác nhận máy tính đầu gửi sẽ tạo thẻ bài mới và thả lên mạng. Vận tốc của thẻ bài xấp xỉ với vận tốc ánh sáng.

Mạng Cellular (tế bào).

Các mạng tế bào chia vùng địa lý đang được phục vụ thành các tế bào, mỗi tế bào được một trạm trung tâm phục vụ. Các thiết bị sử dụng các tín hiệu radio để truyền thông với trạm trung tâm, và trạm trung tâm sẽ định tuyến các thông điệp đến các thiết bị. Ví dụ điển hình của mạng tế bào là mạng điện thoại di động.

3. Các kiến trúc mạng kết hợp.

Mạng star bus.

Star bus là mạng kết hợp giữa mạng star và mạng bus. Trong kiến trúc này một vài mạng có kiến trúc hình star được nối với trục cáp chính (bus). Nếu một máy tính nào đó bị hỏng thì nó không ảnh hưởng đến phần còn lại của mạng. Nếu một Hub bị hỏng thì toàn bộ các máy tính trên Hub đó sẽ không thể giao tiếp được.

Mạng star ring.

Mạng Star Ring tương tự như mạng Star Bus. Các Hub trong kiến trúc Star Bus đều được nối với nhau bằng trục cáp thẳng (bus) trong khi Hub trong cấu hình Star Ring được nối theo dạng hình Star với một Hub chính.

II. CÁC CÔNG NGHỆ MẠNG LAN.

1. Khái niệm.

- Collision Domain: đây là một vùng có khả năng bị đụng độ do hai hay nhiều máy tính cùng gửi tín hiệu lên môi trường truyền thông.

Page 92: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

92

- Broadcast Domain: đây là một vùng mà gói tin phát tán (gói tin broadcast) có thể đi qua được.

Trong vùng Broadcast Domain có thể là vùng bao gồm nhiều Collision Domain.

2. Ethernet

Đầu tiên, Ethernet được phát triển bởi các hãng Xerox, Digital, Intel vào đầu những năm 1970. Phiên bản đầu tiên của Ethernet được thiết kế như một hệ thống 2,94 Mbps để nối hơn 100 máy tính vào một sợi cáp dài 1 Km. Sau đó cáchãng lớn đã thảo luận và đưa ra chuẩn dành cho Ethernet 10 Mbps.

Ethernet chuẩn thường có cấu hình bus, truyền với tốc độ 10Mbps và dựa vào CSMA/CD (Carrier Sense Multiple Access / Collision Detection) để điều chỉnh lưu thông trên đường cáp chính. Tóm lại những đặc điểm cơ bản của Ethernet như sau:

- Cấu hình: bus hoặc star.

- Phương pháp chia sẻ môi trường truyền: CSMA/CD.

- Quy cách kỹ thuật IEEE 802.3

- Vận tốc truyền: 10 – 100 Mbps.

- Cáp: cáp đồng trục mảnh, cáp đồng trục lớn, cáp UTP.

- Tên của chuẩn Ethernet thể hiện 3 đặc điểm sau:

- Con số đầu tiên thể hiện tốc độ truyền tối đa.

- Từ tiếp theo thể hiện tín hiệu dải tần cơ sở được sử dụng (Base hoặc Broad).

+ Ethernet dựa vào tín hiệu Baseband sẽ sử dụng toàn bộ băng thông của phương tiện truyền dẫn. Tín hiệu dữ liệu sẽ được truyền trực tiếp trên phương tiện truyền dẫn mà không cần thay đổi kiểu tín hiệu.

+ Trong tín hiệu Broadband (ethernet không sử dụng), tín hiệu dữ liệu không bao giờ gởi trực tiếp lên phương tiện truyền dẫn mà phải thực hiện điều chế.

- Các ký tự còn lại thể hiện loại cáp được sử dụng. Ví dụ: chuẩn 10Base2, tốc độtruyền tối đa là 10Mbps, sử dụng tín hiệu Baseband, sử dụng cáp Thinnet.

Card mạng Ethernet: hầu hết các NIC cũ đều được cấu hình bằng các jump (các chấu cắm chuyển) để ấn định địa chỉ và ngắt. Các NIC hiện hành được cấu hình tự động hoặc bằng một chương trình chạy trên máy chứa card mạng, nó cho phép thay đổi các ngắt và địa chỉ bộ nhớ lưu trữ trong một chip bộ nhớ đặc biệt trên NIC.

Dạng thức khung trong Ethernet: Ethernet chia dữ liệu thành nhiều khung (frame). Khung là một gói thông tin được truyền như một đơn vị duy nhất. Khung trong Ethernet có thể dài từ 64 đến 1518 byte, nhưng bản thân khung Ethernet đã sử dụng ít nhất 18 byte, nên dữ liệu một khung Ethernet có thể dài từ 46 đến 1500 byte. Mỗi khung đều có chứa thông tin điều khiển và tuân theo một cách tổ chức cơ bản.

Page 93: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

93

Các loại Ethernet với băng tần cơ sở:

- 10Base2: tốc độ 10, chiều dài cáp nhỏ hơn 200 m, dùng cáp thinnet (cáp đồng trục mảnh).

- 10Base5: tốc độ 10, chiều dài cáp nhỏ hơn 500 m, dùng cáp thicknet (cáp đồngtrục dày).

- 10BaseT: tốc độ 10, dùng cáp xoắn đôi (Twisted-Pair).

- 10BaseFL: tốc độ 10, dùng cáp quang (Fiber optic).

- 100BaseT: tốc độ 100, dùng cáp xoắn đôi (Twisted-Pair).

- 100BaseX: tốc độ 100, dùng cho multiple media type.

- 100VG-AnyLAN: tốc độ 100, dùng voice grade.

2.1 Chuẩn 10Base2

Cấu hình này được xác định theo tiêu chuẩn IEEE 802.3 và bảo đảm tuân thủ các quy tắc sau:

- Khoảng cách tối thiểu giữa hai máy trạm phải cách nhau 0.5m.

- Dùng cáp Thinnet (RG-58).

- Tốc độ 10 Mbps.

- Dùng đầu nối chữ T (T-connector).

- Không thể vượt quá phân đoạn mạng tối đa là 185m. Toàn bộ hệ thống cáp mạng không thể vượt quá 925m.

- Số nút tối đa trên mỗi phân đoạn mạng là 30.

- Terminator (thiết bị đầu cuối) phải có trở kháng 50 ohm và được nối đất.

- Mỗi mạng không thể có trên năm phân đoạn. Các phân đoạn có thể nối tối đa bốn bộ khuếch đại và chỉ có ba trong số năm phân đoạn có thể có nút mạng (tuân thủ quy tắc 5-4-3).

Quy tắc 5-4-3: quy tắc này cho phép kết hợp đến năm đoạn cáp được nối bởi 4 bộ chuyển tiếp, nhưng chỉ có 3 đoạn là nối trạm. Theo hình trên ta thấy đoạn 3, 4chỉ tồn tại nhằm mục đích làm tăng tổng chiều dài mạng và cho phép máy tính trên đoạn 1, 2, 5 nằm cùng trên một mạng.

Ưu điểm chuẩn 10Base2: giá thành rẻ, đơn giản.

2.2 Chuẩn 10Base5

Chuẩn mạng này tuân theo các quy tắc sau:

- Khoảng cách tối thiểu giữa hai nút là 2.5m.

- Dùng cáp thicknet (cáp đồng dày).

- Băng tần cơ sở 10Mbps.

- Chiều dài phân đoạn mạng tối đa là 500m.

Page 94: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

94

- Toàn bộ chiều dài mạng không thể vượt quá 2500m.

- Thiết bị đầu cuối (terminator) phải được nối đất.

- Cáp thu phát (tranceiver cable), nối từ máy tính đến bộ thu phát, có chiều dài tối đa 50m.

- Số nút tối đa cho mỗi phân đoạn mạng là 100 (bao gồm máy tính và tất cả các repeater).

- Tuân theo quy tắc 5-4-3.

Ưu điểm: khắc phục được khuyết điểm của mạng 10Base2, hỗ trợ kích thước mạng lớn hơn.

Chú ý: trong các mạng lớn người ta thường kết hợp cáp dày và cáp mảnh. Cáp dày dùng làm cáp chính rất tốt, còn cáp mảnh dùng làm đoạn nhánh.

2.3 Chuẩn 10BaseT.

Chuẩn mạng này tuân theo các quy tắc sau:

- Dùng cáp UTP loại 3, 4, 5 hoặc STP, có mức trở kháng là 85-115 ohm, ở 10Mhz.

- Dùng quy cách kỹ thuật 802.3.

- Dùng thiết bị đấu nối trung tâm Hub.

- Tốc độ tối đa 10Mbps.

- Dùng đầu nối RJ-45.

- Số nút tối đa là 512 và chúng có thể nối vào 3 phân đoạn bất kỳ với năm phân tuyến tối đa có sẵn.

- Chiều dài tối đa một phân đoạn cáp là 100m.

- Dùng mô hình vật lý star.

- Có thể nối các phân đoạn mạng 10BaseT bằng cáp đồng trục hay cáp quang.

- Số lượng máy tính tối đa là 1024.

- Khoảng cách tối thiểu giữa hai máy tính là 2,5m.

- Khoảng cách cáp tối thiểu từ một Hub đến một máy tính hoặc một Hub khác là0,5m.

Ưu điểm: do trong mạng 10BaseT dùng thiết bị đấu nối trung tâm nên dữ liệu truyền tin cậy hơn, dễ quản lý. Điều này cũng tạo thuận lợi cho việc định vị và sửa chữa các phân đoạn cáp bị hỏng. Chuẩn này cho phép bạn thiết kế và xây dựng trên từng phân đoạn một trên LAN và có thể tăng dần khi mạng cần phát triển. 10BaseT cũng tương đối rẻ tiền so với các phương án đấu cáp khác.

2.4 Chuẩn 10BaseFL.

Các đặc điểm của 10BaseFL:

Page 95: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

95

- Tốc độ tối đa 10 Mbps.

- Truyền qua cáp quang.

Ưu điểm:

- Do dùng cáp quang nối các Repeater nên khoảng cách tối đa cho một đoạn cáp là 2000m.

- Không sợ bị nhiễu điện từ.

- Số nút tối đa trên một đoạn cáp lớn hơn nhiều so với 10Base2, 10Base5, 10BaseT.

2.5 Chuẩn 100VG-AnyLAN.

100VG (Voice Grade) AnyLan là công nghệ mạng kết hợp các thành phần của Ethernet và Token Ring, dùng quy cách kỹ thuật 802.12. Các đặc điểm kỹ thuật:

- Tốc độ truyền dữ liệu tối thiểu là 100Mbps.

- Sử dụng cáp xoắn đôi gồm bốn cặp xoắn (UTP loại 3, 4, 5 hoặc STP) và cáp quang.

- Khả năng hỗ trợ sàng lọc từng khung có địa chỉ tại Hub nhằm tăng cường tính năng bảo mật.

- Chấp nhận cả khung Ethernet lẫn gói Token Ring.

- Định nghĩa trong IEEE 802.12.

- Mô hình vật lý: cascaded star, mọi máy tính được nối với một Hub. Có thể mở rộng mạng bằng cách thêm Hub con vào Hub trung tâm, Hub con đóng vai trò như máy tính đối với Hub mẹ.

- Chiều dài tối đa của đoạn chạy cáp nối hai Hub là 250m.

2.6 Chuẩn 100BaseX.

Tiêu chuẩn 100BaseX Ethernet còn gọi là Fast Ethernet là sự mở rộng của tiêu chuẩn Ethernet có sẵn. Tiêu chuẩn này dùng cáp UTP Cat5 và phương pháp truy cập CSMA/CD trong cấu hình star bus với mọi đoạn cáp nối vào một Hub tươngtự 10BaseT. Tốc độ 100Mbps. Chuẩn 100BaseX có các đặc tả ứng với các loại đường truyền khác nhau:

- 100BaseT4: dùng cáp UTP loại 3, 4, 5 có bốn cặp xoắn đôi.

- 100BaseTX: dùng cáp UTP loại 5 có hai cặp xoắn đôi hoặc STP.

- 100BaseFX: dùng cáp quang có hai dây lõi.

3. FDDI.

Một trong những bất lợi chính của các mạng vòng tín bài là sự nhạy cảm của chúng với bất trắc. Vì mỗi máy gắn trên vòng phải chuyển khung cho máy kế nên một hỏng hóc trên máy sẽ làm cho toàn mạng ngưng hoạt động. Phần cứng vòng tín bài thường được thiết kế để tránh những hư hỏng như thế. Tuy nhiên

Page 96: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

96

hầu hết các mạng vòng tín bài không thể vượt qua khi sự kết nối bị cắt như khi đường cáp nối hai máy bỗng nhiên bị đứt.

Một số công nghệ mạng vòng đã được thiết kế để khắc phục được hỏng hóc nghiêm trọng. Ví dụ FDDI (Fiber Distributed Data Interconnection) là công nghệ mạng vòng tín bài có thể truyền dữ liệu ở tốc độ 100 triệu bit/giây, nhanh gấp 8 lần mạng vòng tín bài IBM, và nhanh hơn 10 lần mạng Ethernet. Để cung ứng tốc độ dữ liệu nhanh như vậy, FDDI dùng sợi quang để nối các máy thay cho cáp đồng.

Mạng FDDI sử dụng cáp quang có đặc điểm sau:

- Chiều dài của cáp: chiều dài tối đa của cáp (2 vòng) là 100Km, nếu cáp (1 vòng) thì chiều

dài tối đa là 200Km.

- Số trạm trên mạng: có khả năng hỗ trợ 500 máy trong một mạng.

- Bảo mật: chỉ bị nghe lén khi vòng cáp bị đứt.

- Nhiễu điện từ: không bị nhiễu điện từ.

FDDI dùng tính năng dự phòng để khắc phục sự cố. Một mạng FDDI gồm hai vòng - một dùng để gởi dữ liệu khi mọi việc đều ổn, và chỉ sử dụng vòng thứ haikhi vòng một hỏng. Về mặt vật lý, hai đường nối với một cặp máy tính là không hoàn toàn cách biệt. Mỗi sợi quang được bọc trong một vỏ nhựa dẻo và có một vỏ bọc cặp sợi bao bên ngoài tương tự như các đường dây điện trong nhà. Vì vậy có thể lắp đặt hai vòng cùng một lúc.

Điều thú vị là các vòng trong mạng FDDI được gọi là xoay ngược (counter rotating) vì dữ liệu chảy trong vòng thứ hai ngược lại với hướng dữ liệu vòng thứ nhất. Để hiểu tại sao lại dùng các vòng xoay ngược, hãy xét trường hợp có sự cố nghiêm trọng xảy ra. Thứ nhất vì cặp sợi nối hai trạm thường đi trên cùng đường nên khi đứt một sợi thì thường là đứt luôn sợi kia. Thứ hai, nếu dữ liệu luôn luôn đi theo một hướng trên cả hai sợi, việc ngắt một trạm ra khỏi vòng (ví dụ khi di chuyển máy) sẽ ngắt truyền thông các máy khác. Tuy nhiên, nếu dữ liệu chuyển theo hướng ngược lại ở đường dự trữ, các trạm còn lại có thể cấu hình mạng để sử dụng đường dự phòng.

Phương pháp truy cập mà mạng FDDI sử dụng là phương pháp Token-Ring. Thẻ Token là một Frame đặc biệt, chạy xoay vòng trên đường mạng. Khi máy trạm cần truyền dữ liệu, nó sẽ bắt thẻ Token, sau khi bắt được thẻ thì nó bắt đầu truyền dữ liệu, sau khi truyền dữ liệu xong thì nó sẽ giải phóng thẻ Token. Chỉ có máy trạm nào giữ thẻ Token mới được phép truyền dữ liệu lên trên đường mạng.

Page 97: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

97

7 . KIẾN THỨC AN NINH MẠNG

I. KIẾN THỨC AN NINH MẠNG CĂN BẢN

Lĩnh vực an ninh mạng có thể nói là rất rộng, tuy nhiên không có gì là không thể. Bạn cần bắt đầu từ những định nghĩa, khái niệm, tới các nền tảng trong ngành công nghệ thông tin như: Lập trình (bạn có thể chọn các nền tảng như html & css, java,ruby, python, c++/#, javascript, php, joomla)

An toàn thông tin; Cơ sở dữ liệu; Quản trị mạng; An ninh mạng và bảo mật hệ thống; Mã hóa và giải mã; Lỗ hổng và khai thác lỗ hổng website, ứng dụng; Mã độc, virus ...

1. Các lỗi bảo mật Website thường gặp

Các lỗi bảo mật website ngày càng đa dạng, với nhiều hình thức tấn công và gâythiệt hại nghiêm trọng. Làm thế nào để bảo mật website toàn diện, những lỗi bảomật website phổ biến nhất, kèm theo ví dụ và những giải pháp cụ thể.

Theo các chuyên gia bảo mật, hầu hết các website bị gặp vấn đề về bảo mật là do kỹ thuật lập trình, tính bảo mật kém của các ứng dụng, phần mềm dành cho website. Giả sử như ứng dụng chat với khách hàng online trên wesite online. Nếu ứng dụng chat đó chưa được rà soát lỗ hổng thì có thể có khả năng ứng dụng đó sẽ chứa lỗ hổng bảo mật. Trên thực tế, việc kiểm tra thử nghiệm tính bảo mật của website, phần mềm và các ứng dụng còn đang rất hạn chế.

Theo thống kế lỗi bảo mật website vào năm 2015 thì có tới 9 website của cơ quan nhà nước đã bị tấn công thay đổi giao diện. Cùng với đó là 144 đường dẫn bị thay đổi, 227 đường dẫn phát tán mã độc, 106 website bị cài mã độc.

Đáng chú ý hơn, google Việt Nam cũng đã bị tấn công vào 23/2/2015, vụ việc được xác minh là do nhóm hacker Lizard Squad. Và vụ việc gần đây nhất là lỗi bảo mật web của cảng hàng không Tân Sơn Nhất, Rạch Giá, Tuy Hòa đã bị 2 bạn trẻ 15 tuổi tấn công.

Vậy nguyên nhân gây ra các lỗ hổng bảo mật website là gì ?

1. 1. Phần mềm, ứng dụng miễn phí

Cũng như những phần mềm miễn phí tải về máy tính bị nhiễm virus, có những loại virus bạn chỉ cần CCleaner, bkav, hoặc phần mềm diệt virus thông thường có thể tránh được sự cố bảo mật về website, máy tính cá nhân. Tuy nhiên có những phần mềm bạn không thể xóa được mà cần phải nhờ sự giúp đỡ của những người có chuyên môn.

Ứng dụng miễn phí cũng vậy, những ứng dụng này sẽ ngấm ngầm sao lưu dữ liệu thông tin của bạn gửi tới những kẻ xấu và bạn có thể bị mất tiền nếu muốn chuộc lại. Và gần đây nhất không đâu xa, quý I đầu năm 2017, hàng loạt vụ báo cáo về việc bị nhiễm phần mềm tống tiền Ransomware ảnh hưởng tới website, iphone, thiết bị IoT.

1.2. Do một số ngôn ngữ lập trình có tính bảo mật web chưa cao:

Page 98: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

98

Ngôn ngữ lập trình backend dễ học nhất là PHP. Hầu hết các website ở Việt Nam được lập trình bằng php, wordpress. Các lập trình viên hay designer thường nhầm lẫn giữa 2 phương thức bảo mật GET và POST, do đó website có thể bị nhòm ngó nếu lập trình sai.

Thực tế, các chuyên gia bảo mật cho rằng ngay cả những người không cần nền tảng về lập trình cũng có thể học được và tạo ra được những website, những phần mềm đơn giản. Vì cú pháp, function đơn giản nên có thể vì vậy mà tính bảo mật chưa cao.

Lỗi bảo mật trong website wordpress cũng không ngoại trừ. Nhắm vào những phần mềm SEO free, plugin for seo, các hacker đã tấn công người dùng 1 cách thầm lặng. Một trong những plugin cho Seo wordpress bị nhiễm mã độc mà bạn cần gỡ bỏ ngay chính là WP- Base-SEO.

Vậy làm thế nào để tăng cường tính bảo mật cho website được code bằng PHP, câu trả lời là bạn hãy dùng framework. Framework giúp tăng cường tính bảo mật website mà mọi người yêu thích dùng nhất là Laravel, tiếp đó là symfony, thứ 3 là CodeIgniter.

1.3. Giải pháp tăng cường tính bảo mật website thường gặp nữa là giảm lỗ hổng trong session, XSS

Bên cạnh những lỗi bảo mật website thường gặp trên còn có lỗ hổng trong XSS. Bằng cách gửi đường link tới session, user name, khi người dùng click vào thì website của bạn đã bị nhiễm virus. Bị lỗi này coi như toàn bộ website của bạn bịhacker điều khiển, từ đó hackers có thể lợi dụng để tấn công chính site này và những site khác nếu chúng bị bảo mật khác như CSRF. Đây là hình thức tấn công website nguy hiểm cao nhưng khả năng khai thác thấp vì phải lừa được người dùng.

Hàng năm có tới 21.5% các website bị xâm nhập vì lỗi XSS.

1.4. Lỗ hổng bảo mật trong cơ sở dữ liệu, kết nối web 2.0, javascipt, AJAX

Những lỗi bảo mật website hay gặp trong javascript là vô tình sử dụng toán tử gán, nhầm lẫn giữa phép cộng và phép nối, lỗi ở câu lệnh return, kết thúc định nghĩa bằng dấu phẩy không chính xác.

1.5. Lỗi chuyển tiếp và điều hướng không xác định

Đây là lỗi vấn đề đầu vào (lỗi về input). Giả sử rằng trang web đích có một module redirect.php có thể lấy URL như một tham số GET. Khi thực hiện thao tác với tham số này trên targetite.com, trang web của bạn có thể chuyển hướng tới phần mềm malwareinstall.com. Người dùng thường cảm thấy tin cậy khi click vào targetite.com/blahblahblah nhưng ít ai ngờ đây là cơ hội cho các phần mềm độc hại lợi dụng tấn công website. Ngoài ra, kẻ tấn công có thể chuyển hướng trình duyệt sang ‘targetite.com/deleteprofile?confirm=1’.

Điều đáng nói là khi nhồi nhét những input không xác định được người dùng có thể làm phần header trở nên tệ hại.

Page 99: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

99

Giải pháp bảo mật cho website khi bị lỗi điều hướng, chuyển tiếp

+ Không làm chuyển hướng tất cả vì thực sự không cần thiết

+ có 1 danh sách tĩnh các vị trí phù hợp để redect.

2. Các phương thức tấn công mạng phổ biến nhất

Công nghệ thông tin ngày càng trở nên đa dạng hóa kéo theo các phương thức tấn công mạng ngày càng khó lường và phức tạp. Vậy những phương thức, hình thức tấn công mạng, xâm nhập mạng đó là gì?

Trên thực tế, hiện nay có rất nhiều dạng, phương thức tấn công mạng. Các tin tặc có thể cài mã độc vào bên trong file hoặc ứng dụng phần mềm của hệ thống hoặc tấn công từ wifi bên ngoài…; các hoạt động xâm nhập ngày càng tinh vi, đa chiều vì vậy ” phòng bệnh tốt hơn chữa bệnh “.

2.1. Những phương thức tấn công mạng chủ yếu.

– Tấn công mạng với hình thức Phishing:

Người dùng rất dễ bị lừa nếu không để ý tới trang web mà mình đang truy cập bởi vì Phishing là kiểu tấn công người dùng bằng cách tạo ra 1 trang web với địachỉ giả mạo. Chẳng hạn như www.google.com thành www.gugle.com. Thông thường với hình thức này, các tin tặc sẽ gửi tới người dùng 1 email đăng nhập đểngười dùng đăng nhập và click vào đó, tiếp theo sẽ sử dụng kỹ thuật điều hướng để điều sang website chứa mã độc. Và vô tình, khi bạn đăng nhập thông tin tài khoản gmail của mình vào web giả mạo đó, bạn đã bị mất tài khoản.

- Tấn công mạng trực tiếp từ bên trong nội bộ:

Tin tặc có thể cài gắm máy tính trực tiếp của họ vào máy tính của người khác hoặc lấy được tài khoản và mật khẩu của người khác sau đó thực hiện hành vi tấn công của mình

– Tấn công gián tiếp:

Các hacker có thể nghe trộm những thông tin khi truy cập vào hệ thống máy tínhngười dùng để đánh cắp dữ liệu cá nhân như hình ảnh, file, video…

– Tấn công theo tệp đính kèm:

Ví dụ như Email, file đính kèm chẳng hạn. Sau khi người dùng click vào tệp đính kèm thì lập tức máy tính bị nhiễm virus. Case Study điển hình trong thời gian quý I năm 2017 là hàng loạt vụ xảy ra liên quan tới mã độc tống tiến Ransomware khi người dùng Click vào tệp đính kèm trong email. Hoặc mã độc tống tiền Ransomware có thể ẩn trong quảng cáo Skype, phần mềm trên điện thoại iPhone, Android.

– Tấn công ẩn danh:

Virus có thể xâm nhập vào máy tính bằng những phần mềm độc hại như những phần mềm diệt virus, phần mềm học tập hay các trình duyệt, plug in ẩn danh, ẩn trong quảng cáo của trình duyệt & phần mềm.

Page 100: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

100

– Tấn công vào con người:

Kẻ tấn công có thể liên lạc với người quản trị hệ thống, tạo nên 1 hộp thoại đăngnhập sau đó yêu cầu người dùng thay đổi mật khẩu, thay đổi cấu hình hệ thống. Phương tức tấn công mạng này rất khó tìm ra giải pháp ngăn chặn triệt đểngoài giáo dục nhận thức của người dùng.

– Một số hình thức, phương thức tấn công vào hệ thống mạng, máy tính khác như: thông qua usb, đĩa CD, địa chỉ IP, server, qua đầu vào của máy in….

2.2. Giải pháp hạn chế những phương thức tấn công mạng.

Tốt nhất là bạn nên trang bị cho mình những kiến thức tối thiểu cơ bản về bảo mật và an ninh mạng như:

– Bảo vệ tài khoản cá nhân của mình bằng xác thực mật khẩu 2 lớp . Hiện tại những trang web như facebook, gmail, những trang web với giao thức https cũng đã hỗ trợ người dùng bảo mật mật khẩu 2 lớp.

– Không nên sử dụng những USB không rõ nguồn gốc hay đã cắm vào nhiều máy tính khác nhau. Nếu tốc độ copy hoặc paste file trong USB của bạn chậm thì nên thay cái mới với dung lượng lớn hơn.

– Để tránh bị tấn công mạng, bạn cũng không nên click vào những đường link lạhoặc những trang web đen.

– Dùng những phần mềm diệt virus uy tín.

– Nâng cấp các trình duyệt, phần mềm và ứng dụng một cách thường xuyên

– Đối với các doanh nghiệp, để tránh lại những phương thức tấn công mạng đa dạng của hackers cần phải kiểm tra, nâng cấp hệ thống, có những giải pháp, chiến lược an ninh mạng rõ ràng. Đồng thời việc bảo trì hệ thống mạng, máy tính cần được thực hiện một cách đều đặn.

Những phương thức, hình thức tấn công mạng ngày càng đa dạng và khó lường. Đối với những vụ tấn công mạng nhỏ có thể mất vài triệu tới vài chục triệu, còn đối với những vụ tấn công mạng lớn có thể thiệt hại tới hàng tỷ.

3. Những hình thức tấn công mạng thường gặp

3.1.Tấn công vào trình duyệt (Browse Attacks)

Một trong các kiểu tấn công mạng điển hình nhất phải kể đến là tấn công vào trình duyệt. Các cuộc tấn công của trình duyệt thường được bắt đầu bằng những trang web hợp pháp nhưng dễ bị tổn thương. Kẻ tấn công có thể xâm nhập vào website và gây hại cho đối tượng bằng phần mềm độc hại.

Cụ thể, khi có khách truy cập mới thông qua trình duyệt web, trang web đó sẽ lập tức bị nhiễm mã độc. Từ đó, mã độc sẽ xâm nhập vào hệ thống của nạn nhânqua lỗ hổng của trình duyệt.Các trình duyệt web bị tin tặc tấn công chủ yếu là Microsoft Internet Explorer Edge, Google Chrome, Mozilla, Firefox, Apple Safari, Opera.

Page 101: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

101

3. 2.Tấn công vét cạn (Brute Force Attacks)

Hiểu một cách đơn giản, Brute force attacks là hình thức tấn công mạng sử dụngmật khẩu, tên người dùng….để tự động kết hợp chúng với nhau cho tới khi chính xác. Kiểu tấn công Brure attacks này có thể mất thời gian vì vậy tin tặc thường sử dụng phần mềm tự động hóa để nhập hàng trăm nghìn mật khẩu. Để phòng tránh kiểu tấn công này, người quản trị website cần cấu hình module giới hạn số lần đăng nhập sai cho mỗi tài khoản, hoặc giới hạn số lần đăng nhập từ các địa chỉ IP.

3.3.Tấn công từ chối dịch vụ (Ddos Attacks)

Ddos attack hay còn gọi là tấn công từ chối dịch vụ – đứng thứ ba trong danh sách các cuộc tấn công mạng nổi bật.

Phương thức tấn công Ddos chủ yếu nhắm vào các mục tiêu như: website, máy chủ trò chơi, máy chủ DNS..làm chậm, gián đoạn hoặc đánh sập hệ thống.

Theo khảo sát của Kaspersky, có tới 5.200 trường hợp bị tấn công từ chối dịch vụ Ddos tại 29 quốc gia khác nhau trong năm 2017. Dự đoán, tần suất và phương thức tấn công Ddos sẽ tăng lên, người dùng hãy hết sức cẩn thận.

3.4.Kiểu tấn công sâu bọ (Worm Attacks)

Worm là những chương trình có khả năng tự động khai thác, tấn công vào điểm đầu cuối hoặc những lỗ hổng đã có sẵn. Sau khi đã tận dụng các lỗ hổng thành công trong hệ thống, Worm sẽ tự động sao chép chương trình từ máy bị nhiễm rồi lây lan sang các máy khác.

Kiểu tấn công mạng Worm Attack thường yêu cầu người dùng tương tác trước để bắt đầu lây nhiễm. Worm attacks thường được tấn công thông qua tệp tải xuống chứa email độc hại, usb, đầu lọc thẻ.

Một trong ví dụ tiêu biểu của phương thức tấn công này là mã độc WannaCry đãlây nhiễm hơn 300.000 máy tính chỉ sau một vài ngày. WannaCry nhắm vào mụctiêu lỗ hổng trên Windows, một khi máy bị nhiễm, phần mềm độc hại sẽ tự độngquét hệ thống mạng kết nối với nhau, từ đó lây nhiễm sang các máy tính khác.

3. 5.Tấn công bằng phần mềm độc hại

3 Hình thức tấn công mạng thông qua phần mềm độc hại chủ yếu là:

– Email phishings: Tin tặc thường lừa đảo người dùng bằng cách tạo ra những thông điệp để thu hút sự tò mò của nhân. Nhưng thực chất, những tệp này sẽ chứa các phần mềm độc hại và phát tán ngay sau khi người dùng tải về máy.

– Tấn công bằng website độc hại (malicious websites): Với cách thức này, kẻ tấncông thường tạo một trang web giả mạo có giao diện y hệt với giao diện của website gốc. Sau khi nạn nhân truy cập vào địa chỉ website đó, phần mềm độc hại sẽ từ từ thâm nhập vào hệ thống của họ. Điển hình cho ví dụ này là các vụ giả mạo website ngân hàng, website ngành hàng không...

Page 102: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

102

– Tấn công bằng quảng cáo chứa mã độc (Malvertising): Đối với một số kẻ tấn công thông minh, chúng sẽ tận dụng mạng lưới các quảng cáo để gắn mã độc vào đó. Khi click vào quảng cáo độc hại này, người dùng sẽ bị điều hướng tới một website khác có chứa phần mềm độc hại. Nguy hiểm hơn, trong một số trường hợp người dùng không click vào quảng cáo cũng có thể bị tấn công.

3. 6.Tấn công website (Website Attacks)

Các dịch vụ tấn công công cộng chẳng hạn như thông qua ứng dụng website, cơ sở dữ liệu thường là đối tượng mục tiêu tấn công nhằm vào website.

Các cuộc tấn công mạng thông qua lỗ hổng website chủ yếu là lỗ hổng SQL Injection, XSS, và path Traversal.

3.7.Kiểu tấn công rà quét (Scan Attacks)

Thay vì sử dụng các hình thức tấn công toàn diện, Scan Attacks là kỹ thuật tấn công mạng rà quét lỗ hổng thông qua các dịch vụ, hệ thống máy tính, thiết bị, hạtầng mạng của doanh nghiệp. Tin tặc sẽ sử dụng các công cụ để rà quét, nghe lénhệ thống mạng để tìm ra lỗ hổng sau đó thực thi tấn công.

3.8.Các kiểu tấn công mạng khác

Ngoài 7 kiểu tấn công mạng nổi bật nói trên, Hacker còn có thể xâm nhập vào bên trong hệ thống bằng cách:

- Tấn công vật lý (Physical Attacks). Tin tặc sẽ cố gắng phá hủy, ăn cắp dữ liệu kiến trúc trong cùng một hệ thống mạng.

- Tấn công nội bộ (Insider Attacks). Các cuộc tấn công nội bộ thường liên quan tới người trong cuộc. Chẳng hạn như trong một công ty, một nhân viên nào đó “căm ghét” người khác… các cuộc tấn công hệ thống mạng nội bộ có thể gây hại hoặc vô hại. Khi có tấn công mạng nội bộ xảy ra, thông tin dữ liệu của công ty có thể bị truy cập trái phép, thay đổi hoặc bán đổi.

4. Nguyên nhân và giải pháp giúp bảo mật website

4.1. Xóa những dịch vụ, phần mềm, ứng dụng không cần thiết

– Các chuyên gia khuyên bạn nên xóa hoặc gỡ bớt những phần mềm, ứng dụng không cần thiết trên máy tính nếu không cần thiết sử dụng. Việc gỡ bỏ đi sẽ giúpmáy tính của bạn được bảo mật hơn, tránh nguy cơ bị nhiễm virus tiềm ẩn và tất nhiên là nhẹ máy hơn rồi.

– Một số dịch vụ trong cấu hình máy chủ website ví dụ như các dịch vụ đăng ký từ xa, dịch vụ in từ máy chủ , RAS…Khi chạy các dịch vụ trên máy chủ, hệ điềuhành sẽ có nhiều cổng mở ra , kéo theo là các mã độc, phần mềm độc hại tấn công. Hãy vô hiệu hóa chúng và khởi động máy chủ lại

4.2. Bảo mật máy chủ và dữ liệu bằng cách hạn chế – Truy cập từ xa

Những kết nối từ xa cần phải được bảo vệ một cách chính xác bằng cách sử dụng những giao thức ngầm, mã hóa. Hoặc có thể sử dụng những token bảo mật

Page 103: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

103

và những thiết bị, phần mềm đăng nhập khác một lần duy nhất. Nếu bạn muốn bảo mật dữ liệu máy chủ an toàn, bạn nên hạn chế các địa chỉ IP, các tài khoản ởmột số nơi như quán coffee, công viên…

4.3. Nội dung ứng dụng web và kịch bản từ phía máy chủ

Những ứng dụng, file và các tệp, kịch bản trên website nên được lưu trong ổ đĩa riêng biệt bởi vì các hacker có thể truy cập vào thư mục gốc của website, thâm nhập và chèn mã độc. Nguy hiểm hơn, chúng có thể truy cập toàn bộ nội dung trên đĩa, hệ điều hành, các tệp có trong web, máy chủ. SecurityBox khuyên bạn nên bảo mật mật khẩu 2 lớp để tránh bị mất dữ liệu, file

4.4. Bảo mật máy chủ bằng với quyền các các đặc quyền cụ thể

Quyền truy cập dịch vụ file và hệ thống đóng một vai trò quan trọng trong bảo mật máy chủ web. Nếu máy chủ mà bị xâm nhập, các hackers rất dễ đọc file dữ liệu, và làm một số tác vụ xấu.

4.5. Cài đặt các bản vá lỗ hổng đúng lúc

Khi có bản vá lỗ hổng được công bố, bạn nên rà soát, cài đặt, thêm vào để tránh rò rỉ tài liệu, dữ liệu.

4.6. Giám sát và kiểm tra máy chủ

Mọi nhật ký dịch vụ mạng, nhật ký truy cập trang web, nhật ký máy chủ cơ sở dữ liệu (ví dụ: Microsoft SQL Server, MySQL, Oracle) và nhật ký hệ điều hành phải được theo dõi và kiểm tra thường xuyên. Việc giám sát sẽ mất khá nhiều thời gian, chúng tôi khuyên bạn nên sử dụng dịch vụ pentest tổng thể nhằm đảm bảo sự bảo mật cho máy chủ, dữ liệu, website tốt nhất4.7. Bảo mật tài khoản người dùng – người quản trị

Tài khoản của các nhà quản trị nên được đổi tên thường xuyên và không được đặt trùng cùng với người dùng gốc trên cài đặt linux / unix. Mỗi quản trị viên truy cập vào máy chủ web phải có tài khoản người dùng của riêng mình, với các đặc quyền chính xác cần thiết. Đây cũng là một thực tiễn bảo mật tốt để tránh việc nhầm lẫn tài khoản của mọi người với nhau.

4.8. Sử dụng những công cụ được phát hành bởi nhà cung cấp phần mềm

Microsoft đã phát hành một số công cụ để giúp các quản trị viên cài đặt IIS server an toàn hơn, ví dụ như quét URL

4.9. Sử dụng máy quét giúp bảo mật dữ liệu máy chủ toàn diện

Máy quét là công cụ tiện dụng giúp bạn tự động hóa và giảm bớt quá trình bảo mật máy chủ web và các ứng dụng web. Tương tự như trình quét an ninh mạng, Acunetix WVS sẽ khởi chạy một số kiểm tra an ninh tiên tiến đối với các cổng mở và các dịch vụ mạng chạy trên máy chủ web của bạn.

Acunetix WVS sẽ kiểm tra các lỗ hổng trong SQL Injection, Cross scripting site,các vấn đề cấu hình máy chủ web và các lỗ hổng khác. Ngoài ra, Acunetix WVScòn có thể kiểm tra độ an toàn , sự bảo mật trong giỏ hàng, mẫu đơn, noioj dung

Page 104: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

104

website. Sau khi kết thúc quá trình rà quét sẽ có một báo cáo tổng thể được tạo ra gửi tới bạn.

5. Hướng dẫn bảo mật wibsite

5.1. Bảo mật trang login và ngăn chặn các hành vi xâm phạm

- Thiết lập khóa trang web và cấm người dùng:

Bạn có thể cài đặt plugin bảo mật iThemes (một trong những plugin giúp bảo mật wordpress tốt nhất hiện nay) để tăng tính bảo mật trong trang login. Việc thiết lập tính năng khóa trang web và cấm người dùng không truy cập được nữa sẽ bảo mật tuyệt đối website wordpress của bạn.

– Plugin iThemes này cho phép chặn, cấm người dùng nếu có 1 ai đó cố gắng đăng nhập, thử nhiều mật khẩu. Và khi có hành động bất thường này xảy ra lập tức người quản trị web wordpress đó sẽ nhận được thông báo qua email.

– Điều hay ho mà SecurityBox thấy ở đây chính là việc bạn có thể hoàn toàn tự set up chế độ bảo mật riêng – tức là tự cài đặt hạn chế số lần người dùng login vídụ như 3,4 lần và nếu cố đăng nhập lần thứ 5 thì sẽ bị cấm địa chỉ IP đang cố tình đó.

– ĐÁNG CHÚ Ý: việc quản lý file wp-config.php trong wordpress là việc quan trọng nhất trong wordpress.

5.2. Không quên xác thực 2 lớp – 2 factor authentication

– Hầu hết những diễn đàn, website bảo mật cao và wordpress đều yêu cầu xác thực 2 lớp khi bạn đăng ký làm thành viên và có thể là đăng nhập. Admin wordpress có thể tăng tính bảo mật cho website của mình bằng cách đưa ra những câu hỏi bí mật hoặc bắt người dùng nhấp vào những hình ảnh đúng yêu cầu, giải phép tính, nhập mã bí mật…

– Với SecurityBox, plugin WP Authenticator đã bảo mật website wordpress của mình chỉ trong vài đúp click chuột

5.3. Login bằng Email giúp tăng cường bảo mật cho web

– Theo mặc định, bạn sẽ đăng nhập bằng tên của mình hoặc số điện thoại. Nhưng việc sử dụng một Email ID thay vì một cái tên thông thường sẽ bảo mật an toàn hơn rất nhiều khi login website.

– Tại sao sử dụng email đăng nhập an toàn hơn ? Lý do đơn giản là tên người dùng, số điện thoại dễ đoán và mò được, còn với email ID thì không. Hơn nữa, bất kỳ tài khoản người dùng nào trong wordpress cũng được tạo từ một địa chỉ email DUY NHẤT. Điều này giúp bảo mật thông tin người dùng, website 1 cáchtuyệt đối

– plugin WP Email Login sẽ hoạt động ngay sau khi kích hoạt và bạn không cần phải cấu hình gì cả. Cách kiếm tra: Bạn chỉ cần đăng xuất khỏi trang web, sau đó đăng nhập lại, nhưng lần này hãy nhớ sử dụng email mà bạn đã tạo để login

Page 105: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

105

5.4. Đổi URL đăng nhập

– Một trong các cách bảo mật website wordpress mà người dùng ít biết chính là đổi địa chỉ url đăng nhập. Theo mặc định, trang login wordpress có thể truy cập dễ dàng qua địa chỉ: wp-login.php hoặc wp-admin + URL chính của trang web. ví dụ như: securitybox.vn/wp-admin/ chẳng hạn.

– Hacker phản ứng sau khi nhìn thấy địa chỉ login này: Nếu nhìn thấy url đăng nhập dạng như trên, hacker có thể đăng nhập vào GWDb (Guess Work Database, ví dụ: tên người dùng: admin và mật khẩu: P @ ssword …)

– Giải pháp: Để nâng cấp bảo mật wordpress toàn tập (to secure website wordpress), bạn cần phải thay đổi địa chỉ URL đăng nhập ngay.

– Plugin hỗ trợ: iThems Security sẽ giúp bạn loại bỏ tới 99% các cuộc tấn công của tin tặc

+ Ví dụ cách thay đổi địa chỉ URL trong phần login như sau:

– Thay đổi wp-login.php thành một cái gì đó độc đáo. Chẳng hạn: My_new_login ; / wp-admin / thành My_new_admin ; /wp-login.php?action=register thành My_new_registeration

5.5. Không quên sử dụng MẬT KHẨU MẠNH:

– Khá nhiều người vẫn sử dụng mật khẩu đơn giản như: 123456, 12345678, 1234567890… hay no password, khongcopass. Việc tạo mật khẩu đơn giản nhưthế này chính là cơ hội mở cửa cho các tin tặc lợi dụng tấn công. SecurityBox khuyến cáo: Bạn cần kiểm tra thay đổi mật khẩu ngay nếu bạn để mật khẩu như trên hoặc quá đơn giản.

– Tốt nhất, hãy sử dụng mật khẩu có cả chữ hoa và chữ thường, số và ký tự đặc biệt, tránh sử dụng số điện thoại cá nhân nhé.

- Bảo mật trang quản trị Admin. Theo các chuyên gia bảo mật. Bảng điều khiển trang quản trị là phần được hacker nhòm ngó nhất vì khi hack được bảng điều khiển Dashboard sẽ đạt được nhiều mong muốn nhất của chúng.

5.6. Bảo vệ thư mục wp-admin (secure wp-admin directory wordpress):

Thư mục wp-admin được ví như trái tim của bất kỳ website wordpress nào. Vì thế, nếu phần này bị tấn công, bị xâm chiếm thì coi như website của bạn hỏng hoàn toàn.

Giải pháp: Bảo vệ bằng mật khẩu trong thư mục wp-admin. Bằng cách sử dụng plugin có tên: AskApache Password Protect , Admin có thể truy cập vào dashboard bằng cách gửi 2 mật khẩu. Một mật khẩu bảo vệ trang login và một mật khẩu bảo vệ khu vực quản trị WordPress. Nếu người dùng trang web được yêu cầu truy cập vào một số phần cụ thể của wp-admin, bạn có thể bỏ chặn những phần đó và khóa phần kia lại. Plugin AskApache Password Protect này sẽ tự động tạo ra một tập tin .htpasswd, mã hóa mật khẩu và cấu hình quyền của tập tin và tăng cường bảo mật cao cho wordpress.

Page 106: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

106

5.7. Mã hóa dữ liệu bằng SSL

SSL (Secure Socket Layer) là một bức tiến giúp bảo vệ bảng quảng trị. Các hacker sẽ cảm thấy khó khăn khi cố tình kết nối, phá độ bảo mật của website wordpress vì đã có SSL đảm bảo truyền dữ liệu an toàn giữa các trình duyệt củangười dùng và máy chủ.

Lợi thế cho Seoer khi website có chứng chỉ bảo mật SSL sẽ làm tăng thứ hạng tìm kiếm keyword trên Google. Bởi Google hiểu website của bạn đang bảo người dùng tốt hơn với những site khác nên sẽ ưu tiên hơn trên bảng thứ hạng.

5.8. Sử dụng plugin Force Strong passwords khi dùng blog wordpress

Nhằm tăng độ Bảo mật wordpress khi có nhiều tác giả viết bài, bạn nên cài plugin này. Đây là một biện pháp phòng ngừa,tăng thêm bảo mật nữa cho trang wordpress

5. 9. Điều hướng các files

Nếu bạn muốn thêm một số tính năng bảo mật cho wordpress thì bạn có thẻ điềukhiển sự thay đổi các tệp, file bằng plugin Acunetix WP Security, Wordfence, or again, iThemes Security

5.10. Thay đổi WordPress database table prefix

– Nếu như bạn thông thạo về code và đã cài wordpress thì có thể bạn đã quen với tiền tố wp-table được sử dụng trong database của WordPress.

– Chắc hẳn bạn không quên lỗ hổng bảo mật website – SQL injection. Hãy thay đổi wp- thành một số ví dụ như: mywp-, wpnew-

– Để hỗ trợ bảo mật database wordpress bạn có thể sử dụng plugins: WP-DBManager hoặc iThemes Security. Và nhớ sao lưu dữ liệu website trước khi thực hiện bất kể điều gì với dữ liệu. Nó giống như việc bạn photo CMTND trước khi nộp đơn xin việc tại chỗ làm vậy.

5.11.Sao lưu dữ liệu, site một cách thường xuyên

– Việc sao lưu dữ liệu giúp bạn bảo mật được tài sản website của mình trước khimột ngày dông tố nhất có thể xảy ra.

– SecurityBox chia sẻ, bạn có thể sử dụng VaultPress ( giúp sao lưu và bảo mật dữ liệu website wordpress cực kỳ nhanh, tốt). Cho dù bất kể điều gì xấu, SecurityBox đều có thể khôi phục lại được toàn bộ dữ liệu. Mặt khác, VaultPress sẽ rà quét các lỗ hổng, malware trong site của bạn và cảnh báo ngay khi có lỗi.

– Và điều không thể không chính là thiết lập mật khẩu mạng cho database

5.12. Bảo mật file wp-config.php trong wordpress

– Hỡi các bạn yêu wordpress, file wp-config.php là file chứa thông tin quan trọng nhất trong phần cài đặt WordPress, là tệp phải lưu tâm trong thư mục gốc của website. Bạn là một blogger sử dụng wordpress hoặc không phải, thì đều cần bảo mật file wp-config.php

Page 107: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

107

– Bạn có thể tắt chức năng Revisions để tiết kiệm cơ sở dữ liệu và tăng tính bảo mật cho wordpress

5. 13. Nâng cấp bảo mật blog wordpress bằng cách nâng cấp quyền chỉnh sửa tệp

– Nếu người dùng có quyền truy cập phần dashboard của trang quản trị, họ có thể chỉnh sửa bất kỳ file nào, thậm chí cả plugin, themes.

– Tuy nhiên, để ngăn chặn hacker và người khác chỉnh sửa file bạn có thể vào phần Dashboard của wordpress và thêm tệp sau vào cuối file wp-config.php:

define (‘DISALLOW_FILE_EDIT’, true);

5.14.Kết nối tới máy chủ một cách chính xác

– Khi thiết lập phần cài đặt, hãy kết nối với máy chủ qua SFTP hoặc SSH . Việc kết nối máy chủ theo cách này giúp đảm bảo truyền tải an toàn cho các files.

5.15.Thiết lập quyền truy cập thư mục – tránh CHMOD

– Việc thay đổi những tệp tin hay quyền truy cập thư mục là một định hướng tốt giúp đảm bảo website wordpress của bạn được bảo mật hơn trong lưu trữ hosting. Hãy thiết lập quyền cho thư mục “755” và các tệp tin “644” để bảo vệ toàn bộ hệ thống tập tin – thư mục, thư mục con và các tệp riêng lẻ.

– Bạn có thể thực hiện việc này thủ công qua File Manager bên trong bảng điều khiển hosting của bạn, hoặc thông qua Terminal (kết nối với SSH) – sử dụng lệnh “chmod”.

– CHMOD có thể rất đang mới lạ với bạn vì kiến thức phần này khá nhiều. Bạn chỉ cần nhớ CHMOD trong thư mục là 777 thôi. Dạo đầu mình cũng 1 số bạn admin khác chưa rõ về bảo mật WordPress cho lắm cũng đã bị lỗi mất thư mục mà không biết lý do gì.

– Thiết lập phân quyền 777, cho phép tối đa tất cả user trên server đều có quyền ghi/xóa/thực thi thư mục và các tập tin bên trong.

– Bạn đang dùng Shared Host, thì cần phải nhớ CHMOD chuẩn nhất là 755 chothư mục, 644 cho files. Với file wp-config.php thì hãy CHMOD thành 444 hoặc 440 hoặc 400.

516.Tắt danh sách thư mục với .htaccess

– Bạn tạo một thư mục có tên “data”, và có thể thấy mọi thứ trong thư mục “data” bằng cách gõ http://www.example.com/data/ trong trình duyệt của bạn

– Bạn có thể ngăn chặn điều này bằng cách thêm dòng mã sau vào tệp tin .htaccess: Options All -Indexes

5.17. Theo dõi và cập nhật thường xuyên các plugin, themes của WordPress

– Cũng giống như windows, việc update thường xuyên giúp bảo mật máy tính của bạn tốt hơn, thì wordpress cũng vậy. Nếu không cập nhật những themes, plugin của wordpress, bạn có thể gặp rắc rối về vấn đề bảo mật đấy. Và mới cuối

Page 108: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

108

tháng 3/2017 vừa rồi, một plugin mang tên WP- Base-SEO đã dẫn lối cho hacker.

5.18. Xóa phiên bản wordpress:

– Tất nhiên việc tìm ra phiên bản wordpress mà bạn đang sử dụng sẽ giúp hacker lần ra dấu vết lỗ hổng dễ dàng hơn rất nhiều và chúng có nhiều time nghiên cứu hơn để công phá.

6. Những nguyên tắc cơ bản để bảo mật website Joomla

6.1.Website phải được an toàn trước khả nǎng bị tấn công Cross-Site Scripting

Cách tấn công Cross-Site Scripting dễ dàng thấy nhất là khi hacker có ý định chèn một đoạn mã độc vào mẫu điền(form) nhập thông tin. Nội dung input vào có thể chứa các tag <object> hoặc là <script> đi kèm với những đoạn mã độc vô cùng nguy hiểm. Khi trình duyệt của bạn truy cập vào trang đó, nó sẽ cho rằng các đoạn mã này là do máy chủ gửi đến. Sau đó, nó sẽ chạy đoạn mã này ở cấp độ bảo mật thông thường, tất nhiên người dùng sẽ lãnh hậu quả nghiêm trọng khi chạy đoạn mã đó. Để muốn an toàn trước kiểu tấn công Cross-Site Scripting cần để tâm đến các điều sau đây. Thứ nhất đó là thường xuyên cập nhật tất cả những bản vá bản sửa lỗi mới nhất từ IIS và Windows. Thứ 2 đó là phải luôn lọctoàn bộ những ký tự đặc biệt từ người dùng nhập vào ví dụ như < > ” ‘ % ( ) & + – -. Phải lọc những ký tự này để kết xuất dựa trên cơ sở dữ liệu người dùng nhập vào.

Code:

Để lọc được các dữ liệu đặc biệt cần phải xác định được chính sác lược đồ mã hóa kỹ tự trên những website, ở trong <meta> hoặc phần <header>.

Code:

6. 2.Application có thể không dùng những cookie thường trực

Trước khi nói đến vấn đề bảo mật website ASP.NET , bạn lên hiểu cookie thường trực là gì. Nó thông thường sẽ là những folder và được những application của website gửi đến trình duyệt của người dùng và sẽ tồn tại trong ổ cứng của người sử dụng kể cả khi họ không dùng đến trình duyệt. Chúng sẽ lưu trữ lại tất cả những thông tin về người dùng để những application website có thể

Page 109: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

109

tùy biến nội dung để phù hợp với tất cả những người sử dụng hay có thể cho phép người dùng bỏ qua bước đăng ký hoặc đăng nhập.

Cookie không thường trực sẽ được lưu trong máy tính của người dùng và tồn tại trong một khoảng thời gian nhất định khi người dùng sử dụng trình duyệt. IIS sẽ dựa vào những cookie đó để có thể xác định 1 phiên ASP. Nếu không có nó, IIS sẽ không thể duy trì một một phiên làm việc. Nếu như trang của bạn dùng cookie thường trực , không nên để IIS lưu chúng trong log của IIS. Nếu như log đã lưu lại toàn bộ thông tin đăng nhập của người dùng thì sẽ có khả năng các thông tin này sẽ bị lộ ra ngoài bởi một thỏa hiệp nào đó.

6.3. Dùng SSL với toàn bộ các site “nhạy cảm” được chuyển ở trên Internet

SSL sẽ có nhiệm vụ mã hóa tất cả những thông điệp TCP/TP để chúng không bị “nhòm ngó” ở trên đường truyền hoặc là có một giải pháp khác đó là mã hóa VPN. Những điều này là rất cần thiết nếu như bạn muốn gửi các thông tin tối mật như số thẻ tín dụng của bạn qua mạng Internet. Khả năng xâm nhập đường truyền rồi lấy cắp những thông tin tuyệt mật sẽ là rất thấp nhưng không phải là không có.

Theo nghiên cứu của SecurityBox, người dùng sẽ không đặt quá nhiều niềm tin vào website của bạn nếu như toàn bộ thông tin của họ không được mã hóa một cách toàn diện. Tuy vậy, mặt không tốt của SSL là sẽ có thể làm chậm lại hiệu năng thực thi của những ứng dụng. Mức độ sử dụng tài nguyên trong CPU yêu cầu ở trong tiến trình mã hóa và phiên dịch cho một trang SSL sẽ cao hơn từ 10 % đến 100% khi so sánh với những trang không bình thường. Nếu như máy chủ có mật độ những trang SSL cao, bạn sẽ phải để tâm đến việc dùng thêm bộ tăng tốc cho SSL phần cứng.

6.4. Người dùng sẽ phải đăng nhập khi muốn dùng ứng dụng

Nguyên tắc bảo mật website ASP.NET này, các bạn áp dụng nó cho những application mà có yêu cầu việc đăng nhập. Việc này có nghĩa là đăng nhập tự động dựa vào cookie sẽ là không được chấp nhận. Tuy người dùng có thể sẽ cảm thấy phiền phức nhưng nếu cho người dùng tự động đăng nhập tự cookie đósẽ có vô vàn hiểm nguy.

Một giải pháp để bảo vệ mật khẩu của bạn là việc chúng ta có thể dễ dàng làm được bằng cách thêm autocomplete = “off” cho tag <form> hay <input>.

Code:

6.5Người dùng sẽ được đăng xuất khi thoát khỏi site

Ví dụ bảo mật web service ASP.NET cụ thể với phần này. Ví dụ như có một người dùng đang lướt một trang trên website của bạn, và rồi họ thoát khỏi và

Page 110: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

110

vào một website mới nhưng lại không thích rồi trở lại website của bạn bằng phím mũi tên ⇐ trên trình duyệt của bạn.

Ở trong trường hợp này, application phải đưa ra yêu cầu người dùng đăng nhập lại. Có những trường hợp giống như trường hợp ở trên của người dùng phải phụ thuộc toàn bộ vào những script chạy ẩn ở trong trình duyệt mà không thể dựa vào máy chủ bởi vì nó không thể biết người dùng đã lướt những trang nào đã ở những đâu.

Vậy cách bảo mật website ASP.NET tốt nhất cho vấn đề này đó là dùng bảo mật Proxy Server giống như của Netegrity SiteMinder. Giải pháp này sẽ kiểm tra và giám sát toàn bộ những request Website từ trình duyệt của bạn và chép lại mọi địa chỉ mà trình duyệt của bạn đã vào và để application có thể xem xét và kiểm tra. Một cách thức không hoàn chỉnh ở trong việc xem xét những hạn chế site có thể làm được bằng cách nhập đoạn mã sau

Code:

Ví dụ như người dùng muốn truy cập vào bất kể một website nào đó không giống với website đã được từ một link của một website khác, thì chúng sẽ phản hồi bằng 1 lệnh từ chối. Mặc dù vậy, cách này sẽ không ngăn chặn được việc một người dùng rời bỏ website của bạn đến một trang khác nhưng rồi lại trở lại trang của bạn và tiếp tục công việc của họ.

6.6.Ngắt kết nối khi người dùng không có tác động đến website sau thời gian

Bạn 2 lựa chọn để bảo mật website ASP.NET cho vấn đề này.

Giải pháp thứ nhất đó là ta sẽ dùng IIS manager rồi sau đó đặt giới hạn cho phiên làm việc ASP với một khoảng thời gian cụ thể hoặc bạn mong muốn trongbao lâu. Ở trong ứng dụng, lưu dữ liệu truy cập vào trong 1 biến phiên làm việc và sau đó sẽ xem xét và kiểm tra ở trên tất cả website mà người dùng duyệt qua. Nếu như thông tin truy cập không nằm trong 1 biến phiên, người dùng đó sẽ bị ngắt kết nối tới website và ứng dụng sẽ cần chuyển hướng họ đến trang đăng nhập hệ thống.

Theo nghiên cứu của chuyên gia, nếu như chưa phải tin cậy tuyệt đối, chính bạn hãy viết một đoạn mã để xử lý ngắt kết nối người dùng ở trong “Session_OnEndở tệp Global.asa”. Giải pháp bảo mật website ASP.NET này phía client dùng một chút JS(JavaScript), cho thêm đoạn mã sau vào đầu của tất cả những website kết xuất từ ứng dụng

Code:

Page 111: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

111

Để ngắt kết nối người dùng ứng dụng chúng ta sẽ dùng trang “Logout.ASP”. Với 9000000 mili giây chính là khoảng thời gian lớn nhất mà người sử dụng vẫncó thể giữ phiên làm việc của họ ở trong khi không có một hoạt động nào liên quan đến website của bạn.

II. DỮ LIỆU VÀ AN TOÀN THÔNG TIN

1. Tổng quan về kiến thức, công việc của ngành An toàn thông tin

An toàn thông tin bao gồm những nhóm nào?

Có thể nói, ngành an toàn thông tin nói riêng và lĩnh vực CNTT nói chung là rất rộng. Nhìn chung, ATTT có những nhóm sau đây:

An toàn vận hành (operations security)

Phát triển công cụ (applied security)

An toàn sản phẩm (product security)

Tìm diệt mã độc và các nguy cơ khác (threat analysis)

2. Cơ bản về mã hóa dữ liệu

2.1. Mã hóa thông tin là gì?

Ta có thể hiểu đơn giản rằng, mã hóa là một phương pháp bảo vệ thông tin, bằng cách chuyển đổi thông tin từ dạng có thể đọc và hiểu được thông thường sang dạng thông tin không thể hiểu theo các thông thường. Việc làm này giúp ta có thẻ bảo vệ thông tin tốt hơn, an toàn trong việc truyền dữ liệu. Dù kẻ xấu có được các gói tin, cũng khó có thể hiểu được nội dung của nó.

2.2. Vì sao việc mã hóa dữ liệu lại đặc biệt quan trọng?

Như đã trình bày bên trên, việc mã hóa là để đảm bảo tính an toàn cho thông tin,đặc biệt trong thời đại công nghệ số như hiện nay. Bạn hãy thử tưởng tượng xem, nếu không có mã hóa dữ liệu thì sẽ như thế nào? Ví dụ, bạn đang làm việc cho một công ty lớn, và bạn phải gửi tài liệu quan trọng cho đồng nghiệp của mình. Tuy nhiên, dữ liệu ấy lại không được mã hóa. Và thế là, bằng một số thủ thuật nhỏ, công ty đối thủ có được số tài liệu đó. Điều này sẽ gây tổn thất không hề nhỏ cho công ty. Nhưng ngược lại, nếu thông tin được mã hóa cẩn thận, chỉ có những người có key mới mở được nó, thì sẽ không có những chuyện như vậy xảy ra.Vì thế mà việc mã hóa thông tin trở nên vố cùng quan trọng.

2.3. Mã hóa cổ điển

Page 112: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

112

Đây là phương pháp mã hóa cổ xưa và đơn giản nhất. Ngày nay phương pháp này không còn được sử dụng nhiều so với những phướng pháp khác. Bởi nó quá đơn giản. Ý tưởng của phương pháp này là: bên A mã hóa thông tin bằng thuật toán mã hóa cổ điển, và bên B giải mã thông tin, dựa vào thuật toán của bên A cung cấp, không cần dùng đến bất kì key nào. Vì thế toàn bộ độ an toàn của kiểumã hóa này phụ thuộc vào bí mật của thuật toán. Nếu một người thứ ba biết được thuật toán thì xem như thông tin không còn bảo mật nữa. Việc giữ bí mật thuật toán trở nên vô cùng quan trọng, và không phải ai cũng có thể giữ bí mật đó một cách trọn vẹn.

2.4. Mã hóa một chiều (hash)

Có những tường hợp chúng ta chỉ cần mã hóa thông tin chứ không cần giải mã nó. Đó là khi chúng ta cần sử dụng kiểu mã hóa một chiều này. Ví dụ, khi bạn đăng nhập vào một trang web, mật khẩu của bạn sẽ được hàm băm (hush function) “băm nhỏ” , chuyển thành một chuỗi các kí tự như “KhhdhujidbH”. Thực chất, cơ sở dữ liệu lưu lại các kí tự mã hóa này chứ không lưu lại mật khẩucủa bạn. Lỡ hacker có trộm dữ liệu thì cũng chỉ thấy những kí tự khó hiểu chứ không biết password thật của bạn là gì.

Đặc điểm của hash function đó là trong cùng 1 điều kiện, dữ liệu đầu vào giống nhau thì nó sẽ cho ra kết quả y hệt nhau. Nếu chỉ cần thay đổi một kí tự trong chuỗi, từ chữ hoa sang chữ thường, kết quả sẽ hoàn toàn khác. Cũng vì vậy mà người ta dùng hash function để kiểm tra tính toàn vẹn của dữ liệu.

Hiện nay, hai thuật toán hash function thường được dùng nhất là MD5 và SHA. Nếu bạn download file trên mạng thì đôi khi sẽ thấy dòng chữ MD5 do tác giả cung cấp. Bạn sẽ phải nhập mã hiện lên theo yêu cầu. Mục đích là để bạn so sánh file đã download với file gốc xem có bị lỗi gì không.

2.5. Mã hóa bất đối xứng

Kiểu mã hóa này còn có tên gọi khác là mã hóa khóa công khai. Nó sử dụng đến hai khóa (key) khác nhau. Một khóa gọi là khóa công khai (public key) và một khóa khác là khóa bí mật (private key). Dữ liệu được mã hóa bằng public key. Tất cả mọi người đều có thể có được key này. Tuy nhiên để giải mã được dữliệu, người nhận cần phải có private key.

Để thực hiện mã hóa bất đối xứng thì:

Page 113: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

113

- Người nhận sẽ tạo ra một gặp khóa (public key và private key), họ sẽ giữ lại private key và truyền cho bên gửi public key. Vì public key này là công khai nêncó thể truyền tự do mà không cần bảo mật.

- Trước khi gửi tin nhắn, người gửi sẽ mã hóa dữ liệu bằng mã hóa bất đối xứng với những key nhận được từ người nhận

- Người nhận sẽ giải mã dữ liệu nhận được bằng thuật toán được sử dụng ở bên người gửi, với key giải mã là private key.

Điểm yếu lớn nhất của kiểu mã hóa này là tốc độ mã hóa và giải mã rất chậm. Nếu dùng kiểu mã hóa bất đối xứng trong việc truyền dữ liệu thì sẽ rất tốn phí và mất thời gian.

Thuật toán mã hóa bất đối xứng thường thấy: RSA.

2.6. Mã hóa đối xứng

Phương pháp mã hóa này chỉ cần dùng một key giống nhau để mã hóa và giải mã. Theo một số tài liệu thì mã hóa đối xứng là giải pháp được sử dụng nhất phổbiến hiện nay.

Quy trình mã hóa được miêu tả như sau:

- Dùng giải thuật ngẫu nhiên mã hóa + key để mã hóa dữ liệu gửi đi.

- Bằng cách nào đó, key của người gửi sẽ được gửi đến cho người nhận, có thể là giao trước hoặc sau khi mã hóa file đều được.

- Khi người nhận nhận được dữ kiệu, họ sẽ dùng key này để giải mã dữ liệu để có được dữ liệu chuẩn.

Tuy nhiên vấn đề bảo mật nằm ở chỗ, làm thế nào đẻ chuyển key cho người nhận một cách an toàn. Nếu key này bị lộ, bất kì ai sử dụng giải thuật phía trên đều có thể giải mã được dữ liệu như vậy thì tính bảo mật sẽ không còn nữa.

Chúng ta sẽ thường thấy hai thuật toán thường thấy là DES và AES. Thuật toán DES xuất hiện từ năm 1977 nên không được sử dụng phổ biến bằng AES. Thuậttoán AES có thể dùng nhiều kích thước ô nhớ khác nhau để mã hóa dữ liệu, thường thấy là 128-bit và 256-bit, có một số lên tới 512-bit và 1024-bit. Kích thước ô nhớ càng lớn thì càng khó phá mã hơn, bù lại việc giải mã và mã hóa cũng cần nhiều năng lực xử lý hơn.

3. Giải pháp bảo mật thông tin cá nhân.

3.1. Những vấn đề bảo mật thông tin cá nhân

Nổi cộm là mục tiêu tấn công mạng chuyển dịch từ mục tiêu cá nhân sang các tập đoàn, tổ chức và doanh nghiệp kinh tế lớn làm ảnh hưởng tới các quốc gia.

Cụ thể, tại Việt Nam, từ đầu năm đến hết tháng 9 năm 2017, đã xảy ra 9.964 sự cố tấn công mạng nhắm vào cá nhân, và tổ chức. Trong đó, hình thức tấn công mạng ngày càng phức tạp khó lường, điển hình là phương thức tấn công

Page 114: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

114

malware, deface, và phishing. Đáng chú ý hơn, có tới 21 website của chính phủ có tên miền gov.vn đã bị hacker tấn công.

3.2. Giải pháp bảo mật thông tin cá nhân và doanh nghiệp trong.

+ Mạng nội bộ

Theo các chuyên gia “Khi làm việc với máy tính sử dụng mạng nội bộ của công ty hay tổ chức, chúng ta nên sử dụng mật khẩu 2 lớp, tránh click vào những website có dạng lừa đảo Phishing hoặc cảnh giác với các đường link lạ trên mạng xã hội, email. Ngoài ra, nhân viên cũng cần phải cảnh giác tới các giao dịch trực tuyến khi làm việc tại công ty. Lý do bởi, không thể khẳng định rằng mạng nội bộ của tổ chức đã được bảo mật ở chế độ cao nhất.”

+ Vấn đề bảo mật thông tin cá nhân

Trong mạng nội bộ gia đình cũng vậy. Các hacker thường lợi dụng lỗ hổng wifi, lỗ hổng trong hệ thống mạng gia đình, và lỗ hổng bảo mật trong thông tin cá nhân để tấn công.

Một vấn đề đáng lưu ý nữa là khi làm việc tại nhà, hay văn phòng, người dùng thường tắt tường lửa để chia sẻ thông tin cá nhân với nhau. Điều này rất nguy hiểm, vì vô hình chung, bạn đã tắt tính năng ngăn chặn mã độc trên internet, file,tệp tin và dữ liệu. Chưa hết, một số người dùng tắt tính năng cập nhật tự động phần mềm, dẫn tới nguy cơ máy tính bị nhiễm mã độc rất cao.

+ Wifi công cộng

Sử dụng wifi công cộng cũng được các đơn vị đề cập tới. Các chuyên gia đều nhấn mạnh nguy cơ máy tính, điện thoại bị tấn công khi sử dụng wifi miễn phí tại các điểm công cộng như quán cà phê, nhà hàng, công viên…. đang diễn ra rất phổ biến.

Hackers dễ dàng chiếm đoạt thông tin cá nhân qua mạng wifi miễn phí bởi mật khẩu tại điểm phát rất dễ đoán, chỉ cần sử dụng công cụ ‘từ điển password’ là dễ dàng dò ra.

Lưu ý thêm, khi người dùng chạy các ứng dụng có xác thực tài khoản như Facebook, Linkedin, Email…hay tài khoản của thẻ tín dụng khi không được mã hóa trước đó, hacker có thể dùng công cụ thu thập dữ liệu người dùng một cách dễ dàng.

3.3. Bảo mật thông tin cá nhân trên mạng xã hội

Lời khuyên nói chung:

– Tránh kết bạn với những người lạ

– Không trả lời tin nhắn từ người lạ có dấu hiệu đáng ngờ được gửi đến trên facebook, linkedin, zalo…

– Rà soát các nhóm, groups bạn đã tham gia trên mạng xã hội và rời khỏi những nhóm không cần thiết.

Page 115: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

115

– Tuyệt đối không click, nhấp vào đường dẫn lạ có nguy cơ ăn cắp mã độc.

– Khi giao dịch trực tuyến cần kiểm tra website đó có an toàn hay không, hãy đểý đến tên miền (đề phòng trường hợp bạn bị tấn công phishing).

– Hạn chế tham gia các trò chơi trên mạng xã hội có yêu cầu xác thực hay kiểm tra thông tin cá nhân quá nhiều lần.

+ Cách bảo mật thông tin cá nhân trên mạng xã hội Facebook:

Bạn nên kiểm tra thông tin cá nhân của mình trên Facebook được đảm bảo hay chưa theo 7 bước sau:

+ Bước 1:Kiểm tra quyền riêng tư

+ Bước 2:Kiểm tra tính bảo mật trên thiết bị

+ Bước 3:Xét duyệt đăng nhập

+ Bước 4:Kiểm tra liên lạc cá nhân

+ Bước 5:Kiểm tra các ứng dụng kết nối

+ Bước 6:Xem lại nhật ký hoạt động

+ Bước 7:Sử dụng công cụ rà quét lỗ hổng của Facebook cấp

+ Thận trọng khi giao dịch trực tuyến

Khi đăng ký giao dịch trực tuyến, người dùng nên dùng bàn phím ảo hoặc copy mật khẩu được tạo trên Word. Tránh nhập dữ liệu trực tiếp từ bàn phím đề phòngkhả năng máy tính bị keylogger. Và tất nhiên, bạn cũng cần cảnh giác với hình thức lừa đảo phishing.

3.4.Thiết bị di động , máy tính và PC

Điện thoại thông minh nhưng chưa chắc đã an toàn. Điện thoại càng thông minh và cao cấp bao nhiêu, kẻ xấu càng nhòm ngó và tấn công bấy nhiêu.

Với số lượng người truy cập internet từ thiết bị đang ngày càng tăng trưởng (sắp vượt qua laptop & PC), người dùng thiết bị di động cần hết sức cảnh giác với các hình thức tấn công mạng. Phổ biến nhất là các trường hợp điện thoại bị nhiễm mã độc, virus từ các ứng dụng trên Store. Ngay cả các ứng dụng chính chủ của Apple hay Google phát hành cũng bị tin tặc tấn công.

Để bảo mật thông tin cá nhân trên thiết bị di động (điện thoại) hay máy tính cũng vậy, chúng ta cần hạn chế cài đặt những ứng dụng, công cụ, phần mềm. Bạn cần bật và cài đặt các tính năng bảo mật có sẵn trong thiết bị của mình thay vì tắt đi. Đồng thời, việc thường xuyên backup (sao lưu) dữ liệu trên thiết bị rất cần thiết.

Nếu bạn sử dụng các công cụ bảo mật hay rà quét mật khẩu, hãy kiểm tra kỹ, đọc kỹ các tính năng và nên hỏi ý kiến từ chuyên gia bảo mật hay các chuyên gia về an ninh mạng.

4. Mã độc

Page 116: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

116

4.1. Tổng quan về mã độc

Mã độc hay “Malicious software” là một loại phần mềm được tạo ra và chèn vàohệ thống một cách bí mật với mục đích thâm nhập, phá hoại hệ thống hoặc lấy cắp thông tin, làm gián đoạn, tổn hại tới tính bí mật, tính toàn vẹn và tính sẵn sàng của máy tính nạn nhân. Mã độc được phân thành nhiều loại tùy theo chức năng, cách thức lây nhiễm, phá hoại: virus, worm, trojan, rootkit …

Mọi người hay bị nhầm lẫn với 1 khái niệm khác là Virus máy tính. Thực tế, virus máy tính chỉ là 1 phần nhỏ trong khái niệm mã độc. Virus máy tính hiểu đơn thuần cũng là một dạng mã độc nhưng sự khác biệt ở chỗ virus máy tính có KHẢ NĂNG TỰ LÂY LAN.

Các loại mã độc càng ngày càng phức tạp từ cách thức lây nhiễm, phương pháp ẩn mình, cách thức thực hiện các hành vi nguy hiểm… Giới hạn giữa các loại mã độc ngày càng hạn hẹp vì bản thân các mã độc cũng phải có sự kết hợp lẫn nhau để hiệu quả tấn công là cao nhất.

4.2. 12 loại mã độc phổ biến

1.Boot virus

Boot virus hay còn gọi là virus boot, là loại virus lây vào boot sector hoặc master boot record của ổ đĩa cứng. Đây là các khu vực đặc biệt chứa các dữ liệu để khởi động hệ thống, nạp các phân vùng.

Boot Virus được thực thi trước khi hệ điều hành được nạp lên vì vậy nó hoàn toàn độc lập với hệ điều hành. B-Virus có nhược điểm là khó viết do không thể sử dụng các dịch vụ, chức năng có sẵn của hệ điều hành và kích thước virus bị hạn chế bởi kích thước của các sector (mỗi sector chỉ có 512 byte).

Ngày nay gần như không còn thấy sự xuất hiện của Boot Virus do đặc điểm lây lan chậm và không phù hợp với thời đại Internet.

Page 117: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

117

2.Macro virus

Đây là loại virus đặc biệt tấn công vào chương trình trong bộ Microsoft Office của Microsoft: Word, Excel, Powerpoint. Macro là tính năng hỗ trợ trong bộ công cụ văn phòng Microsoft Office cho phép người sử dụng lưu lại các công việc cần thực hiện lại nhiều lần. Thực tế hiện nay cho thấy virus macro gần như đã “tuyệt chủng”.

3.Scripting virus

Scripting virus là loại virus được viết bằng các ngôn ngữ script (kịch bản) như VBScript, JavaScript, Batch script. Những loại virus này thường có đặc điểm dễ viết, dễ cài đặt. Chúng thường tự lây lan sang các file script khác, thay đổi nội dung cả các file html để thêm các thông tin quảng cáo, chèn banner … Đây cũnglà một loại virus phát triển nhanh chóng nhờ sự phổ biến của Internet.

4.File Virus

Virus này chuyên lây vào các file thực thi (ví dụ file có phần mở rộng .com, .exe, .dll) một đoạn mã để khi file được thực thi, đoạn mã virus sẽ được kích hoạt trước và tiếp tục thực hiện các hành vi phá hoại, lây nhiễm.

Loại virus này có đặc điểm lây lan nhanh và khó diệt hơn các loại virus khác do phải xử lý cắt bỏ, chỉnh sửa file bị nhiễm.

File Virus có nhược điểm là chỉ lây vào một số định dạng file nhất định và phụ thuộc vào hệ điều hành.

F-Virus vẫn tồn tại tới ngày nay với những biến thể ngày càng trở nên nguy hiểm, phức tạp hơn.

5.Trojan horse – ngựa thành Tơ roa

Tên của loại virus này được lấy theo một điển tích cổ. Trong cuộc chiến với người Tơ-roa, các chiến binh Hy Lạp sau nhiều ngày không thể chiếm được thành đã nghĩ ra một kế, giảng hòa rồi tặng người dân thành Tơ-roa một con ngựa gỗ khổng lồ. Sau khi ngựa gỗ được đưa vào thành, đêm đến các chiến binh Hy Lạp từ trong ngựa gỗ chui ra đánh chiếm thành.

Page 118: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

118

Đây cũng chính là cách mà các Trojan horse (gọi tắt là Trojan) áp dụng: các đoạn mã của Trojan được “che giấu” trong các loại virus khác hoặc trong các phần mềm máy tính thông thường để bí mật xâm nhập vào máy nạn nhân. Khi tới thời điểm thuận lợi chúng sẽ tiến hành các hoạt động ăn cắp thông tin cá nhân, mật khẩu, điều khiển máy tính nạn nhân … Bản chất của Trojan là không tự lây lan mà phải sử dụng phần mềm khác để phát tán.

Dựa vào cách hoạt động ta có thể phân chia Trojan thành các loại sau: BackDoor, Adware và Spyware.

6.BackDoor

Phần mềm BackDoor (cửa sau) là một dạng Trojan khi thâm nhập vào máy tính nạn nhân sẽ mở ra một cổng dịch vụ cho phép kẻ tấn công điều khiển các hoạt động ở máy nạn nhân. Kẻ tấn công có thể cài các phần mềm BackDoor lên nhiều máy tính khác nhau thành một mạng lưới các máy bị điều khiển – Bot Net – rồi thực hiện các vụ tấn công từ chối dịch vụ (DoS – Denial of Service).

7.Adware và Spyware

Đây là loại Trojan khi xâm nhập vào máy tính với mục đích quảng cáo hoặc “gián điệp”. Chúng đưa ra các quảng cáo, mở ra các trang web, thay đổi trang mặc định của trình duyệt (home page) … gây khó chịu cho người sử dụng. Các phần mềm này cài đặt các phần mềm ghi lại thao tác bàn phím (key logger), ăn cắp mật khẩu và thông tin cá nhân …

8.Worm – sâu máy tính

Cùng với các loại mã độc máy tính như Trojan, WannaCry, Worm (sâu máy tính) là loại virus phát triển và lây lan mạnh mẽ nhất hiện nay nhờ mạng Internet. Vào thời điểm ban đầu, Worm được tạo ra chỉ với mục đích phát tán qua thư điện tử – email. Khi lây vào máy tính, chúng thực hiện tìm kiếm các sổ địa chỉ, danh sách email trên máy nạn nhân rồi giả mạo các email để gửi bản thân chúng tới các địa chỉ thu thập được. Các email do worm tạo ra thường có nội dung “giật gân”, hoặc “hấp dẫn”, hoặc trích dẫn một email nào đó ở máy nạnnhân để ngụy trang. Điều này khiến các email giả mạo trở nên “thật” hơn và người nhận dễ bị đánh lừa hơn. Nhờ những email giả mạo đó mà Worm lây lan mạnh mẽ trên mạng Internet theo cấp số nhân.

Bên cạnh Worm lây lan theo cách truyền thống sử dụng email, Worm hiện nay còn sử dụng phương pháp lân lan qua ổ USB. Thiết bị nhớ USB đã trở nên phổ biến trên toàn thế giới do lợi thế kích thước nhỏ, cơ động và trở thành phương tiện lây lan lý tưởng cho Worm.

Dựa đặc điểm lây lan mạnh mẽ của Worm, những kẻ viết virus đã đưa thêm vào Worm các tính năng phá hoại, ăn cắp thông tin…, Worm đã trở thành “bạn đồng hành” của những phần mềm độc hại khác như BackDoor, Adware…

9.Rootkit

Page 119: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

119

Rootkit ra đời sau các loại virus khác, nhưng rootkit lại được coi là một trong những loại virus nguy hiểm nhất.

Bản thân rootkit không thực sự là virus, đây là phần mềm hoặc một nhóm các phần mềm máy tính được giải pháp để can thiệp sâu vào hệ thống máy tính (nhân của hệ điều hành hoặc thậm chí là phần cứng của máy tính) với mục tiêu che giấu bản thân nó và các loại phần mềm độc hại khác.

Với sự xuất hiện của rootkit, các phần mềm độc hại như trở nên “vô hình” trước những công cụ thông thường thậm chí vô hình cả với các phần mềm diệt virus. Việc phát hiện mã độc và tiêu diệt virus trở nên khó khăn hơn rất nhiều trước sự bảo vệ của rootkit – vốn được trang bị nhiều kĩ thuật mới hiện đại.

Xuất hiện lần đầu trên hệ thống Unix từ khá lâu, nhưng kể từ lần xuất hiện “chính thức” trên hệ điều hành Windows vào năm 2005, Rootkit đang dần trở nên phổ biến và trở thành công cụ che giấu hữu hiệu cho các loại phần mềm độchại khác.

10.Botnet

Là những máy tính bị nhiễm virus và điều khiển bởi Hacker thông qua Trojan, virus… Hacker lợi dụng sức mạnh của những máy tính bị nhiễm virus để thực hiện các hành vi tấn công, phá hoại, ăn cắp thông tin. Thiệt hại do Botnet gây ra thường rất lớn.

11.Biến thể

Một hình thức trong cơ chế hoạt động của virus là tạo ra các biến thể của chúng. Biến thể của virus là sự thay đổi mã nguồn nhằm các mục đích tránh sự phát hiện của phần mềm diệt virus hoặc làm thay đổi hành động của nó.

12.Virus Hoax

Đây là các cảnh báo giả về virus. Các cảnh bảo giả này thường núp dưới dạng một yêu cầu khẩn cấp để bảo vệ hệ thống. Mục tiêu của cảnh báo virus giả là cố gắng lôi kéo mọi người gửi cảnh báo càng nhiều càng tốt qua email. Bản thân cảnh báo giả là không gây nguy hiểm trực tiếp nhưng những thư gửi để cảnh báocó thể chữa mã độc hại hoặc trong cảnh báo giả có chứa các chỉ dẫn về thiết lập lại hệ điều hành, xoá file làm nguy hại tới hệ thống. Kiểu cảnh báo giả này cũng gây tốn thời gian và quấy rối bộ phận hỗ trợ kỹ thuật khi có quá nhiều người gọi đến và yêu cầu dịch vụ.

Ngày nay, sự phát triển mạnh mẽ của Internet đang tạo ra một môi trường hoạt động và lây lan lý tưởng cho các loại phần mềm độc hại. Bên cạnh đó, các hướng dẫn chi tiết, các loại công cụ để tạo virus ngày càng nhiều, xuất hiện tràn lan trên mạng toàn cầu. Đây là những yếu tố thuận lợi cho sự phát triển và lây lan mạnh mẽ của virus, mã độc. Chính vì vậy những phân loại trên đây chỉ mangtính tương đối, các loại virus đang theo xu hướng “kết hợp” lại với nhau, tạo thành những thế hệ virus mới với nhiều đặc tính hơn, khả năng phá hoại cao hơn, nguy hiểm hơn và khó bị phát hiện hơn. Vì vậy các phần mềm diệt virus có

Page 120: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

120

vai trò rất quan trọng, đảm bảo môi trường làm việc an toàn cho người sử dụng máy tính.

5. Phòng chống sự cố Mã độc và Xử lý sự cố cho PC, Lapto

5.1. Thiết lập các chính sách

Nếu một tổ chức không xác định được tầm quan trọng của việc phòng tránh mã độc trong các chính sách của mình thì các hoạt động phòng tránh mã độc không thể được thực hiện nhất quán và hiệu quả. Các chính sách liên quan đến phòng tránh mã độc nên phổ quát nhất có thể để dễ dàng triển khai và không phải thay đổi nhiều lần nhưng cũng cần được cụ thể hóa đủ để làm rõ mục đích và phạm viáp dụng. Các đối tượng của chính sách phòng tránh mã độc của một tổ chức cần bao gồm cả các thiết bị kết nối từ xa hoặc có liên quan đến tổ chức đó – bao gồm các máy tính trong và ngoài phạm vi quản lý của tổ chức (VD: máy tính của đối tác, máy tính tại nhà của nhân viên, các thiết bị di động).

Một chính sách phòng tránh sự cố mã độc thông thường:

- Yêu cầu rà quét mã độc trên các thiết bị từ bên ngoài tổ chức trước khi chúng được đưa vào sử dụng.

- Yêu cầu quét mã độc trên các file đính kèm email trước khi mở chúng.

- Nghiêm cấm/ngăn chặn gửi hoặc nhận các định dạng file cụ thể (chẳng hạn .exe) qua email.

- Cấm hoặc hạn chế việc sử dụng các phần mềm không cần thiết vì nhiều phần mềm có thể bị lợi dụng để truyền nhiễm mã độc (VD: các ứng dụng nhắn tin hoặc dịch vụ truyền file).

- Hạn chế sử dụng các thiết bị ngoại vi di động (VD: USB), đặc biệt đối với các máy tính nhiều người truy cập.

- Chỉ định các công cụ phòng tránh mã độc cụ thể (VD: phần mềm diệt virus, công cụ lọc nội dung,…) đối với từng loại máy tính cụ thể (VD: mail server, web server, laptop, smart phone,…) và đối với từng ứng dụng cụ thể (VD: emailclient, trình duyệt web,…); đặt ra các yêu cầu mức cao (high-level requirements)đối với việc cấu hình và bảo trì phần mềm (VD: tần suất cập nhật phần mềm, tầnsuất và phạm vi rà quét máy tính,…).

- Cấm hoặc hạn chế việc sử dụng các thiết bị di động (bao gồm cả thiết bị do tổ chức cấp phát hoặc sở hữu cá nhân) trong mạng của tổ chức hoặc sử dụng để truy cập từ xa.

5.2. Nâng cao nhận thức

Tất cả người dùng trong tổ chức cần được trang bị nhận thức về cách mã độc xâm nhập và lây nhiễm qua các máy tính, những hành vi nguy hại mà mã độc cóthể thực hiện, những hạn chế về khả năng kiểm soát sự cố mã độc và tầm quan

Page 121: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

121

trọng của người dùng trong việc phòng tránh sự cố mã độc, nhấn mạnh vào việc tránh những cuộc tấn công social engineering.

Chương trình nâng cao nhận thức cho nhân viên của một tổ chức cần bao gồm một số hành động thực tế như:

- Không mở các email, file đính kèm email hoặc các đường dẫn khả nghi từ người gửi không rõ ràng; không truy cập các trang web có thể chứa nội dung độc hại.

- Không click vào các cửa sổ pop-up khả nghi trên trình duyệt.

- Không mở các file với phần mở rộng có thể liên quan đến mã độc như .bat, .com, .exe, .pif, .vbs,…

- Không được tắt cơ chế kiểm soát an ninh mã độc như phần mềm antivirus, phần mềm lọc nội dung, tường lửa,…

- Không sử dụng tài khoản người dùng mức quản trị hệ thống để thực hiện các hoạt động thông thường trên máy tính.

- Không tải xuống và chạy các ứng dụng từ nguồn không uy tín.

Các tổ chức cũng cần bắt buộc nhân viên của mình có kiến thức về chính sách và các thủ tục xử lý sự cố mã độc như cách xác định một máy tính bị lây nhiễm,cách báo cáo khi nghi ngờ xảy ra sự cố mã độc và trách nhiệm hỗ trợ của nhân viên trong việc xử lý sự cố (VD: cập nhật phần mềm antivirus, rà quét máy tính để xác định mã độc… Nhân viên cần hiểu được thông báo của tổ chức khi một sự cố mã độc xảy ra và nắm được những thay đổi tạm thời để xử lý sự cố, chẳng hạn như ngắt kết nối một máy tính bị lây nhiễm khỏi hệ thống mạng.

Hoạt động phổ cập nhận thức cho nhân viên của một tổ chức cần bao gồm việc đào tạo phòng tránh các cuộc tấn công sử dụng kỹ thuật xã hội. Một số ví dụ khuyến nghị nhằm tránh cuộc tấn công kỹ thuật xã hội như:

- Không trả lời các email yêu cầu cung cấp thông tin tài chính và thông tin cá nhân. Thay vào đó, liên hệ trực tiếp tới cá nhân hoặc tổ chức đối tác bằng điện thoại hoặc website chính thức. Không sử dụng thông tin liên lạc được cung cấp trong email và không click vào bất kỳ file đính kèm hay đường dẫn nào trong email.

-Không cung cấp mật khẩu, mã PIN hoặc các mã truy cập khác khi trả lời email hoặc điền vào các cửa sổ pop-up không mong muốn. Chỉ cung cấp các thông tin truy cập trên đối với website và ứng dụng hợp lệ.

- Không mở file đính kèm email ngay cả từ người gửi quen biết. Nếu nhận được một file đính kèm email, cần liên hệ với người gửi (có thể bằng điện thoại hoặc phương tiện liên lạc khác) để xác nhận file đính kèm là an toàn.

- Không phàn hồi bất kỳ email khả nghi nào.

Việc nâng cao nhận thức của nhân viên có vai trò quan trọng trong việc giảm khả năng xảy ra và thiệt hại từ sự cố mã độc nhưng chỉ nên coi đây là hoạt động

Page 122: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

122

bổ sung cho các biện pháp ngăn chặn mã độc bằng kiểm soát kỹ thuật. Một tổ chức không nên coi việc nâng cao nhận thức cho nhân viên là yếu tố chính trongviệc phòng tránh sự cố mã độc.

Chương trình nâng cao nhận thức cho nhân viên nên được coi là hoạt động

5. 3. Giảm thiểu các lỗ hổng phần mềm

Mã độc thường tấn công một host bằng cách khai thác lỗ hổng của hệ điều hành,các dịch vụ và các ứng dụng. Giảm thiểu lỗ hổng phần mềm là bước rất quan trọng trong việc phòng tránh mã độc, nhất là đối với các mã độc được phát tán ngay sau khi một lỗ hổng phần mềm mới được công bố hoặc thậm chí trước khi lỗ hổng đó được biết đến rộng rãi. Cần cập nhật các bản vá lỗi hoặc cấu hình lại phần mềm (VD: vô hiệu hóa dịch vụ chứa lỗ hổng). Việc giảm thiểu lỗ hổng phần mềm cần phải có các chính sách, tiến trình và thủ tục rõ ràng.

Một tổ chức nên cân nhắc sử dụng các công nghệ bảo mật tự động hóa (security automation technologies) với các checklist cấu hình hệ điều hành cũng như cấu hình ứng dụng. Công nghệ bảo mật tự động hóa có thể sử dụng checklist để thựchiện cấu hình và giám sát liên tục các cài đặt cấu hình này để đảm bảo chúng luôn được tuân thủ đúng checklist. Cũng cần xem xét việc sử dụng một hệ thốngtự động quản lý bản vá cho hệ điều hành và ứng dụng.

Tổ chức cần sử dụng các nguyên tắc gia cố hệ thống. Chẳng hạn như nguyên tắcquyền tối thiểu, ta cần cấu hình các host cung cấp quyền tối thiểu cho nhân viên hoặc các tiến trình phần mềm đủ để thực hiện các hoạt động trong phạm vi và vai trò của mình. Quy tắc này có thể hữu ích đối với các mã độc yêu cầu quyền quản trị để khai thác lỗ hổng phần mềm thành công. Ngay cả khi sự cố mã độc xảy ra, các ứng dụng với quyền tối thiểu cũng giúp giảm thiểu thiệt hại gây ra bởi mã độc. Một số nguyên tắc gia cố hệ thống khác mà tổ chức có thể áp dụng:

- Vô hiệu hóa hoặc gỡ bỏ các dịch vụ không cần thiết (đặc biệt là các dịch vụ mạng) vì những dịch vụ này có thể vô tình là các hướng tân công phụ mà mã độc có thể lợi dụng để lây lan.

- Loại bỏ các ứng dụng chia sẻ file không an toàn.

- Gỡ bỏ những ứng dụng không cần thiết khi máy tính bị nhiễm mã độc, virus

- Gỡ bỏ hoặc thay đổi tài khoản người dùng mặc định của hệ điều hành và các ứng dụng vì các tài khoản này có thể được mã độc sử dụng để truy cập trái phép tới các host.

- Vô hiệu hóa tính năng tự động thực thi đối với file nhị phân hoặc các script, bao gồm cả tính năng AutoRun trên các máy tính chạy Windows.

- Thay đổi file associations mặc định (ứng dụng mặc định để mở một file theo định dạng cụ thể) đối với các định dạng file người dùng ít sử dụng nhưng thường được sử dụng bởi mã độc (VD: .pif, .vbs), thay đổi này giúp file không được thực thi tự động khi một người dùng cố mở chúng.

Page 123: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

123

Gia cố hệ thống cần được áp dụng đối với cả các ứng dụng như email client, trình duyệt web và các trình xử lý văn bản, các ứng dụng này thường xuyên là mục tiêu khai thác của mã độc (VD: ngôn ngữ macro trên trình xử lý văn bản, các plug-in trên trình duyệt web). Ta nên vô hiệu hóa những tính năng không cầnthiết trên các ứng dụng này để hạn chế hướng tấn công của mã độc.

5.4. Giảm thiểu mối đe dọa

Giả sử mọi lỗ hổng phần mềm đều đã được vá, giảm thiểu mối đe dọa vẫn là bước đặc biệt quan trọng, ví dụ, để ngăn chặn các mã độc không khai thác lỗ hổng phần mềm mà dựa vào các kỹ thuật xã hội đánh lừa người dùng thực thi các tập tin độc hại. Các công cụ thường được sử dụng để giảm thiểu mối đe dọa là: phần mềm antivirus, IPS, tường lửa, công cụ lọc nội dung và một danh sách các ứng dụng an toàn (application whitelisting).

5.5. Phần mềm Antivirus

Cần đảm bảo các chức năng tối thiểu:

- Rà quét các thành phần quan trọng trong hệ thống như các tập tin startup hoặc boot records.

- Theo dõi hành vi thời gian thực.

- Giám sát hành vi của các ứng dụng phổ biến như email client, trình duyệt web và phần ứng dụng nhắn tin,…, là những ứng dụng thường bị khai thác để lây nhiễm mã độc.

- Rà quét tập tin trong hệ thống để phát hiện các mẫu mã độc đã biết.

- Disinfect (gỡ bỏ mã độc hại khỏi tập tin và phục hồi tập tin gốc), quarantine (cô lập, cách ly tập tin nghi ngờ bị lây nhiễm mã độc).

Cần cài đặt phần mềm antivirus trên mọi host, ngay sau khi cài đặt hệ điều hành và tải về bản cập nhật dữ liệu mới nhất cho antivirus.

Một tổ chức nên sử dụng phần mềm antivirus quản lý tập trung, được quản lý bởi một quản trị viên có khả năng xử lý mẫu nghi ngờ. Cần cấu hình không cho phép người dùng bình thường vô hiệu hóa, thay đổi cấu hình hoặc gỡ bỏ phần mềm antivirus.

Các phần mềm antivirus rất hiệu quả trong việc phát hiện và gỡ bỏ các mẫu mã độc đã biết nhưng chúng có thể không phát hiện ra một mẫu mã độc mới hoặc một khuôn dạng hành vi độc hại mới.

5.6. Hệ thống ngăn chặn xâm nhập (IPS)

Các hệ thống Network-based IPS được dùng để phát hiện nhiều dạng hành vi độc hại bao gồm mã độc nhưng mặc định, chúng thường chỉ phát hiện được số ítmẫu mã độc, chẳng hạn như các mẫu worm nổi tiếng hiện thời. Tuy nhiên, một số hệ thống IPS cho phép quản trị viên tùy chỉnh sâu để tự tạo và triển khai các attack signature cho các mối đe dọa mã độc một cách nhanh chóng. Mặc dù có nhiều rủi ro, chẳng hạn signature không chính xác có thể gây ra việc vô tình

Page 124: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

124

chặn những hành vi hợp lệ, một signature tùy chỉnh vẫn có thể rất hữu ích khi ngăn chặn những mã độc mới trước khi các phần mềm antivirus cập nhật signature của chúng.

Một dạng IPS khác là NBA (network behavior analysis system) được dùng để ngăn chặn tấn công dựa trên cơ chế xác định lưu lượng mạng bất thường. Mặc dù NBA được dùng chủ yếu để ngăn chặn tấn công DDoS, chúng cũng có thể được dùng để nhận dạng hành vi của worm hoặc các dạng mã độc khác. NBA hoặc động bằng cách theo dõi khuôn mẫu lưu lượng mạng thông thường, bao gồm thông tin host nào giao tiếp với các host các sử dụng giao thức nào, lưu lượng thông thường và lưu lượng đỉnh trên mỗi hành vi,… và lập các đường cơ sở (baseline) dựa trên các thông tin theo dõi được. Hệ thống sẽ giám sát hoạt động mạng để phát hiện các dấu hiệu sai lệch so với các đường cơ sở. Nếu một mã độc gây ra một lưu lượng mạng cao bất thường hoặc sử dụng một giao thức chưa từng được ghi nhận và nếu NBA được triển khai nội tuyến (inline) thì NBAđó sẽ ngăn chặn hành vi bất thường vừa phát hiện.

Một cách khác để hạn chế các sự cố mã độc là cấu hình các thiết bị mạng với định mức tối đa dung lượng mà một host hoặc một service được phép sử dụng.

Các hệ thống Host-based IPS sử dụng để giám sát các sự kiện trên một host cụ thể, chặng hạn như ghi log, các tiến trình đang được thực thi, truy cập và sửa đổitập tin, thay đổi cấu hình một ứng dụng nào đó trên host, giám sát lưu lượng mạng trên host,… Host-based IPS thường sử dụng kết hợp cả signature và khuôn dạng các hành vi cho phép để phát hiện các tấn công đã biết và chưa biết xảy ra trên host.

5.7. Sử dụng Firewall

Network firewall được triển khai giữa các mạng để hạn chế số dạng lưu lượng hợp lệ giữa một mạng và các mạng khác.

Host-based firewall là phần mềm chạy trên host cụ thể hạn chế lưu lượng mạng vào và ra trên chính host đó. Cả hai loại firewall trên đều nên được sử dụng nhằm hạn chế nguy cơ lây nhiễm mã độc trên thiết bị.

Các tổ chức cần cấu hình firewall với tập luật deny by default – chặn mọi lưu lượng mạng ngoại trừ những lưu lượng cụ thể được định nghĩa bởi quản trị viên.Với tập luật firewall như vậy, mã độc không thể phát tán bằng cách lợi dụng các service không thực sự cần thiết đối với tổ chức.

Khi một mã độc mới xuất hiện sử dụng các dịch vụ mạng để phát tán, quản trị viên cần sẵn sàng thêm hoặc thay đổi luật firewall sớm nhất có thể để ngăn chặn nguy cơ xảy ra sự cố mã độc. Các luật firewall rất hữu ích trong việc ngăn chặn các mã độc hoạt động dựa theo một địa chỉ IP cụ thể, chẳng hạn khi một worm thực hiện tải Trojan horse từ một trong 5 host bên ngoài mạng, quản trị viên chỉ cần thêm luật firewall ngăn chặn mọi giao tiếp tới các địa chỉ IP này để phòng tránh lây nhiễm Trojan.

5.8. Sử dụng công nghệ kiểm tra và lọc nội dung

Page 125: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

125

Các tổ chức nên sử dụng các công nghệ kiểm tra và lọc nội dung để ngăn chặn mã độc phát tán qua email. Bên cạnh đó, cũng nên sử dụng công nghệ lọc thư rác để giảm thiểu số thư rác tiếp cận được đến người dùng vì thư rác thường được sử dụng để phát tán mã độc, đặc biệt là trong các cuộc tấn công phishing.

Các tổ chức cũng nên cân nhắc việc cấu hình mail server và mail client để chặn các tập tin đính kèm ở định dạng có thể chứa mã độc hại (VD: .pif, .vbs) và các tập tin có tên chứa các phần mở rộng giả (VD: .txt.vbs, .html.exe). Tuy nhiên, điều này có thể khiến các hoạt động hợp lệ cũng bị chặn. Một số tổ chức chủ đích sử dụng phần mở rộng giả người dùng sau khi tải tập tin về phải đổi tên tập tin trước khi thực thi.

Các công nghệ kiểm tra và lọc nội dung cũng nên được sử dụng để ngăn chặn các nguy cơ lây nhiễm mã độc từ ứng dụng web. Ngoài ngăn chặn truy cập các nội dung không phù hợp ở nơi làm việc, những trang web có thể nhúng mã độc, hay chặn một số dạng tập tin nhạy cảm (VD: ActiveX Scripting), tổ chức cũng nên chặn các cửa sổ popup không mong muốn trên trình duyệt web. Cửa sổ popup có thể nhìn giống như một message box bình thường và đánh lừa người dùng click vào các trang web giả mạo để đánh cắp thông tin hoặc thực thi mã độc hại.

Cả công cụ lọc nội dung email và lọc nội dung website đều nên sử dụng các danh sách đen thời gian thực và kết hợp nhiều cơ chế lọc nhất có thể. Các cơ chếlọc này dựa trên các kỹ thuật đa dạng để phát hiện địa chỉ IP, domain name hoặc URI khả nghi.

5.9. Bảo vệ BIOS

Các sửa đổi trái phép lên BIOS thực hiện bởi các phần mềm độc hại có thể dẫn đến các hành vi độc hại khác vì BIOS firmware có vị trí đặc quyền trong kiến trúc máy tính. Sửa đổi trái phép lên BIOS có thể là một phần của một cuộc tấn công phức tạp, có chủ đích đối với tổ chức – một vụ DoS vĩnh viễn (BIOS bị hư hại) hoặc một mã độc tồn tại bền vững trên hệ thống (mã độc được nhúng vào BIOS). Việc thay đổi từ triển khai BIOS sang UEFI cũng có thể khiến mã độc lây lan rộng rãi vì UEFI được triển khai theo một chuẩn chung.

5.10. Sử dụng nhiều trình duyệt web cho các hoạt động khác nhau

Truy cập vào các website chứa mã độc hại là một trong các con đường phổ biến nhất để một máy tính bị nhiễm mã độc, chẳng hạn bị cài đặt các plugin. Người dùng nên sử dụng một trình duyệt web cho các hoạt động công việc và một trìnhduyệt web khác cho các hoạt đồng truy cập web còn lại. Biện pháp này tách dữ liệu nhạy cảm của tổ chức khỏi các loại dữ liệu khác.

Page 126: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

126

8. HOẠT ĐỘNG CÁC ỨNG DỤNG MẠNG

1. Dịch vụ tên (DNS)

Cho đến bây giờ, chúng ta vẫn dùng địa chỉ để định danh các host. Trong khi rất thuận tiện cho việc xử lý của các router, các địa chỉ số không thân thiện với người dùng lắm. Vì lý do này, các host thường được gán cho một cái tên thân thiện và dịch vụ tên được sử dụng để ánh xạ từ cái tên thân thiện với người dùngnày sang địa chỉ số vốn rất thân thiện với các router. Dịch vụ như vậy thường là ứng dụng đầu tiên được cài đặt trong một mạng máy tính do nó cho phép các ứng dụng khác tự do định danh các host bằng tên thay vì bằng địa chỉ. Dịch vụ tên thường được gọi là phần trung gian (middleware) vì nó lấp đầy khoảng cách giữa các ứng dụng khác và lớp mạng phía dưới. Tên host và địa chỉ host khác nhau ở hai điểm quan trọng. Thứ nhất, tên host thường có độ dài thay đổi và dễ gợi nhớ, vì thế nó giúp người dùng dễ nhớ hơn. Thứ hai, tên thường không chứa thông tin gì để giúp mạng định vị (chuyển các gói tin đến) host. Địa chỉ, ngược lại, lại hàm chứa thông tin vạch đường trong đó.

Trước khi đi vào chi tiết cách thức đặt tên cho các host trong mạng như thế nào, chúng ta đi định nghĩa một số thuật ngữ trước:

Không gian tên (name space) định nghĩa tập các tên có thể có. Một không gian tên có thể là phẳng (flat) – một tên không thể được chia thành các thành phần nhỏ hơn, hoặc phân cấp.

Hệ thống tên duy trì một � tập các ánh xạ (collection of bindings) từ tên sang giá trị. Giá trị có thể là bất cứ thứ gì chúng ta muốn hệ thống tên trả về khi ta cấp cho nó một tên để ánh xạ; trong nhiều trường hợp giá trị chính là địa chỉ host.

Một � cơ chế phân giải (resolution mechanism) là một thủ tục mà khi được gọivới tham số là một tên, sẽ trả về một giá trị tương ứng.

Một � server tên (name server) là một kết quả cài đặt cụ thể của một cơ chế phân giải luôn sẵn dùng trên mạng và có thể được truy vấn bằng cách gởi đến nómột thông điệp.

Mạng Internet đã có sẵn một hệ thống đặt tên được phát triển tốt, gọi là hệ thống tên miền (domain name system – DNS). Vì thế chúng ta sẽ dùng DNS làm cơ sở để thảo luận về vấn đề đặt tên cho các host.

Khi nguời dùng đưa một tên host đến một ứng dụng (có thể tên host đó là một phần của một tên hỗn hợp như địa chỉ email chẳng hạn), ứng dụng này sẽ liên hệ với hệ thống tên để dịch tên host sang địa chỉ host. Sau đó ứng dụng liền tạo một nối kết đến host đó thông qua giao thức TCP chẳng hạn. Hiện trạng được mô tả trong hình H.1.

Page 127: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

127

H. 1 Tên máy được dịch sang địa chỉ,

các số từ 1-5 thể hiện trình tự các bước xử lý

1.1 Miền phân cấp

DNS cài đặt không gian tên phân cấp dùng cho các đối tượng trên Internet. Các tên DNS được xử lý từ phải sang trái, sử dụng các dấu chấm (.) làm ký tự ngăn cách. (Mặc dù các tên DNS được xử lý từ phải qua trái, người dùng thường đọc chúng từ trái sang phải). Ví dụ tên miền của một host là mail.cit.ctu.edu.vn. Chúý rằng các tên miền được sử dụng để đặt tên các đối tượng trên Internet, không phải chỉ được dùng để đặt tên máy. Ta có thể mường tượng cấu trúc phân cấp của DNS giống như hình dáng cây. Hình H.2 là một ví dụ.

H.2 Cây phân cấp tên miền

Có thể thấy rằng, cây phân cấp không quá rộng ở mức đầu tiên. Mỗi quốc gia cómột tên miền, ngoài ra còn có 6 miền lớn khác gồm: edu, com, gov, mil, org và net. Sáu miền lớn này nằm ở Mỹ. Những tên miền không chỉ ra tên nước một cách tường minh thì mặc nhiên là nằm ở Mỹ.1.2 Các server phục vụ tên

Page 128: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

128

Một cấu trúc tên miền phân cấp hoàn chỉnh chỉ tồn tại trong ý niệm. Vậy thì trong thực tế cấu trúc phân cấp này được cài đặt như thế nào? Bước đầu tiên là chia cấu trúc này thành các cây con gọi là các vùng (zone). Ví dụ, hình H8.3 chỉ ra cách thức cấu trúc phân cấp trong hình H.2 được chia thành các vùng như thế nào.

H.3 Cấu trúc miền phân cấp được chia thành các vùng

Mỗi một vùng có thể được xem là đơn vị quản lý một bộ phận của toàn hệ thốngphân cấp. Ví dụ, vùng cao nhất của hệ thống phân cấp được quản lý bởi NIC (Network Information Center), vùng ctu được quản lý bởi Trường Đại Học Cần Thơ.Một vùng luôn có mối liên hệ đến các đơn vị cài đặt cơ bản trong DNS - các server tên. Thông tin chứa trong một vùng được thiết lập tại hai hoặc nhiều server tên. Mỗi server tên có thể truy xuất được qua mạng Internet. Client gởi yêu cầu đến server tên, server tên sẽ trả lời cho yêu cầu đó.

Câu trả lời đôi khi chứa thông tin cuối cùng mà client cần, đôi khi lại chứa chỉ điểm đến một server tên khác mà client nên gởi câu hỏi đến đó. Vì thế, theo cáchnhìn thiên về cài đặt, người ta có thể nghĩ về DNS được cài đặt bằng cấu trúc phân cấp các server tên hơn là bằng cấu trúc phân cấp các miền.

Page 129: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

129

H.4 Cấu trúc phân cấp của các server tên

Để ý rằng mỗi vùng được cài đặt trong hai hoặc nhiều server tên với lý do dự phòng; nghĩa là nếu một server bị chết sẽ còn các server khác thay thế. Mặt khác, một server tên cũng có thể được dùng để cài đặt nhiều hơn một vùng.Mỗi server tên quản lý thông tin về một vùng dưới dạng một tập các mẫu tin tài nguyên (resource record). Mỗi mẫu tin tài nguyên là một ánh xạ từ tên sang giá trị (name to value binding), cụ thể hơn là một mẫu tin gồm 5 trường: (Tên, Giá trị, Kiểu, Lớp, TTL)

Các trường Tên và Giá trị là những gì chúng ta muốn có, ngoài tra trường Kiểuchỉ ra cách thức mà Giá trị được thông dịch. Chẳng hạn, trường Kiểu = A chỉ rarằng Giá trị là một địa chỉ IP. Vì thế các mẫu tin kiểu A sẽ cài đặt kiểu ánh xạ từtên miền sang địa chỉ IP. Ví dụ như mẫu tin:(ns.ctu.edu.vn, 203.162.41.166, A, IN) chỉ ra rằng địa chỉ IP của host có tên ns.ctu.edu.vn là 203.162.41.166.

Ngoài ra còn có những kiểu khác: NS: Trường Giá trị chỉ ra tên miền của máy tính đang chạy dịch vụ tên, và dịch vụ đó có khả năng thông dịch các tên trong một miền cụ thể. Ví dụ mẫu tin: (ctu.edu.vn, ns.ctu.edu.vn, NS, IN) chỉ ra rằngserver tên của miền ctu.edu.vn có tên là ns.ctu.edu.vn.

CNAME: Trường Giá trị chỉ ra một cái tên giả của một host nào đó. Kiểu này được dùng để đặt thêm bí danh cho các host trong miền.

� MX: Trường Giá trị chỉ ra tên miền của host đang chạy chương trình mail server mà server đó có khả năng tiếp nhận những thông điệp thuộc một miền cụ thể.

Page 130: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

130

Ví dụ mẫu tin (ctu.edu.vn, mail.ctu.edu.vn, MX, IN) chỉ ra rằng host có tên mail.ctu.edu.vn là mail server của miền ctu.edu.vn.

Trường Lớp được sử dụng nhằm cho phép thêm vào những thực thể mạng không do NIC quản lý.

Ngày nay, lớp được sử dụng rộng rãi nhất là loại được Internet sử dụng; nó đượcký hiệu là IN.

Cuối cùng trường TTL chỉ ra mẫu tin tài nguyên này sẽ hợp lệ trong bao lâu. Trường này được sử dụng bởi những server đang trữ tạm các mẫu tin của server khác; khi trường TTL hết hạn, các mẫu tin chứa trường TTL hết hạn đó sẽ bị các server xóa khỏi cache của mình.

Để hiểu rõ hơn cách thức các mẫu tin tài nguyên được thể hiện trong cấu trúc phân cấp, hãy xem ví dụ được vẽ trong hình H8.3. Để đơn giản hóa vấn đề, chúng ta bỏ qua trường TTL và cung cấp thông tin tương ứng cho một server tên làm nhiệm vụ quản lý cho một vùng.

Đầu tiên, server tên gốc (root name server) sẽ chứa một mẫu tin NS cho mỗi server cấp hai. Nó cũng chứa một mẫu tin A để thông dịch từ một tên server cấp hai sang địa chỉ IP của nó. Khi được ghép với nhau, hai mẫu tin này cài đặt một cách hiệu quả một con trỏ từ server gốc đến mỗi server cấp hai của nó.

(edu.vn, dns1.vnnic.net.vn, NS, IN);thông tin về miền con edu.vn lưu ở máy dns1.vnnic.net.vn(dns1.vnnic.net.vn, 203.162.57.105, A, IN);máy dns1.vnnic.net.vn có địa chỉ 203.162.57.105(cisco.com, ns1.cisco.com, NS, IN)

Kế tiếp, miền edu.vn có một server tên hiện hữu tại máy dns1.vnnic.net.vn và server này lại chứa các mẫu tin sau:

(ctu.edu.vn, ns.ctu.edu.vn, NS, IN)(ns.ctu.edu.vn, 203.162.41.166, A, IN)

Cuối cùng server ns.ctu.edu.vn lại chứa thông tin về các máy tính của trường Đại Học Cần Thơ cũng như các miền con của Trường Đại Học Cần Thơ

(cit.ctu.edu.vn, ns.cit.ctu.edu.vn, NS, IN)(ns.cit.ctu.edu.vn, 203.162.36.144, A, IN)(ctu.edu.vn, mail.ctu.edu.vn, MX, IN)(mail.ctu.edu.vn, 203.162.139.21, A, IN)(www.ctu.edu.vn, mail.ctu.edu.vn, CNAME, IN)

Chú ý rằng trên lý thuyết các mẫu tin có thể được dùng để định nghĩa bất kỳ kiểu đối tượng nào, DNS lại thường được sử dụng để định danh các host và site. DNS không được dùng để định danh cá nhân con người hoặc các đối tượng khácnhư tập tin hay thư mục, việc định danh này được thực hiện trong các hệ thống phục vụ tên khác. Ví dụ X.500 là hệ thống định danh của ISO được dùng để định danh con người bằng cách cung cấp thông tin về tên, chức vụ, số điện

Page 131: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

131

thoại, địa chỉ, và vân vân. X.500 đã chứng tỏ là quá phức tạp nên không được hỗtrợ bởi các search engine nổi tiếng hiện nay. Tuy nhiên nó lại là nguồn gốc phát sinh ra chuẩn LDAP (Lightweight Directory Access Protocol). LDAP vốn là thành phần con của X.500 được thiết kế để làm phần front-end cho X.500.Ngày nay LDAP đang trở nên phổ biến nhất là ở cấp độ công ty, tổ chức lớn, đóng vai trò là hệ thống học và quản lý thông tin về người dùng của nó.

1.3 Phương pháp phân tích tên

Với một hệ thống phân cấp các server tên đã trình bày, bây giờ chúng ta đi tìm hiểu cách thức một khách hàng giao tiếp với các server này để phân tích cho được một tên miền thành địa chỉ. Giả sử một khách hàng muốn phân tích tên miền www.ctu.edu.vn, đầu tiên khách hàng này sẽ gởi yêu cầu chứa tên này đến server tên gốc. Server gốc không thể so khớp tên theo yêu cầu với các tên mà nóchứa, liền trả lời cho khách hàng một mẫu tin kiểu NS chứa edu.vn. Server gốc cũng trả về tất cả các mẫu tin có liên quan đến mẫu tin NS vừa nói, trong đó có mẫu tin kiểu A chứa địa chỉ của dns1.vnnic.vnn.vn. Khách hàng chưa có thông tin cuối cùng mà nó muốn, tiếp tục gởi yêu cầu đến server tên tại địa chỉ 203.162.57.105. Server tên thứ hai này lại không thể so khớp tên theo yêu cầu với các tên mà nó chứa, tiếp tục trả lời cho khách hàng một mẫu tin loại NS chứa tên ctu.edu.vn cùng với mẫu tin kiểu A tương ứng với tên server là ns.ctu.edu.vn. Khách hàng lại tiếp tục gởi yêu cầu đến server tên tại địa chỉ 203.162.41.166 và lần này nhận được câu trả lời cuối cùng có kiểu A cho tên www.ctu.edu.vn.Ví dụ trên chắc chắn sẽ để lại nhiều câu hỏi về quá trình phân giải tên. Câu hỏi thường được đặt ra là: Lúc khởi đầu, làm sao khách hàng có thể định vị được server gốc? Đây là bài toán cơ bản đặt ra cho mọi hệ thống phục vụ tên và câu trả lời là: hệ thống phải tự thân vận động để có được thông tin về các server gốc!Trong tình huống của hệ thống DNS, ánh xạ từ tên sang địa chỉ của một hay nhiều server gốc được phổ biến cho mọi người, nghĩa là ánh xạ đó được loan báo thông qua các phương tiện truyền thông khác nằm ngoài hệ thống tên.Tuy nhiên, trong thực tế không phải tất cả khách hàng đều biết về các server gốc. Thay vào đó, chương trình khách hàng chạy trên mỗi host trong Internet được khởi động với các địa chỉ lấy từ server tên cục bộ. Ví dụ, tất cả các host trong Khoa Công Nghệ Thông Tin của Trường Đại Học Cần Thơ đều biết server tên nội bộ đang chạy trên máy ns.cit.ctu.edu.vn. Đến lượt server tên cục bộ này lại chứa các mẫu tin tài nguyên cho một hoặc nhiều server gốc của nó, ví dụ:

( . , a.root-servers.net, NS, IN)(a.root-server.net, 198.41.0.4, A, IN)Trong ví dụ trên, server tên cục bộ có thông tin về một server tên gốc của nó (chú ý miền gốc được ký hiệu bằng dấu chấm) là a.root-servers.net, địa chỉ IP tương ứng của server gốc này là 198.41.0.4.Từ đó, việc phân giải một tên miền bắt đầu từ câu truy vấn của khách hàng đến server cục bộ. Nếu server cục bộ không có sẵn câu trả lời, nó sẽ gởi câu hỏi đến

Page 132: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

132

server từ xa dùm cho khách hàng.Chuỗi hành động trên có thể được mô tả trong hình H.5

H.5 Quá trình phân giải tên trong thực tế, các số 1 đến 8 chỉ ra trình tựthực hiện

2 Electronic Mail (SMTP, MIME, POP3, IMAP)

Email là một trong những ứng dụng mạng lâu đời nhất nhưng lại phổ dụng nhất. Thử nghĩ khi bạn muốn gởi thông điệp đến một người bạn ở đầu kia của thế giới, bạn muốn mang thư chạy bộ qua đó hay chỉ đơn giản lên máy tính gõ ít hàng và nhấn nút Send? Thật ra, những bậc tiền bối của mạng ARPANET đã không tiên đoán được email sẽ là ứng dụng then chốt chạy trên mạng này, mục tiêu chính của họ là thiết kế hệ thống cho phép truy cập tài nguyên từ xa. Hệ thống email ra đời không mấy nổi bật, để bây giờ lại được sử dụng hằng ngày bởi hàng triệu người trên thế giới.Mục tiêu của phần này là chỉ ra những nhân vật hoạt động trong hệ thống email, vai trò của họ, giao thức mà họ sử dụng và khuôn dạng thông điệp mà họ trao đổi với nhau.

2.1 Các thành phần của hệ thống email

Một hệ thống email thường có 3 thành phần chính: Bộ phận trợ giúp người dùng(User Agent), Mail Server và các giao thức mà các thành phần này dùng để giao tiếp với nhau.

Người ta phân loại các giao thức như sau:

Giao thức giữa các mail servers bao gồm:

Page 133: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

133

o SMTP (Simple Mail Transfer Protocol): được các server dùng để chuyển thư qua lại với nhau. Ví dụ nôm na, nó giống như cách thức mà các trạm bưu điện dùng để chuyển các thùng thư của khách hàng cho nhau. Thông tin chi tiết về giao thức này được mô tả trong tài liệu RFC 822.

Giao thức giữa mail server và user agent bao gồm:

o POP3 (Post Offic Protocol version 3 [RFC 1939]): được user agent sử dụng đểlấy thư về từ hộp thư của nó trên server.

o SMTP: được user agent sử dụng để gởi thư ra server.

o IMAP: (Internet Mail Access Protocol [RFC 1730]): Có nhiều tính năng vượt trội hơn POP3. Ngoài ra IMAP còn cho phép gởi mail.

H.6 Các thành phần của hệ thống email

2.2 Khuôn dạng của một emailRFC 822 định nghĩa một email gồm có hai phần: phần tiêu đề (header) và phần thân (body).

H.7 Khuôn dạng của email

Page 134: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

134

Cả hai phần đều được thể hiện dưới dạng ký tự ASCII. Lúc đầu, phần thân được qui định có khuôn dạng văn bản đơn giản. Sau này người ta đề nghị một chuẩn mới gọi là MIME, có thể cho phép phần thân của email chứa bất kỳ loại dữ liệu nào.Phần tiêu đề bao gồm nhiều dòng thông tin, mỗi dòng kết thúc bằng hai ký tự <CRLF>. Phần tiêu đề được chia khỏi phần thân bởi một hàng rỗng. Mỗi một hàngtiêu đề chứa một cặp “tên” và “giá trị”, cách nhau bởi dấu hai chấm (:). Người dùng có thể rất quen với nhiều hàng tiêu đề vì họ thường phải điền thông tin vào đấy. Ví dụ:

Tên Giá trị

From: Địa chỉ người gởi

To: Địa chỉ của người nhận

Subject: Chủ đề thư

Date: Ngày gởi

RFC 822 được mở rộng năm 1993 (và được cập nhật lại năm 1996) để cho phép email mang được nhiều loại dữ liệu: audio, video, hình ảnh, tài liệu Word, … MIME(Multipurpose Internet Mail Extensions) về cơ bản có ba phần. Phần đầu tiên là tập các dòng header dùng để bổ túc cho phần header cũ của RFC 822. Theo nhiều cách, những dòng header này mô tả dữ liệu chứa trong phần thân. Cụ thể như sau:

Tên Giá trị

MIME-Version: Phiên bản MIME đang sử dụng

Content-Description: Mô tả trong thư đang có dữ liệu gì

Content-Type: Mô tả kiểu dữ liệu đang nằm trong thư

Content-Transfer-Encoding:

Mô tả cách thức mã hóa dữ liệu trong thư

Phần thứ hai là các định nghĩa cho một tập các kiểu nội dung (và kiểu con nếu có). Ví dụ một số kiểu mà MIME định nghĩa:

Kiểu Ý nghĩa

image/gif Ảnh dạng gif

image/jpeg Ảnh dạng jpeg

text/plain Văn bản đơn giản

text/richtext Văn bản mở rộng (có đặt font chữ, được định dạng đậm, nghiêng hoặc gạch dưới …)

Page 135: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

135

application

Dữ liệu trong thư được xuất ra từ một ứng dụng nào đó. Chẳng hạn:application/postscript: tài liệu Postscript ( .ps)application/msword: tài liệu Microsoft Word (.doc)

MIME cũng định nghĩa kiểu multipart để chỉ ra cách mà phần thân của thư mang nhiều loại dữ liệu khác nhau như thế nào. Chỉ có một kiểu con của multipart là mixed với ý nói rằng trong phần thân của thư có nhiều mảnh dữ liệu khác nhau, độc lập với nhau và được sắp xếp theo một trình tự cụ thể. Mỗi mảnh dữ liệu sẽ có phần tiêu đề riêng để mô tả kiểu dữ liệu của mảnh đó.Phần thứ ba mô tả cách thức mã hóa các kiểu dữ liệu nói trên để có thể truyền chúng dưới dạng ASCII. Lý do để mọi bức thư phải chứa các ký tự ASCII là vì để đi được đến đích, bức thư đó có thể phải trung chuyển qua nhiều gateway, màcác gateway này đều coi mọi bức thư dưới dạng ASCII. Nếu trong thư chứa bất kỳ ký tự nào khác ASCII thì thư sẽ bị đứt gãy nội dung. MIME sử dụng phương pháp mã hóa trực tiếp dữ liệu nhị phân thành các ký tự nhị phân, gọi là base64. Ý tưởng của base64 là ánh xạ 3 bytes dữ liệu nhị phân nguyên thủy thành 4 ký tự ASCII. Giải thuật đơn giản như sau: tập hợp 3 bytes dữ liệu nhị phân lại thành24 bits, sau đó chia 24 bits này thành 4 cụm, một cụm 6 bits. Một cụm 6 bits được ánh xạ vào một trong 64 ký tự ASCII hợp lệ; ví dụ 0 ánh xạ thành A, 1 ánhxạ thành B… Nếu nhìn vào bức thư đã được mã hóa dạng base64, ngườidùng sẽ thấy chỉ có 52 chữ cái cả hoa lẫn thường, 10 chữ số từ 0 đến 9 và các kýtự đặc biệt + và /.

Đối với những người dùng chỉ sử dụng trình đọc thư hỗ trợ duy nhất kiểu ký tự thì việc đọc những bức thư có kiểu base64 sẽ rất là đau khổ. Vì lý do nhân đạo, MIME còn hỗ trợ kiểu mã hóa ký tự thường được gọi là 7-bit. 7-bit sẽ giữ nguyên dạng ký tự mà người ta nhập vào.

Tổng hợp lại, ví dụ một bức thư có 2 loại dữ liệu: văn bản thường, một ảnh JPEG, sẽ có hình dáng như sau:

From: [email protected]: [email protected]: Picture of students.MIME-Version: 1.0Content-Type: multipart/mixed; boundary=”—98766789”--98766789Content-Transfer-Encoding: 7bitContent-Type: text/plainHi,Please find a picture of you.--98766789Content-Transfer-Encoding: base64

Page 136: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

136

Content-Type: image/jpegbase64 encoded data ....................................base64 encoded data--98766789--

2.3 Chuyển thư

Kế đến, chúng ta sẽ xem xét giao thức SMTP – giao thức được dùng để chuyển thư từ máy này đến máy kia. Để đặt SMTP vào đúng ngữ cảnh, chúng ta nên nhắc lại các nhân vật then chốt trong hệ thống email. Đầu tiên, người dùng tương tác với trình đọc thư (hay còn gọi là user agent) để soạn, lưu, tìm kiếm và đọc thư của họ. Hiện trên thị trường có nhiều phần mềm đọc thư, cũng giống như hiện cũng đang có nhiều loại trình duyệt Web vậy. Thứ hai, có trình xử lý thư (hay còn gọi là mail server) chạy trên một máy nào đó trong mạng nội bộ của người dùng. Có thể xem mail server như một bưu điện: Người dùng trao chomail server các bức thư mà họ muốn gởi cho người dùng khác, mail server sử dụng giao thức SMTP trên TCP để chuyển bức các thư này đến mail server bên đích. Mail server bên đích nhận các thư đến và đặt chúng vào hộp thư của người dùng bên đích. Do SMTP là giao thức mà rất nhiều người có thể tự cài đặt, vì thếsẽ có rất nhiều sản phầm mail server hiện có trên thị trường. Sản phẩm mail server thường được sử dụng nhất là sendmail, ban đầu được cài đặt trong hệ điều hành Berkeley Unix.

Tất nhiên mail server bên máy gởi có thể kết nối SMTP/TCP trực tiếp tới mail server bên máy nhận, nhưng trong thực tế, một bức thư có thể đi ngang qua vài mail gateways trước khi đến đích.

Cũng giống như máy đích, mỗi mail gateway cũng chạy một mail server. Không phải ngẫu nhiên mà các nút chuyển thư trung gian được gọi là mail gateway. Công việc của chúng cũng giống như các IP gateway là lưu tạm và chuyển phát tiếp các bức thư của người dùng. Điểm khác nhau duy nhất giữa chúng là, mail gateway trữ tạm các bức thư trong đĩa, trong khi các IP gateway trữ tạm các gói tin IP trong bộ nhớ.

Bạn có thể đặt câu hỏi: tại sao lại cần đến các mail gateways? Tại sao không dùng phương pháp nối kết SMTP/TCP trực tiếp từ bên gởi sang bên nhận? Lý dothứ nhất, người gởi không muốn kèm trong thư địa chỉ của máy đích. Ví dụ, riêng việc nhập vào trong thư địa chỉ đích [email protected] đã mất công rồi, không ai thấy thoải mái khi phải nhập thêm địa chỉ máy đích là machine-of-phi.cit.ctu.edu.vn. Thứ hai, không chắc lúc bên gởi thiết lập nối kết đến bên nhận, người dùng bên nhận đã bật sẵn máy! Thành thử chỉ cần địa chỉ thư bên nhận là đủ. Khi bức thư đến được mail gateway của Khoa Công Nghệ Thông Tin– Đại học Cần Thơ, nếu người dùng ptphi đang mở máy, mail gateway sẽ chuyển thư cho anh ta ngay, nếu không mail gateway sẽ trữ tạm thư trên đĩa của nó đến khi ptphi bật máy lên và kiểm tra thư.

Page 137: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

137

Dù có bao nhiêu mail gateways trung gian trên đường đến đích vẫn không đáng lo lắng, bởi vì mỗi mail gateway trung gian sẽ nỗ lực sử dụng một kết nối SMTPđộc lập đến gateway kế tiếp trên đường đi nhằm chuyển thư càng ngày càng đến gần người nhận.

SMTP là một giao thức đơn giản dùng các ký tự ASCII. Sau khi thiết lập nối kết TCP đến cổng 25 của máy đích (được coi là server), máy nguồn (được coi là client) chờ nhận kết quả trả về từ server. Server khởi đầu cuộc đối thoại bằng cách gởi một dòng văn bản đến client thông báo danh tính của nó và khả năng tiếp nhận thư. Nếu server không có khả năng nhận thư tại thời điểm hiện tại, client sẽ hủy bỏ nối kết và thử thiết lập lại nối kết sau.

Nếu server sẵn sàng nhận thư, client sẽ thông báo lá thư đó từ đâu đến và ai sẽ làngười nhận. Nếu người nhận đó tồn tại, server sẽ thông báo cho client tiếp tục gởi thư. Sau đó client gởi thư và server báo nhận cho thư đó. Sau khi cả hai bên hoàn tất phiên truyền nhận, kết nối sẽ được đóng lại.

Ví dụ một phiên truyền nhận được cho ngay dưới đây. Những dòng bắt đầu bằngC: là của phía client gởi đi; bằng S: là các câu trả lời của server.

Như đã thấy trong ví dụ, client gởi đi một lệnh (HELO, MAIL FROM, RCPT TO, DATA, QUIT) và server trả lời bằng một mã số (250, 354, 221) có kèm theo lời chú thích có thể đọc được. Client kết thúc thư bằng <CRLF>.<CRLF>.Sau đây là bảng giải thích một số lệnh của client và mã số trả lời của server.

S: 220 ctu.edu.vnC: HELO cit.ctu.edu.vnS: 250 ctu.edu.vn says hello to cit.ctu.edu.vnC: MAIL FROM: <[email protected]>S: 250 Sender okC: RCPT TO: <[email protected]>S: 250 Recipient okC: DATAS: 354 Enter mail, end with "." on a line by itselfC: Subject: It’s Xmast!C: So I hope you a merry Xmas and a happy new year!C: .S: 250 Message accepted for deliveryC: QUITS: 221 Bye-Bye

LỆNH CỦA CLIENT

Lệnh Ý nghĩa

Page 138: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

138

HELO Câu chào và xưng danh của client

MAIL FROM Địa chỉ email của người gởi

RCPT TO Địa chỉ email của người nhận

DATA Bắt đầu truyền nội dung của thư

QUIT Hủy nối kết

TRẢ LỜI CỦA SERVER

Trả lời Ý nghĩa

250 Yêu cầu hợp lệ

550 Yêu cầu không hợp lệ, không tồn tại hộp thư như client đã chỉ ra.

354 Cho phép bắt đầu nhập thư vào. Kết thúc thư bằng <CRLF>.<CRLF>

221 Server đang đóng kết nối TCP

Vẫn còn nhiều lệnh và mã trả lời chưa được trình bày, xin tham khảo tài liệu RFC 822 để có được đầy đủ thông tin.

2.4 Phân phát thư

Như đã trình bày, khi đứng về góc độ người dùng thư, họ sẽ dùng user agent để gởi và nhận thư cho họ. User agent dùng giao thức SMTP để gởi thư đi, dùng giao thức POP3 hoặc IMAP để nhận thư về.2.4.1 POP3

Một phiên làm việc theo giao thức POP3 bắt đầu tại user agent. User agent khởi động một nối kết TCP đến cổng 110 của mail server. Khi kết nối thực hiện xong,phiên làm việc POP3 sẽ trải qua theo thứ tự ba kỳ:

1. Chứng thực.

2. Giao dịch dữ liệu.

3. Cập nhật.

Kỳ chứng thực buộc người dùng thực hiện thủ tục đăng nhập bằng cách nhập vàohai lệnh sau:

Lệnh Ý nghĩa

Page 139: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

139

USER <tên người dùng> Khai báo tên người dùng.

PASS <mật khẩu> Khai báo mật khẩu.

Báo trả của mail server sẽ là một trong hai câu sau:

Trả lời Ý nghĩa

+OK <chú thích> Khai báo của người dùng là đúng.

+ERR <chú thích> Khai báo của người dùng là sai và lời giải thích.

Trong kỳ giao dịch, người dùng có thể xem danh sách thư chưa nhận về, nhận thưvề và xóa thư trong hộp thư của mình khi cần thiết. Các lệnh mà người dùng thường sử dụng để giao dịch với server là:

Lệnh Ý nghĩa

LIST [<số thứ tự thư>]

Nếu dùng LIST không tham số, server sẽ trả về toàn bộ danh sách các thư chưa nhận. Nếu có tham số là số thứ tự thư cụ thể, server sẽ trả về thông tin của chỉ bức thư đó thôi.

RETR <số thứ tự thư> Tải lá thư có số thứ tự <số thứ tự thư> về.

DELE <số thứ tự thư> Xóa lá thứ số <số thứ tự thư> khỏi hộp thư.

QUIT Hoàn tất giai đoạn giao dịch và hủy nối kết TCP

Các trả lời của server có thể là các số liệu mà client yêu cầu hoặc các thông báo +OK, -ERR như trong phần đăng nhập.Sau đây là dàn cảnh một phiên làm việc ví dụ giữa người dùng ptphi khi anh ta đăng nhập và làm việc trên hộp thư của mình tại server có địa chỉ mail.cit.ctu.edu.vn.

2.4.2 IMAPVới những người dùng có một tài khoản email trên một ISP và người dùng này thường truy cập email trên một PC thì giao thức POP3 hoạt động tốt. Tuy nhiên, một sự thật trong ngành công nghệ máy tính, khi một thứ gì đó đã hoạt động tốt, người ta lập tức đòi hỏi thêm nhiều tính năng mới (và tự chuốc lấy nhiều phiền nhiễu). Điều đó cũng xảy ra đối với hệ thống email. Ví dụ, người ta chỉ có một tài khoản email, nhưng họ lại muốn ngồi đâu cũng truy cập được nó. POP3 cũng làm được chuyện này bằng cách đơn giản tải hết các email xuống máy PC mà người dùng này đang ngồi làm việc. Và dĩ nhiên là thư từ của người dùng này nằm rải rác khắp nơi.Sự bất tiện này khơi mào cho sự ra đời của giao thức phân phối thư mới, IMAP (Internet Message Access Protocol), được định nghĩa trong RFC 2060. Không giống như POP2, IMAP coi các thông điệp mặc nhiên nằm trên server vô hạn và trên nhiều hộp thư. IMAP còn đưa ra cơ chế cho phépđọc các thông điệp hoặc một phần của thông điệp, một tính năng hữu ích khi người dùng kết nối đến server bằng đường truyền tốc độ chậm như điện thoại

Page 140: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

140

nhưng lại đọc các email có âm thanh, hình ảnh… Với quan niệm cho rằng người dùng không cần tải thư về lưu trên PC, IMAP cung cấp các cơ chế cho phép tạo, xóa và sửa đổi nhiều hộp thư trên server.Cung cách làm việc của IMAP cũng giống như POP3, ngoài trừ trong IMAP có rất nhiều lệnh.IMAP server sẽ lắng nghe trên cổng 143. Cũng nên chú ý rằng, không phải mọi ISP đều hỗ trợ cả hai giao thức POP3 và IMAP.Bảng sau so sánh các tính năng của POP3 và IMAP

Tính năng POP3 IMAP

Giao thức được định nghĩa ở đâu? RFC 1939 RFC 2060

Cổng TCP được dùng 110 143

Email được lưu ở đâu PC của người dùng Server

Email được đọc ở đâu Off-line On-line

Thời gian nối kết Ít Nhiều

Sử dụng tài nguyên của server Tối thiểu Nhiều hơn

Nhiều hộp thư Không Đúng

Ai lưu phòng hờ các hộp thư Người dùng ISP

Tốt cho người dùng di động Không Có

Kiểm soát của người dùng đối với việc tải thư về

Ít Tốt

Tải một phần thư Không Có

Quota đĩa có là vấn đề không? Không Thỉnh thoảng

Dễ cài đặt Có Không

Được hỗ trợ rộng rãi Có Đang phát triển

3. World Wide Web (HTTP)

Ứng dụng Web đã rất thành công, giúp cho nhiều người có thể truy cập Internet đến nỗi Web được hiểu đồng nghĩa với Internet! Có thể hiểu Web như là một tậpcác client và server hợp tác với nhau và cùng nói chung một ngôn ngữ: HTTP (Hyper Text Transfer Protocol). Đa phần người dùng tiếp xúc với Web thông quachương trình client có giao diện đồ họa, hay còn gọi là trình duyệt Web (Web browser). Các trình duyệt Web thường được sử dụng nhất là Netscape Navigator

Page 141: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

141

(của Netscape) và Internet Explorer (của Microsoft). Hình ảnh thể hiện trình duyệt Explorer đang trình bày trang chủ.

Bất kỳ trình duyệt Web nào cũng có chức năng cho phép người dùng “mở một URL”. Các URL (Uniform Resource Locators) cung cấp thông tin về vị trí của các đối tượng trên Internet; chúng thường trông giống như sau:http://www.cit.ctu.edu.vn/index.html

Nếu người dùng mở URL trên, trình duyệt Web sẽ thiết lập một kết nối TCP đến Web Server tại địa chỉ www.cit.ctu.edu.vn và ngay lập tức tải tập tin index.html về và thể hiện nó. Hầu hết các tập tin trên Web chứa văn bản và hìnhảnh, một số còn chứa audio và video clips. Chúng còn có thể chứa các liên kết đến các tập tin khác – được gọi là các liên kết siêu văn bản (hypertext links).Khi người dùng yêu cầu trình duyệt Web mở ra một liên kết siêu văn bản (bằng cách trỏ chuột và click lên liên kết đó), trình duyệt sẽ mở một nối kết mới, tải về và hiển thị một tập tin mới. Vì thế, rất dễ để duyệt từ server này đến server khác trên khắp thế giới để có được hết những thông tin mà người dùng cần.Khi người dùng chọn xem một trang Web, trình duyệt Web sẽ nạp trang Web đó từ Web server về sử dụng giao thức HTTP chạy trên TCP. Giống như SMTP, HTTP là giao thức hướng ký tự. Về cốt lõi, một thông điệp HTTP có khuôn dạngtổng quát sau:START_LINE <CRLF>MESSAGE_HEADER <CRLF><CRLF>MESSAGE_BODY <CRLF>Hàng đầu tiên chỉ ra đấy là thông điệp yêu cầu hay trả lời. Nó sẽ chỉ ra “thủ tục cần được thực hiện từ xa” (trong tình huống là thông điệp yêu cầu) hoặc là “trạng thái trả về” (trong tình huống là thông điệp trả lời). Tập hợp các hàng kế tiếp chỉ ra các tùy chọn hoặc tham số nhằm xác định cụ thể tính chất của yêu cầuhoặc trả lời. Phần MESSAGE_HEADER có thể không có hoặc có một vài hàng tham số và được kết thúc bằng một hàng trống. HTTP định nghĩa nhiều kiểu header, một số liên quan đến các thông điệp yêu cầu, một số liên quan đến các thông điệp trả lời và một số lại liên quan đến phần dữ liệu trong thông điệp. Ở đây chỉ giới thiệu một số kiểu thường dùng. Cuối cùng, sau hàng trống là phần nội dung của thông điệp trả lời (MESSAGE_BODY), phần này thường là rỗng trong thông điệp yêu cầu.3.1 Các thông điệp yêu cầuHàng đầu tiên của một thông điệp yêu cầu HTTP sẽ chỉ ra 3 thứ: thao tác cần được thực thi, trang Web mà thao tác đó sẽ áp lên và phiên bản HTTP được sử dụng. Bảng sau sẽ giới thiệu một số thao tác phổ biến.

Hành động Mô tả

OPTIONS Yêu cầu thông tin về các tùy chọn hiện có.

GET Lấy về tài liệu được xác định trong URL

Page 142: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

142

HEAD Lấy về thông tin thô về tài liệu được xác định trong URL

POST Cung cấp thông tin cho server

PUT Tải tài liệu lên server và đặt ở vị trí được xác định trong URL

DELETE Xóa tài liệu nằm ở vị trí URL trên server

TRACE Phản hồi lại thông điệp yêu cầu

CONNECT Được sử dụng bởi các proxy

Hai thao tác thường được sử dụng nhiều nhất là GET (lấy một trang Web về) và HEAD (lấy về thông tin của một trang Web). GET thường được sử dụng khi trình duyệt muốn tải một trang Web về và hiển thị nó cho người dùng. HEAD thường được sử dụng để kiểm tra tính hợp lệ của một liên kết siêu văn bản hoặc để xem một trang nào đó có bị thay đổi gì không kể từ lần tải về trước đó.Ví dụ, dòng START_LINEGET http://www.cit.ctu.edu.vn/index.html HTTP/1.1nói rằng: người dùng muốn tải về trên server www.cit.ctu.edu.vn trang Web có tên index.html và hiển thị nó. Ví dụ trên dùng URL tuyệt đối. Ta cũng có thể sử dụng URL tương đối như sau:GET /index.html HTTP/1.1Host: www.cit.ctu.edu.vnỞ đây, Host là một trong các trường trong MESSAGE_HEADER.

3.2 Các thông điệp trả lờiGiống như các thông điệp yêu cầu, các thông điệp trả lời bắt đầu bằng một hàng START_LINE.Trong trường hợp này, dòng START_LINE sẽ chỉ ra phiên bản HTTP đang được sử dụng, một mã 3 ký số xác định yêu cầu là thành công hay thất bại và một chuỗi ký tự chỉ ra lý do của câu trả lời này.Ví dụ, dòng START_LINEHTTP/1.1 202 Acceptedchỉ ra server đã có thể thõa mãn yêu cầu của người dùng.Còn dòngHTTP/1.1 404 Not Foundchỉ ra rằng server đã không thể tìm thấy tài liệu như được yêu cầu.Có năm loại mã trả lời tổng quát với ký số đầu tiên xác định loại mã.

Mã Loại Lý do

Page 143: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

143

1xx Thông tin Đã nhận được yêu cầu, đang tiếp tục xử lý

2xx Thành công Thao tác đã được tiếp nhận, hiểu được và chấp nhận được

3xx Chuyển hướng Cần thực hiện thêm thao tác để hoàn tất yêu cầu được đặt ra

4xx Lỗi client Yêu cầu có cú pháp sai hoặc không thể được đáp ứng

5xx Lỗi server Server thất bại trong việc đáp ứng một yêu cầu hợp lệ

Cũng giống như các thông điệp yêu cầu, các thông điệp trả lời có thể chứa một hoặc nhiều dòng trong phần MESSAGE_HEADER. Những dòng này cung cấp thêm thông tin cho client. Ví dụ, dòng header Location chỉ ra rằng URL được yêu cầu đang có ở vị trí khác. Vì thế, nếu trang Webcủa Khoa Công Nghệ Thông Tin được di chuyển từ địa chỉ http://www.cit.ctu.edu.vn/index.htmlsang địa chỉ http://www.ctu.edu.vn/cit/index.html mà người dùng lại truy cập vào URL cũ, thì Web server sẽ trả lời như sauHTTP/1.1 301 Moved PermanentlyLocation: http://www.ctu.edu.vn/cit/index.htmlTrong tình huống chung nhất, thông điệp trả lời cũng sẽ mang theo nội dung trang Web được yêu cầu. Trang này là một tài liệu HTML, nhưng vì nó có thể chứa dữ liệu không phải dạng văn bản (ví dụ như ảnh GIF), dữ liệu này có thể được mã hóa theo dạng MIME. Một số hàng trong phầnMESSAGE_HEADER cung cấp thêm thông tin về nội dung của trang Web, bao gồm ContentLength (số bytes trong phần nội dung), Expires (thời điểm mà nộidung trang Web được xem như lỗi thời), và Last-Modified (thời điểm được sửa đổi lần cuối cùng).3.3 Các kết nối TCPNguyên tắc chung của giao thức HTTP là client nối kết đến cổng TCP số 80 tại server, server luôn lắng nghe trên cổng này để sẵn sàng phục vụ client. Phiên bản đầu tiên (HTTP/1.0) sẽ thiết lập một nối kết riêng cho mỗi hạng mục dữ liệucần tải về từ server. Không khó để thấy rằng đây là cơchế không mấy hiệu quả: Các thông điệp dùng để thiết lập và giải phóng nối kết sẽ phải được trao đổi qua lại giữa client và server và khi mà tất cả client muốn lấy thông tin mới nhất của một trang Web, server sẽ bị quá tải.Cải tiến quan trọng nhất trong phiên bản HTTP/1.1 là nó cho phép các kết nối lâu dài – client và server sẽ trao đổi nhiều thông điệp yêu cầu/trả lời trên cùng một kết nối TCP. Kết nối lâu dài có hai cái lợi. Thứ nhất, nó làm giảm thiểu chi phí cho việc thiết lập/giải phóng nối kết. Thứ hai, do client gởi nhiều thông điệp

Page 144: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

144

yêu cầu qua một kết nối TCP, cơ chế điều khiển tắc nghẽn của TCP sẽ hoạt độnghiệu quả hơn.Tuy nhiên, kết nối lâu dài cũng có cái giá phải trả. Vấn đề phát sinh ở chỗ: không ai trong client và server biết được kết nối đó sẽ kéo dài bao lâu. Điều này thực sự gây khó khăn cho phía server bởi vì tại mỗi thời điểm, nó phải đảm bảo duy trì kết nối đến cả ngàn client. Giải pháp cho vấn đề này là: server sẽ mãn kỳ và cắt nối kết nếu nó không nhận được một yêu cầu cụ thể nào từ phía client trong một khoảng thời gian định trước. Ngoài ra, cả client và server phải theo dõi xem phía bên kia có chủ động cắt nối kết hay không và lấy đó làm cơ sở để tự cắt nối kết của mình. (Nhắc lại rằng, cả hai bên phải cắt nối kết thì nối kết TCP mới thực sự kết thúc).3.4 Trữ đệm

Một trong những lĩnh vực nghiên cứu tích cực nhất hiện nay về Internet là làm sao để trữ tạm các trang Web một cách hiệu quả. Việc trữ tạm mang lại nhiều lợiích. Từ phía client, việc nạp và hiển thị một trang Web từ bộ đệm gần đấy là nhanh hơn rất nhiều so với từ một server nào đó ở nửa vòng trái đất. Đối với server, có thêm một bộ đệm để can thiệp vào và phục vụ giúp yêu cầu của người dùng sẽ giảm bớt tải trên server.Việc trữ đệm có thể được cài đặt tại nhiều nơi khác khau. Ví dụ, trình duyệt Webcó thể trữ tạm những trang Web mới được nạp về gần đây, để khi người dùng duyệt lại những trang Web đó, trình duyệt sẽ không phải nối kết ra Internet để lấy chúng về mà dùng bản trữ sẵn. Ví dụ khác, mộtkhu vực làm việc (site) có thể đề cử một máy làm nhiệm vụ trữ tạm các trang Web, để những người dùng sau có thể sử dụng các bản trữ sẵn của những người dùng trước. Yêu cầu của hệ thống này là mọi người dùng trong site phải biết địa chỉ của máy tính làm nhiệm vụ bộ trữ tạm, và họ chỉđơn giản là liên hệ với máy tính này để tải các trang Web về theo yêu cầu. Ngườita thường gọi máy tính làm nhiệm vụ trữ tạm các trang Web cho một site là proxy. Vị trí trữ đệm có thể di chuyển gần hơn đến phần lõi của Internet là các ISP. Trong tình huống này, các site nối kết tới ISP thường không hay biết gì về việc trữ tạm ở đây. Khi các yêu cầu HTTP từ các site được chuyển phát đến router của ISP, router liền kiểm tra xem URL được yêu cầu có giống với các URL được trữ sẵn hay không. Nếu có, router sẽ trả lời ngay. Nếu không, router sẽ chuyển yêu cầu đến server thật sự và cũng không quên lưu vào bộ đệm của mình thông điệp trả lời từ phía server đó.Việc trữ tạm là đơn giản. Tuy nhiên bộ đệm phải đảm bảo những thông tin trữ đệm trong đó không quá cũ. Để làm được việc này, các Web server phải gán “ngày hết hạn” (tức là trường Expires trong header) cho mọi trang Web mà nó phục vụ cho client. Nhân đó, các bộ đệm cũng lưu lại thông tin này. Và từ đó, các bộ đệm sẽ không cần phải kiểm tra tính cập nhật của trang Web đó cho đến khi ngày hết hạn đến. Tại thời điểm một trang Web hết hạn, bộ đệm sẽ dùng lệnhHEAD hoặc lệnh GET có điều kiện (GET với trường If-Modified-Since trong phần header được đặt) để kiểm tra rằng nó có một phiên bản mới nhất của trang

Page 145: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

145

Web kia. Tổng quát hơn, cần phải có“các chỉ thị hướng dẫn” cho việc trữ đệm và các chỉ thị này phải được tuân thủ tại mọi bộ đệm.Các chỉ thị sẽ chỉ ra có nên trữ đệm một tài liệu hay không, trữ nó bao lâu, một tài liệu phải tươi như thế nào và vân vân.

4 Truyền tập tin (FTP)

Thông qua dịch vụ FTP, người dùng tại một máy tính có thể đăng nhập và thao tác lên hệ thống tập tin được chia sẻ của một máy tính từ xa.Mục tiêu của dịch vụ FTP là:1) Đảm bảo việc chia sẻ tập tin (chương trình máy tính hoặc dữ liệu) trên mạng.2) Khuyến khích việc sử dụng không trực tiếp (thông qua chương trình) tài nguyên trên các máy tính khác.3) Người dùng không cần phải quan tâm đến sự khác nhau của các hệ thống tập tin trên mạng.4) Truyền dữ liệu một cách tin cậy và hiệu quả.

4.1 Mô hình dịch vụ FTP

Hình H.9 mô tả mô hình của dịch vụ FTP

Trong hệ thống này, người dùng sẽ ra lệnh cho FTP user agent. User agent sẽ nốikết tới FTP server để dàn xếp thủ tục làm việc, thực thi các tác vụ theo yêu cầu và trả kết quả về cho người dùng.

4.2 Giao thức FTP

Đầu tiên, user agent thiết lập một kết nối điều khiển trên cổng 21 tới FTP server.Sau khi đã thỏa thuận các tham số truyền nhận, hai bên sẽ thiết lập một kênh dữ liệu chạy trên cổng 20. Dữ liệu của các tập tin được trao đổi qua lại giữa user agent và server sẽ chạy trên kênh dữ liệu này. Kênh dữ liệu là kênh hoạt động theo phương thức hai chiều và không nhất thiết phải luôn tồn tại.

Page 146: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

146

Hình .10 Giao tiếp giữa Client và Server trong giao thức FTP

4.3 Các lệnh cơ bảnSau đây là các lệnh cơ bản mà người dùng có thể sử dụng để thao tác lên hệ thống FTP

Lệnh Tham số Ý nghĩa

FTP host-name Nối kết đến FTP server có địa chỉ host-name

USER user-name Cung cấp tên người dùng cho FTP server để thực hiện quá trình chứng thực

ASCII Chỉ định kiểu dữ liệu truyền nhận là ký tự

BINARY Chỉ định kiểu dữ liệu truyền nhận là nhị phân

LS Xem nội dung thư mục từ xa

CD remote-dir Chuyển đến thư mục khác trong hệ thống tập tin từ xa

GET remote-file local-file Tải tập tin remote-file trên FTP server về hệ thống tậptin cục bộ và đặt tên là local-file

PUT local-file remote-file Nạp tập tin cục bộ local-file lên server và đặt tên làremote-file

MKDIR dir-name Tạo một thư mục có tên dir-name trên hệ thống tập tintừ xa.

RMDIR dir-name Xóa thư mục có tên dir-name trên hệ thống tập tin từ xa

QUIT Đóng nối kết FTP và thoát khỏi chương

Page 147: CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN 1. LUẬT CÔNG NGHỆ …

147

trình FTP