Tải bản đầy đủ (.pdf) (45 trang)

Báo cáo cuối kỳ PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC Công nghệ thông tin với sự tự do, sáng tạo và chia sẻ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.05 MB, 45 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
LỚP CAO HỌC KHÓA 6
Công nghệ thông tin với sự tự do, sáng tạo và chia sẻ
HVTH: Phạm Nguyễn Trường An
MSHV: CH1101062
GVHD: HOÀNG VĂN KIẾM
Báo cáo cuối kỳ
PHƯƠNG PHÁP NGHIÊN CỨU
KHOA HỌC TRONG TIN HỌC
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Mục lục
A.KHOA HỌC VÀ NGHIÊN CỨU KHOA HỌC 5
I.Khái niệm và phân loại: 5
a.Phân loại theo nguồn gốc hình thành khoa học: 5
b.Phân loại theo mục đích ứng dụng khoa học 6
c.Phân loại theo mức độ khái quát hóa của khoa học 6
d.Phân loại theo kết quả họat động chủ quan của con người 6
e.Phân loại theo cơ cấu của hệ thống tri thức hoặc chương trình đào tạo 6
f.Phân loại theo đối tượng nghiên cứu của khoa học 7
II.Nghiên cứu khoa học 7
a.Đặt vấn đề, mục đích, hoặc câu hỏi nghiên cứu 7
b.Những giả định 7
c.Danh mục tài liệu 8
d.Trình tự 8
e.Tầm quan sát, dữ liệu, kết quả 8
f.Kết luận 8
III.Đề tài nghiên cứu khoa học 9
a.Khái niệm đề tài 9
b.Đối tượng nghiên cứu và phạm vi nghiên cứu 9
c.Mục đích và mục tiêu nghiên cứu 9


B.PHƯƠNG PHÁP LUẬN SÁNG TẠO VÀ ĐỔI MỚI TRONG KHOA HỌC 9
I.Khái niệm, đối tượng, mục đích và ý nghĩa 9
II.Những nội dung chính 10
a.Vấn đề khoa học 10
b.Các phương pháp phát hiện vấn đề khoa học 10
c.Phương pháp giải quyết vấn đề khoa học về phát minh, sáng chế 11
d.Các phương pháp giải quyết vấn đề tổng quát 13
C.ÁP DỤNG CÁC NGUYÊN TẮC SÁNG TẠO VÀO NHỮNG VẤN ĐỀ CỤ THỂ
TRONG CÔNG NGHỆ THÔNG TIN 14
I.Sự giải phóng của ngành phần mềm và bùng nổ sáng tạo trong công nghệ thông
tin 15
GVHD: Hoàng Văn Kiếm Trang 2/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
a.Giai đoạn 1: Phần mềm là gắn liền với phần cứng 15
b.Giai đoạn 2: Định hình nền công nghiệp với sự trỗi dậy của máy tính cá nhân
16
c.Sự trỗi dậy của phần mềm mã nguồn mở và câu chuyện Tái ông thất mã 17
II.Áp dụng các nguyên tắc sáng tạo trong xây dựng phần mềm 19
a.Nhu cầu thực tế 19
b.Phân tích các giải pháp đã có và tìm ra vấn đề: 20
c.Xác định lại vấn đề 21
III.Sáng tạo, phát triển từ những công cụ đã có: 23
a.Giao thức bittorrent 23
b.SHA-1 Hash và file checksum 25
c.Giao diện người dùng 27
IV.Chi tiết thiết kế, mô tả hoạt động 29
a.Kết cấu chương trình 29
V.Giao diện chính 31
a.Bộ thư viện lõi 35
b.Cơ chế send file 37

VI.Một số mẹo dùng trong lúc cài đặt chương trình 38
a.Background 38
b.Synchronous socket programming 39
c.Thread synchronization 40
Cách lấy external IP 42
d.Lấy Icon của file – task 43
e.Cách dừng một thread 44
f.Cách ngăn không cho hệ thống vẽ lại chương trình 44
D.TÀI LIỆU THAM KHẢO: 46
GVHD: Hoàng Văn Kiếm Trang 3/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
A.KHOA HỌC VÀ NGHIÊN CỨU KHOA HỌC
I. Khái niệm và phân loại:
Khoa học là quá trình nghiên cứu nhằm khám phá ra những kiến thức mới, học
thuyết mới… về tự nhiên và xã hội. Những kiến thức hay học thuyết mới nầy, tốt hơn,
có thể thay thế dần những cái cũ, không còn phù hợp.
Khoa học bao gồm một hệ thống tri thức về qui luật của vật chất và sự vận
động của vật chất, những qui luật của tự nhiên, xã hội, và tư duy. Hệ thống tri thức
này hình thành trong lịch sử và không ngừng phát triển trên cơ sở thực tiễn xã hội.
Phân biệt ra 2 hệ thống tri thức: tri thức kinh nghiệm và tri thức khoa học.
Có nhiều hướng phân loại khoa học: theo nguồn gốc (lý thuyết, thực nghiệm,
thực chứng…), theo mục đích ứng dụng (mô tả, phân tích, tổng hợp, sáng tạo…), theo
mức độ khái quát (cụ thể, trừu tượng, tổng quát…), theo tính tương liên (liên ngành,
đa ngành…), theo cơ cấu hệ thống tri thức (cơ sở, cơ bản, chuyên ngành…), theo đối
tượng nghiên cứu (tự nhiên, kỹ thuật, xã hội nhân văn, công nghệ, nông nghiệp, y
học…).
a. Phân loại theo nguồn gốc hình thành khoa học:
Khoa học lý thuyết (sciences théorique)
Khoa học thuần túy (scieces pures, sciences de pure érudition)
Khoa học thực nghiệm (sciences empiricales,sciences expérimentales)

Khoa học thực chứng (sciences positives)
Khoa học quy nạp (sciences inductives)
Khoa học diễn dịch (sciences déductives)
GVHD: Hoàng Văn Kiếm Trang 4/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
b. Phân loại theo mục đích ứng dụng khoa học
Khoa học mô tả (sciences descriptives)
Khoa học phân tích (sciences analytiques)
Khoa học tổng hợp (sciences synthétiques)
Khoa học ứng dụng (sciences appliquées)
Khoa học hành động (sciences de l’action)
Khoa học sáng tạo (sciences créatrices)
c. Phân loại theo mức độ khái quát hóa của khoa học
Khoa học cụ thể (sciences concrètes)
Khoa học trừu tượng (sciences abstraites)
Khoa học tổng quát (sciences générales)
Khoa học đặc thù (sciences particulières)
4. Phân loại theo tính tương liên giữa các khoa học
Khoa học liên bộ môn(sciences inter-disciplinaires)
Khoa học đa bộ môn (sciences multi-disciplinaires)
d. Phân loại theo kết quả họat động chủ quan của con người
Khoa học ký ức (sciences de la mémoire)
Khoa học tư duy (sciences de la pensée)
Khoa học suy luận (sciences de la raison)
Khoa học tưởng tượng (sciences de l’imagination)
e. Phân loại theo cơ cấu của hệ thống tri thức hoặc chương trình đào tạo
Khoa học cơ bản (sciences de base)
Khoa học cơ sở (sciences fondamentales)
Khoa học chuyên môn (sciences de spécialisation)
GVHD: Hoàng Văn Kiếm Trang 5/45

Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
f. Phân loại theo đối tượng nghiên cứu của khoa học
Khoa học tự nhiên (sciences naturelles, sciences de la nature)
Khoa học kỹ thuật (sciences techniques)
Khoa học công nghệ (sciences technologiques, sciences d’engineering)
Khoa học xã hội (sciences sociales)
Khoa học nhân văn (sciences humaines)
Khoa học nông nghiệp (sciences agricoles)
Khoa học cơ bản (sciences de la santée)
II. Nghiên cứu khoa học
Nghiên cứu khoa học là một hoạt động tìm kiếm, xem xét, điều tra, hoặc thử
nghiệm. Dựa trên những số liệu, tài liệu, kiến thức,… đạt được từ các thí nghiệm
nghiên cứu khoa học để phát hiện ra những cái mới về bản chất sự vật, về thế giới tự
nhiên và xã hội, và để sáng tạo phương pháp và phương tiện kỹ thuật mới cao hơn, giá
trị hơn.
Phương pháp nghiên cứu khoa học nói chung gồm sáu bước cơ bản sau:
a. Đặt vấn đề, mục đích, hoặc câu hỏi nghiên cứu
Đặt vấn đề hay câu hỏi nghiên cứu là phần quan trọng nhất của phương pháp
nghiên cứu khoa học. Mỗi một phần dự án được thực hiện để trả lời câu hỏi này. Các
câu hỏi nghiên cứu đôi khi được hình thành như là một tuyên bố và được gọi là “vấn
đề” hoặc "báo cáo vấn đề." Mục tiêu hay những ý tưởng kiểm chứng là gì? Câu hỏi
khoa học đang trả lời là gì?
b. Những giả định
Giả định là một dạng dự báo, được hình thành như một tuyên bố để dẫn tới câu
trả lời cho câu hỏi nghiên cứu. Giải thích một cách thuyết phục các dự án sử dụng để
chứng minh cho mục đích nghiên cứu. Nên cố gắng trình bày kỹ về các kết luận có
được thông qua đo lường. Không phải lúc nào kết luận cũng phù hợp với giả thuyết.
GVHD: Hoàng Văn Kiếm Trang 6/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
c. Danh mục tài liệu

Danh sách tất cả các vật tư, thiết bị, tài liệu được sử dụng trong nghiên cứu
hoặc thử nghiệm. Danh sách các tài liệu phải bao gồm các trình tự của tất cả thao tác.
d. Trình tự
Là mô tả chi tiết, từng bước về cách thực hiện thử nghiệm. Mô tả rõ ràng cách
khống chế các biến số cũng như từng bước làm thế nào lấy được kết quả cuối cùng
thông qua đo lường để chứng minh hay bác bỏ giả thuyết. Các tiến trình thực hiện nên
được đúc kết theo một phương pháp mà theo đó người khác dễ dàng thực hiện lại.
Hình ảnh mô tả các thao tác được hiện rõ trên bảng hiển thị.
e. Tầm quan sát, dữ liệu, kết quả
Các kết quả thường là dưới hình thức một tuyên bố để giải thích hoặc diễn giải
dữ liệu. Kết quả thu được ở dạng dữ liệu thô, đồ thị, kết luận rút ra từ những dữ liệu
có trước. Hình ảnh cũng có thể được sử dụng ở đây.
f. Kết luận
Kết luận là một bản tóm tắt các nghiên cứu và các kết quả của thử nghiệm. Đây
là nơi trả lời các vấn đề hay câu hỏi nghiên cứu. Cần đưa ra một tuyên bố cho dù dữ
liệu có hỗ trợ giả thuyết hay không. Cần phải có đủ dữ liệu để chứng minh một phần
hoặc phản bác toàn bộ giả thuyết. Trong trường hợp này, có thể giải thích tại sao có
các kết quả khác nhau. Các phương pháp khoa học không phải là đúc bằng bê tông mà
nó là một hệ thống, minh bạch và khá dễ để học hỏi và sử dụng mà không nhà khoa
học nào có thể sử dụng nó cho lợi ích riêng của họ.
Phương pháp khoa học không phải là một điều gì rất cụ thể mà nó mang tính hệ
thống, trực tiếp và khá dễ để sử dụng và học hỏi thậm chí đối với những người không
phải là các nhà khoa học với các mối quan tâm khác nhau.
GVHD: Hoàng Văn Kiếm Trang 7/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
III. Đề tài nghiên cứu khoa học
a. Khái niệm đề tài
Đề tài là một hình thức tổ chức NCKH do một người hoặc một nhóm người
thực hiện. Một số hình thức tổ chức nghiên cứu khác không hoàn toàn mang tính chất
nghiên cứu khoa hoc, chẳng hạn như: chương trình, dự án, đề án.

b. Đối tượng nghiên cứu và phạm vi nghiên cứu
Đối tượng nghiên cứu: là bản chất của sự vật hay hiện tượng cần xem xét và
làm rõ trong nhiệm vụ nghiên cứu.
Phạm vi nghiên cứu: đối tượng nghiên cứu được khảo sát trong trong phạm vi
nhất định về mặt thời gian, không gian và lĩnh vực nghiên cứu.
c. Mục đích và mục tiêu nghiên cứu
Khi viết đề cương nghiên cứu, một điều rất quan trọng là làm sao thể hiện được
mục tiêu và mục đích nghiên cứu mà không có sự trùng lấp lẫn nhau. Vì vậy, cần thiết
để phân biệt sự khác nhau giữa mục đích và mục tiêu.
Mục đích: là hướng đến một điều gì hay một công việc nào đó trong nghiên
cứu mà người nghiên cứu mong muốn để hoàn thành, nhưng thường thì mục đích khó
có thể đo lường hay định lượng.
Mục tiêu: là thực hiện hoạt động nào đó cụ thể, rõ ràng mà người nghiên cứu sẽ
hoàn thành theo kế hoạch đã đặt ra trong nghiên cứu. Mục tiêu có thể đo lường hay
định lượng được.
GVHD: Hoàng Văn Kiếm Trang 8/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
B.PHƯƠNG PHÁP LUẬN SÁNG TẠO VÀ ĐỔI MỚI TRONG
KHOA HỌC
I. Khái niệm, đối tượng, mục đích và ý nghĩa
Phương pháp luận sáng tạo và đổi mới là phần ứng dụng của Khoa học về sáng
tạo, bao gồm hệ thống các phương pháp và các kĩ năng cụ thể giúp nâng cao năng suất
và hiệu quả, về lâu dài tiến tới điều khiển tư duy sáng tạo của người sử dụng.
Đối tượng mà môn học nghiên cứu và hoàn thiện là tư duy sáng tạo – quá trình
suy nghĩ giải quyết vến đề và ra quyết định của mỗi người.
Mục đích của môn học là trang bị cho những người học hệ thống các phương
pháp và các kĩ năng cụ thể, giúp họ nâng cao năng suất, hiệu quá, về lâu dài, tiến tới
điều khiển tư duy sáng tạo (quá trình suy nghĩ giải quyết vấn đề và ra quyết định) của
họ.
Các ích lợi: cuộc đời của mỗi người là chuỗi các vấn đề cần giải quyết, chuỗi

các quyết định cần phải đưa ra. Nếu như giải quyết vấn đề không tốt, đưa ra các quyết
định sai, sẽ phải trả giá về thời gian, sức khỏe, phương tiện vật chất, tiền bạc, địa vị,
danh tiếng…
Ý nghĩa nhân đạo và phát triển con người: phương pháp luận sáng tạo và đổi
mới trong khoa học nhắm tới hoàn thiện tư duy sáng tạo cũng là nhắm tới hoàn thiện
con ngừoi trong các mối quan hẹ con ngừoi với con người, con người với xã hội, con
ngừoi với công cụ lao động (hiểu theo nghĩa rộng) và con người với tự nhiên.
II. Những nội dung chính
a. Vấn đề khoa học
Vấn đề khoa học (scientific problem) còn gọi là vấn đề nghiên cứu (research
problem) là câu hỏi đặt ra khi người nghiên cứu đứng trước mâu thuẫn giữa tính hạn
chế của tri thức khoa học hiện có với yêu cầu phát triển tri thức đó ở trình độ cao hơn.
Nghiên cứu khoa học luôn tồn tại 2 vấn đề:
Vấn đề về bản chất sự vật đang tìm kiếm.
GVHD: Hoàng Văn Kiếm Trang 9/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Vấn đề về phương pháp nghiên cứu để làm sáng tỏ về lý thuyết và thực tiễn
những vấn đề thuộc lớp thứ nhất
b. Các phương pháp phát hiện vấn đề khoa học
Có 6 phương pháp:
1) Tìm những kẻ hở, phát hiện những vấn đề mới
2) Tìm những bất đồng
3) Nghĩ ngược lại quan niệm thông thường
4) Quan sát những vướng mắt trong thực tiễn
5) Lắng nghe lời kêu ca phàn nàn
6) Cảm hứng: những câu hỏi bất chợt xuất hiện khi quan sát sự kiện nào đó.
c. Phương pháp giải quyết vấn đề khoa học về phát minh, sáng chế
Có 5 phương pháp:
• Dựng Vepol đầy đủ
• Chuyển sang Fepol

• Phá vở Vepol
• Xích Vepol
• Liên trường
Có 40 thủ thuật (nguyên tắc) sáng tạo cơ bản:
1. Nguyên tắc phân nhỏ
2. Nguyên tắc “tách khỏi”
3. Nguyên tắc phẩm chất cục bộ
4. Nguyên tắc phản đối xứng
5. Nguyên tắc kết hợp
6. Nguyên tắc vạn năng
7. Nguyên tắc “chứa trong”
GVHD: Hoàng Văn Kiếm Trang 10/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
8. Nguyên tắc phản trọng lượng
9. Nguyên tắc gây ứng suất sơ bộ
10.Nguyên tắc thực hiện sơ bộ
11.Nguyên tắc dự phòng
12.Nguyên tắc đẳng thế
13.Nguyên tắc đảo ngược
14.Nguyên tắc cầu (tròn) hoá
15.Nguyên tắc linh động
16.Nguyên tắc giải “thiếu” hoặc “thừa”
17.Nguyên tắc chuyển sang chiều khác
18.Nguyên tắc sử dụng các dao động cơ học
19.Nguyên tắc tác động theo chu kỳ
20.Nguyên tắc liên tục tác động có ích
21.Nguyên tắc “vượt nhanh”
22.Nguyên tắc biến hại thành lợi
23.Nguyên tắc quan hệ phản hồi
24.Nguyên tắc sử dụng trung gian

25.Nguyên tắc tự phục vụ
26.Nguyên tắc sao chép (copy)
27.Nguyên tắc “rẻ” thay cho “đắt”
28.Thay thế sơ đồ cơ học
29.Sử dụng các kết cấu khí và lỏng
30.Sử dụng vỏ dẻo và màng mỏng
31.Sử dụng các vật liệu nhiều lỗ
32.Nguyên tắc thay đổi màu sắc
33.Nguyên tắc đồng nhất
GVHD: Hoàng Văn Kiếm Trang 11/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
34.Nguyên tắc phân hủy hoặc tái sinh các phần
35.Thay đổi các thông số hoá lý của đối tượng
36.Sử dụng chuyển pha
37.Sử dụng sự nở nhiệt
38.Sử dụng các chất oxy hoá mạnh
39.Thay đổi độ trợ
40.Sử dụng các vật liệu hợp thành (composite)
d. Các phương pháp giải quyết vấn đề tổng quát
1) Các phương pháp phân tích vấn đề
Phân chia vấn đề
Phân loại vấn đề
Phân công vấn đề
Phân cấp bài toán
Phân tích
2) Các phương pháp tổng hợp vấn đề
Tổ hợp
Đối hợp
Tích hợp
Kết hợp

Tổng hợp theo không gian và thời gian
6. Các phương pháp giải quyết vấn đề trong tin học
Phương pháp trực tiếp
Phương pháp gián tiếp
Phương pháp Thử Sai
Phương pháp Heuristic
GVHD: Hoàng Văn Kiếm Trang 12/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Phương pháp Trí Tuệ Nhân Tạo
C. ÁP DỤNG CÁC NGUYÊN TẮC SÁNG TẠO VÀO NHỮNG VẤN
ĐỀ CỤ THỂ TRONG CÔNG NGHỆ THÔNG TIN
Kể từ khi máy tính cá nhân (Personal Computer - PC) bùng nổ, đem đến sự tiếp
cận đại chúng với ngành công nghệ thông tin thì lĩnh vực phần mềm luôn phát triển
sôi động hơn phần cứng về mặt phát minh sáng tạo. Không như phần cứng phải tốn
chi phí đầu tư trang thiết bị để thử nghiệm, dây chuyền sản xuất và hệ thống phân
phối phức tạp, phần mềm có thể được sản xuất chỉ với một máy tính cá nhân (PC) và
được sao chép ra hàng trăm bản để phân phối với đến người dùng cuối thông qua
mạng toàn cầu internet.
Chi phí đầu tư gần như không đáng kể cho phép bất cứ một ai cũng có thể thoả
chí đam mê phát minh sáng chế với lĩnh vực phần mềm và thực tế rất nhiều sản phẩm
phần mềm hiện nay thu về hàng triệu đô lại được thực hiện bởi những sinh viên chưa
tốt nghiệp hay thậm chí chỉ là một học sinh trung học. Sự ra đời của công ty facebook
và sự nổi tiếng của trò chơi Angry bird cho ta những ví dụ trước mắt về một ngành
công nghiệp nơi sự sáng tạo có thể tạo ra những sự đột phá to lớn vượt qua mọi rào
cản về vốn, về kinh nghiệm.
Thậm chí ngành công nghiệp phần mềm có mức độ vận động sáng tạo và
chuyển hóa nhanh đến nỗi những nền tảng pháp lý về sở hữu trí tuệ vốn trước nay
được xem là để bảo vệ quyền lợi của nhà phát minh sáng chế lại trở thành rào cản cho
sự tự do sáng tạo. Phần này sẽ điểm qua lịch sử của ngành công nghệ phần mềm và
các xu hướng phát triển phần mềm hiện tại, các tranh cãi vẫn đang tiếp diễn liên quan

đến sở hữu trí tuệ đối với phần mềm. Từ đó chúng ta có thể nhìn thấy một bức tranh
muôn màu về việc áp dụng các nguyên lý sáng tạo vào ngành công nghiệp phần mềm
cũng như làm sao thúc đẩy sự sáng tạo trong công nghệ thông tin.
GVHD: Hoàng Văn Kiếm Trang 13/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Mục cuối cùng của phần này sẽ mô tả lại quá trình xây dựng một phần mềm sơ
khai, chỉ tận dụng các nguyên tắc sáng tạo mà không theo một lối mòn cho trước nào.
I. Sự giải phóng của ngành phần mềm và bùng nổ sáng tạo trong
công nghệ thông tin
Từ thời kỳ của những cỗ máy tính siêu lớn những năm 50, đến giai đoạn bùng
nổ máy tính cá nhân, và cho đến thời kỳ chớm nở của điện toán đám mây và máy tính
bảng. Mục này điểm qua sơ lược lịch sử ngành công nghệ phần mềm với những sáng
tạo và phát kiến đã ghi dấu vào lịch sử.
a. Giai đoạn 1: Phần mềm là gắn liền với phần cứng
Thập niên 60 của thế kỷ XX đánh dấu một bước thay đổi to lớn đối với ngành
công nghiệp phần mềm. Trước thập niên 60 không ai nghĩ đến một ngành công nghiệp
phần mềm, người ta xem phần mềm như là một phần gắn liền với phần cứng máy
tính. Những cổ máy tính khổng lồ to bằng cả toà nhà được lập trình trước một số chức
năng nhất định và thường được cho thuể sử dụng theo giờ. Do thời gian làm việc với
máy hạn chế, rất ít kỹ sư có khả năng cũng như điều kiện nghiên cứu phát triển phần
mềm trên máy, nhà sản xuất chỉ sản xuất những phần mềm cần thiết để máy hoạt động
và không thu phí phần mềm cũng như không đầu tư phát triển phần mềm cho máy
tính.
Tuy nhiên sự thay đổi đột phá đầu tiên đến từ một tên tuổi không mấy xa lạ:
công ty IBM. Năm 1964, như một ví dụ điển hình cho “nguyên tắc linh động” trong
40 nguyên tắc sáng tạo khoa học/kỹ thuật, IBM công bố sản phẩm System/360. Thay
vì các sản phẩm máy tính trước đây chỉ được thiết kế tối ưu cho một số công việc nhất
định, IBM tung ra một họ các máy tính với một thiết kế tương tự nhau, sử dụng chung
phần mềm nhưng có nhiều kích thước và tốc độ xử lý tính toán khác nhau.
Các công ty vừa và nhỏ có thể dễ dàng trang bị một máy tính cỡ nhỏ của hệ

thống System/360 cùng các phần mềm cần thiết và khi công ty phát triển họ có thể
chuyển sang sử dụng một máy tính lớn hơn mà vẫn đảm bảo tương thích. Sự linh
động này đánh dấu một bước đột phá trong ngành công nghiệp máy tính. Giờ đây máy
tính từ những cổ máy khổng lồ chỉ có thể cho thuê chứ ít ai mua nổi nay đã trở nên dễ
dàng tiếp cận hơn. Sự thành công mày System/360 mang lại cho IBM lớn đến nỗi
GVHD: Hoàng Văn Kiếm Trang 14/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
chính hãng đã thừa nhận đây là sản phẩm quan trọng nhất trong lịch sử công ty từ
trước đến nay[9]. Đồng thời, System/360 cũng mở ra một kỷ nguyên mới cho ngành
công nghiệp phần mềm khi giờ đây phần mềm có thể chạy trên nhiều máy tính khác
nhau.
Không chỉ sáng tạo đôt phá về mặt kỹ thuật, năm 1969, IBM tiếp tục đề xuất
một đột phá mới trong mô hình kinh doanh áp dụng “nguyên tắc phân nhỏ” khi chia
sản phẩm máy tính thành 3 phần riêng biệt bao gồm: Phần cứng, phần mềm và dịch
vụ. Theo đó IBM sẽ tính phí riêng cho việc cung cấp phần cứng, phát triển phần mềm
theo yêu cầu, tổ chức các khóa đào tạo sử dụng máy tính, dịch vụ hỗ trợ khách hàng
khi có sự cố, v.v Mô hình kinh doanh đột phá này chính thức khai sinh ngành công
nghiệp phần mềm và dịch vụ, mở đường cho sự bùng nổ sáng tạo không ngừng của
công nghệ thông tin.
b. Giai đoạn 2: Định hình nền công nghiệp với sự trỗi dậy của máy tính cá
nhân
Khi mới khai sinh ngành công nghiệp phần mềm phát triển khá chậm chạp. Các
hệ thống phần cứng máy tính bấy giờ vẫn còn có giá khá cao và phần mềm chỉ tương
thích với một số phần cứng nhất định. Điều này dẫn đến việc thị trường phần mềm
khá manh múng với lượng khách hàng tương đối ít và vẫn còn lệ thuộc khá nhiều vào
phần cứng. Các công ty lớn vẫn xem phần mềm là một loại hình dịch vụ giá trị gia
tăng cho phần cứng và chưa đầu tư đúng mức cho lĩnh vực này.
Giai đoạn đầu của thập niên 70 cũng đánh dấu sự ra đời của hai nhân tố quan
trọng là mạng Internet và đĩa mềm (floppy disk). Hai công cụ này cho phép phần mềm
được chia sẻ và trao đổi cực kỳ dễ dàng giữa những người dùng máy tính tạo ra một

kênh phân phối phần mềm độc lập không cần thông qua các công ty sản xuất phần
cứng. Và đặc biệt hơn internet cho phép trao đổi giữa những người đam mê máy tính
(hobbyist) - những lập trình viên, những kỹ sư phần mềm tương lai. Họ có thể tự mình
phát triển phần mềm, chia sẻ phần mềm đó với cộng đồng người dùng trên internet và
nhận được các phản hồi góp ý để cùng nhau tiến bộ.
Đây chính là hạt giống ban đầu cho phong trào mã nguồn mở và các công ty
sản xuất phần cứng hết sức vui vẻ chào đón các cộng đồng những người đam mê máy
tính này. Trước hết vì họ là những khách hàng tiềm năng và luôn sẵn sàng đó nhận sản
phẩm mới, hơn nữa sự phong phú về phần mềm do những lập trình viên ban sơ này
GVHD: Hoàng Văn Kiếm Trang 15/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
viết ra sẽ thúc đẩy doanh số phần cứng.
Tuy nhiên môi trường phát triển và chia sẻ phần mềm dựa theo đam mê này lại
gây ảnh hưởng đến doanh thu của những công ty chỉ chuyên phát triển phần mềm.
Công ty Microsoft thành lập năm 1975 với sản phẩm đầu tay là phần mềm Altair
BASIC cho máy MITS. Tuy nhiên trong khi máy MITS được bán ra hành nghìn chiếc
mỗi tháng thì trong suốt cả năm ròng phần mềm Altair BASIC chỉ bán được vài trăm
phiên bản. Tháng 2 năm 1976, Bill Gate, viết một bức thư ngỏ cho tất cả người đam
mê máy tính (Open letter to Hobbyist) được xuất bản trên nhiều tạp chí. Trong đó ông
than phiền về việc có quá ít người dùng Altair BASIC thật sự trả tiền mua phần mềm
này. Cho rằng việc sao chép phần mềm sẽ làm nản lòng những nhà lập trình viên
muốn tham gia ngành công nghiệp phần mềm vừa chớm nở, ông lên án hành vi sao
chép phần mềm là bất công và trộm cắp.
Bức thư của Bill Gate nhận được nhiều sự phản ứng dữ dội nhưng cũng có
nhiều người tán đồng quan điểm của Bill Gate. Trong những phát biểu và hướng đi
tiếp theo của mình, ông đã áp dụng triệt để “nguyên tắc chuyển sang chiều khác”,
thay vì xem phần mềm là một sản phẩm phụ trợ được bán theo phần cứng, ông xem
phần mềm là một tác phẩm của lao động sáng tạo, được bảo hộ bởi quyền tác giả và
tác giả phần mềm có quyền thu hoa hồng trên mỗi phiên bản copy phần mềm được
phát hành.

Cách tiếp cận này nhanh chóng thu hút được sự chú ý của nhiều công ty phần
mềm khác và xu hướng phần mềm mã nguồn đóng dần được hình thành. Theo đó
phần mềm sẽ được phân phối dưới dạng mã nhị phân, độc lập với phần cứng và người
dùng sẽ mua một license trong đó thường quy định rõ họ không được phép xem lén
mã nguồn, không được phân phát phần mềm cho người khác và chỉ được dùng trên
một số lượng máy tính nhất định.
Phương thức kinh doanh phần mềm này nhận được một sự thúc đẩy vượt bậc
hơn nữa khi máy tính cá nhân của IBM ra đời. Một dòng máy tính đủ rẻ để cá nhân và
gia đình có thể mua được mở ra một thì trường vô cùng to lớn cho các nhà phát triển
phần mềm. Microsoft nhanh chóng nhảy vào thị trường cung cấp phần mềm cho máy
tính cá nhân với hệ điều hành DOS và nhanh chóng xác lập được vị trí thống trị của
mình trong ngành công nghiệp phần mềm còn non trẻ này.
GVHD: Hoàng Văn Kiếm Trang 16/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
c. Sự trỗi dậy của phần mềm mã nguồn mở và câu chuyện Tái ông thất mã
Cuối thập niên 70, thị trường phần mềm chuyển hướng sang mô hình kinh
doanh mã nguồn đóng do Bill Gate khởi sướng tuy mang lại một luồng sinh khí mới
cho công nghệ thông tin nhưng cũng để lại một số mặt trái:
Những người đam mê tin học, những nhà tiên phong trong lĩnh vực công nghệ
phần mềm cảm thấy họ bị đặt vào một tình thế bị phản bội. Họ đã góp phần thúc đẩy
sự phát triển của ngành công nghiệp máy tính nhưng bây giờ họ bị cấm không được
xem mã nguồn phần mềm. Những phần mềm trước đây họ phát tham gia phát triển bị
các công ty lớn đem về chỉnh sửa cho hoàn thiện và bán với giá không thể mua được.
Thậm chí một số công ty đăng ký bảo hộ phần mềm bằng hình thức “bằng sáng chế”
patent có thể yêu cầu cấm việc phát triển và sử dụng những phần mềm cùng tính năng.
Bức bối trước tình trạng lợi dụng luật sở hữu trí tuệ để bóp chẹt sáng tạo hòng
độc quyền kinh doanh, Richard Stallman - cha đẻ của tổ chức Phần mềm tự do đã
tương kế tựu kế - sử dụng nguyên tắc “Biến hại thành lợi”, dùng chính luật sở hữu trí
tuệ để xây dựng một hành lang pháp lý cho trào lưu phần mềm nguồn mở. Giấy phép
công cộng phổ quát (General Public License – GPL) ra đời với phương châm của

phần mềm tự do. Theo đó bất kỳ người nào có một bảng copy của phần mềm cũng sẽ
sở hữu ngay quyền được tự do sửa đổi, sao chép, phân phối lai phần mềm đó với duy
nhất một điều kiện: Mọi sản phẩm được phát triển tiếp theo dựa trên phần mềm đó
cũng sẽ phải mang giấp phép GPL.
Hành lang pháp lý vững chắc của GPL cho phép hoạt động chia sẻ phần mềm
từ một hành vi bị lên án nhầm là trộm cắp nay trở thành một hoạt động tự do dưới sự
bảo vệ của luật pháp. Dưới sự bảo trợ này Stallman và tổ chức phần mềm tự do bắt
tay vào việc xây dựng một loạt phần mềm tự do mang giấy phép GPL để thay thế cho
các phần mềm thương mại hiện có đang chuyển dần sang mã nguồn đóng, từ hoạt
động này mà hệ điều hành linux ra đời và dần dần phát triển thành một sản phẩm duy
nhất khả dĩ cạnh tranh được với Microsoft windows về thị phần hệ điều hành cho máy
tính cá nhân.
Phong trào phần mềm tự do hay mã nguồn mở tiếp tục phát triển lên một tầm
mức mới với sự kiện có liên quan đến sự ra đời của world wide web. Đầu thập niên
90, Microsoft phát hành trình duyệt Internet Explorer để cạnh tranh với trình duyệt
Netscape Navigator của công ty Netscape Communication. Tuy là một trong những
GVHD: Hoàng Văn Kiếm Trang 17/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
công ty tiên phong với sự ra đời của world wide web và chiếm đến 95% thị phần trình
duyệt web, Netscape nhanh chóng bị Microsoft đẩy lùi bằng con át chủ bài: Windows.
Sau khi Microsoft quyết định phát hành miễn phí Internet Explorer như một phần
Windows vào năm 1995, thị phần của Internet Explorer nhanh chóng tăng lên 50% và
dần dần đẩy Netscape Navigator vào chỗ nguy khốn. Đến năm 1997 sau khi Microsoft
tăng cường việc tích hợp một số chuẩn lạ vào Internet Explorer khiến cho các trang
web duyệt tốt trên Internet Explorer có thể không chạy được trên trình duyệt
Netscape, 90% thị trường trình duyệt web đã rơi vào tay Internet Explorer,.
Trước tình thế đó, công ty Netscape communication đã có một quyết định cực
kỳ táo bạo: “Phát hành mã nguồn Netscpae Navigator dưới giấy phép mã nguồn mở”.
Quyết định này về sau được giải thích nhằm tránh thế độc quyền về trình duyệt web
của Microsoft, một khi Microsoft nắm độc quyền trình duyệt web, họ sẽ có khả năng

thao túng quá trình phát triển của giao thức HTTP và chuẩn world wide web, từ đó
làm bàn đạp xâm chiếm thị trường máy chủ web và độc quyền gần như toàn bộ
internet.
Việc mã nguồn mở Netscape Navigator cho phép các chuyên gia về tin học có
thể tiếp tục tham gia phát triển trình duyệt này dưới sự bảo trợ của giấy phép GPL và
không bị Microsoft lợi dụng. Sự kiện này mở ra một hướng đi mới cho mã nguồn mở,
từ chỗ là kẻ thù của doanh nghiệp thì nay mã nguồn mở trở thành một lợi thế trong
kinh doanh. Thay vì thu phí phần mềm thật cao doanh nghiệp sẽ tận dụng sự trợ giúp
của các cộng đồng người sử dụng có đam mê và kinh nghiệm để phát triển phần mềm.
Phần mềm đó được mã nguồn mở để tránh sự lợi dụng đánh cắp mã nguồn từ đối thủ.
Với việc giảm được gánh nặng trong phát triển phần mềm, công ty có thể tập trung
vào thu lợi từ cách dịch vụ kèm theo.
II. Áp dụng các nguyên tắc sáng tạo trong xây dựng phần mềm
a. Nhu cầu thực tế.
Chia sẻ dữ liệu giữa các máy là một nhu cầu khá phổ biến trong thực tế làm
việc với máy tính. Nếu như trong môi trường mạng cục bộ (LAN) việc chia sẻ dữ liệu
diễn ra khá dễ dàng, thì trong môi trường internet, mọi việc lại không được suôn sẻ
như thế. Về cơ bản, việc chia sẻ file giữa các máy đang kết nối chung trong một mạng
là không khó. Tuy nhiên, do đặt cao tính bảo mật nên khả năng chia sẻ file tích hợp
GVHD: Hoàng Văn Kiếm Trang 18/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
trong hệ thống thường bị chặn trong mội trường internet. Để chia sẻ file người dùng
thường có một số lựa chọn:
1. Chép file vào thiết bị lưu trữ ngoài rồi chạy đến chỗ máy cần nhận file.
Dễ thấy phương án này không khả thi nếu hai máy cách nhau quá xa về địa lý
2. Biến máy mình thành một server chia sẻ file trên máy (vd FTP server)
Phương án này đòi hỏi nhiều kiến thức chuyên môn về công nghệ thông tin.
3. Sử dụng tính năng send file có sẵn trong các chương trình chat (instant
message). Phương án này phải lệ thuộc vào nhà cung cấp dịch vụ tin nhắn tức
thời, khi dịch vụ có sự cố, tính năng send file cũng tiêu tùng theo.

4. Upload file cần chia sẻ lên một server chuyên lưu trữ file. Phương án
này tốn thời gian do đòi hỏi file phải được tải lên hoàn chỉnh trước khi người
nhận có thể tải về
5. Sử dụng chương trình chia sẻ file qua mạng ngang hàng. Đây là phương
án rất khả thi, tuy nhiên các trình chia sẻ file qua mạng ngang hàng hiện nay
tương đối khó sử dụng với người dùng cuối.
b. Phân tích các giải pháp đã có và tìm ra vấn đề:
Với nhu cầu không ngừng gia tăng mỗi ngày của con người thì các phương án
đã nêu ở mục trước không trán khỏi những hạn chế nhất định. Áp dụng các phương
pháp phát hiện vấn đề đã được học, ta có thể thấy còn rất nhiều vướng mắc cần giải
quyết.
Áp dụng nguyên tắc thứ 4, từ thực tiễn quan sát và sử dụng các phương án đã
nêu nhiều năm nay, ta nhận thấy còn một số vướng mắc:
1. Có nhiều phương án bị lệ thuộc vào một nhà cung cấp dịch vụ thứ 3. Khi
tập tin được tải lên một dịch vụ chia sẻ file hay truyền qua một ứng dụng
chat nào đó thì cả bên truyền và bên nhận đều phải tiếp cận được dịch vụ
này. Bất kỳ sự cố nào khi kết nối với nhà cung cấp dịch vụ cũng khiến
việc truyền tải tập tin không thực hiện được, mặc dù người gửi và nhận
vẫn có thể kết nối trực tiếp với nhau.
2. Có nhiều phương án quá chuyên sâu về kỹ thuật. Việc thiết lập một
mạng ngang hàng hoặc một máy chủ là một mảng khá chuyên biệt trong
GVHD: Hoàng Văn Kiếm Trang 19/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
công nghệ thông tin. Và các công cụ để thực hiện việc này không được
thiết kế dành cho người dùng ít kinh nghiệm.
Áp dụng nguyên tắc thứ 5, lắng nghe những phàn nàn từ người dùng chúng ta
có thể thấy còn những điểm sau:
1. Nhiều phương án không chú trọng tính năng tạm dừng truyền tải file và
tiếp tục truyền tải khi thuận tiện. A truyền cho B một file khá lớn, giữa
chừng A có việc phải đi không thể tiếp tục truyền file, khi A quay lại việc

truyền file phải bắt đầu lại từ đầu. Hoặc A và B đang truyền file thì mạng
có sự cố, khi sự cố được khắc phục việc truyền file phải bắt đầu lại từ
đầu. Người dùng rất khó chịu khi truyền những file lớn bằng các phương
án bất ổn như vậy.
2. Nhiều phương án không chú trọng đến việc kiểm tra file đã truyền đi có
nguyên vẹn hay không: A send cho B một file video khá lớn, B mở ra
xem và thấy có vẻ bình thường. Tuy nhiên, khi xem đến gần cuối video
thì phát hiện file bị lỗi và video không hiển thị được phần cuối. Lúc này
A đã đi đâu đó và không thể truyền lại tập tin. Mặc dù kết nối internet
ngày nay dùng giao thức TCP/IP có khả năng kiểm tra lỗi. Tuy nhiên,
với những sự cố phát sinh không phải trong lúc truyền mà trong lúc lưu
dữ liệu trên máy hay lúc ngắt rồi tiếp tục quá trình truyền thì giao thức
TCP/IP không can thiệp được.
3. Có thể phương án kiểm tra được file truyền đi có lỗi hay không nhưng
không có cách sửa lỗi: A truyền cho B một file nén, các chuẩn nén file
hiện nay có tích hợp chức năng kiểm tra tính toàn vẹn, nếu file bị lỗi sẽ
không giải nén được. Tuy nhiên dù file chỉ bị lỗi nhỏ nhưng B không có
cách nào khác ngoài việc báo A truyền lại toàn bộ file.
c. Xác định lại vấn đề.
Để giải quyết các vướng mắc trên, em quyết định cố gắng tạo ra một chương
trình nhỏ gọn, có khả năng send file qua mạng, nhưng hội tụ đầy đủ tính năng cần
thiết. Các yêu cầu mà em đặt ra cho chương trình của mình là:
1. Gọn nhẹ, đơn giản, dễ sử dụng. Chương trình sẽ có dung lượng cỡ 1
MB, để thuận lợi trong việc chia sẻ vì trước khi chia sẻ file, người dùng phải
GVHD: Hoàng Văn Kiếm Trang 20/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
chia sẻ chính bản thân của chương trình.
2. Có thể send một file cho nhiều người, những người đang nhận file có thể
cùng send cho nhau. Ý tưởng từ giao thức truyền dữ liệu bittorrent, tính năng
này giúp quá trình chia sẽ dữ liệu sẽ nhanh chóng hơn. Đặc biệt là khi có nhiều

người cùng tham gia quá.
3. Có khả năng resume sau khi bị gián đoạn. Tính năng cơ bản nhưng hầu
hết nhung chương trình send file thông dụnng thường “quên” đưa vào. Nhờ
tính năgn này, công việc chia sẽ trở nên thuận tiện và ngươi dùng có thể chủ
động hơn về thời gian, nhất là với file có kích thước lớn
4. Có khả năng kiểm tra tính toàn vẹn của file sau khi send, những phần
send sai sẽ bị phát hiện và send lại, không nhất thiết phải send lại toàn bộ file.
5. Hỗ trợ file với kích thước không giới hạn. Chỉ cần .Net framework có thể
open file đó chương trình có thể send được, không có giới hạn về dung lượng.
GVHD: Hoàng Văn Kiếm Trang 21/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
III. Sáng tạo, phát triển từ những công cụ đã có:
Không ai có thể sáng tạo tất cả mọi thứ bắt nguồn từ con số 0 nên việc khắc
phục các hạn chế nêu trên cũng phải bắt nguồn từ những phương án, giải pháp, công
nghệ, công cụ đã có sẵn.
Ở đây phương án được chọn để cải tiến là giao thức chia sẻ file qua mạng
ngang hàng bittorrent. Nền tảng công nghệ được sử dụng là Windows và Microsoft
.NET Framework.
a. Giao thức bittorrent.
Bittorrent là một giao thức được dùng để chia sẻ file trên mạng ngang hàng
(peer-to-peer), được dùng để chuyển những file và dữ liệu lớn và rất lớn. Được thiết
kế và cài đặt bởi Bram Cohen, phiên bản đầu tiên của bittorrent ra mắt vào ngày
2/7/2001
[1]
, hiện Bitttorrent là một trong những phương thức chia sẻ file phổ biến
nhất thế giới. Năm 2002, bittorrent chiếm 35% tổng dung lượng truyền tải trên
internet
[2]
.
Torrent hoạt động bằng cách chia file thành nhiều “piece” kích thước mỗi piece

dao động từ 256KiB đến 4MiB. Mỗi piece này được đánh số bắt đầu từ 0, SHA-1
Hash của mỗi piece cũng được tính và lưu vào một file siêu dữ liệu với phần đuôi
thường là .torrent. Trước khi chia sẻ được dữ liệu thật, người dùng phải tìm cách chia
sẻ file siêu dữ liệu này với nhau. Để máy của người dùng (peers) có thể kết nối với
nhau, torrent sử dụng một server làm trung gian (tracker), server này không tham gia
truyền dữ liệu mà chỉ lưu trữ thông tin về IP và port của những peers đang chia sẻ
cùng file torrent đó và gửi thông tin này đến cho các peers.
Trong giao thức bittorrent có 8 thông điệp (message) khác nhau, mỗi thông
điệp mang một ý nghĩa riêng và không nhất thiết phải đi đồng bộ với nhau. Khi nhận
thông điệp, clients có thể trả lời hoặc không, và nếu trả lời cũng không nhất thiết phải
theo một quy ước nào. Việc sử dụng 8 thông điệp đó như thế nào là tùy vào clients.
Cơ chế thoáng, không gò bó này cho phép mở ra nhiều kỹ thuật nhằm tận dụng hiệu
quả giao thức bittorrent. Trong 8 thông điệp đó có 4 thông điệp chính phục vụ cho
việc truyền dữ liệu:
GVHD: Hoàng Văn Kiếm Trang 22/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Thông điệp Tham số Ý nghĩa
4 – Have Integer Peers vừa download hoàn chỉnh một piece
5 – Bitfield Một dãy bit
chiều dài tương
ứng số pieces
Được send một lần ngay khi 2 peers vừa kết
nối. Cho biết peers đang có những pieces nào.
6 – Request 3 số nguyên Yêu cầu dữ liệu từ peers. 3 số nguyên bao
gồm:Số_thứ_tự_peice, Vị_trí_Byte_bắt_đầu,
Kích_thước_dữ_liệu.
7 – Piece 2 số nguyên + 1
dãy bytes
Thông điệp này chứa dữ liệu gửi. Tham số
gồm: Số_thứ_tự_peice, Vị_trí_Byte_bắt_đầu,

Dữ_liệu
Được thiết kế dành riêng cho việc chia sẻ file giữa các máy trạm, có thể nói
giao thức bittorrent cung cấp nền tảng cho mọi nhu cầu chía sẻ file. Tuy nhiên, các
chương trình sử dụng giao thức bittorrent vẫn còn chịu một số hạn chế đã được nêu.
Áp dung nguyên tắc phân nhỏ và tách khỏi ta sẽ lọc ra những phẩm chất cần thiết của
giao thức bittorrent đồng thời loại bỏ những phẩm chất tiêu cực như:
- Không để người dùng phải tự quản lý các file siêu dữ liệu. Thực tế cho
thấy, khúc mắc của những người mới dùng torrent hầu hết là không hiểu được
khái niệm và vai trò của file siêu dữ liệu .torrent. Với chương trình của em việc
tạo ra file siêu dữ liệu, lưu trữ và send file này giữa các clients là hoàn toàn tự
động. Đảm bảo tính thân thiện và dễ sử dụng với người dùng.
- Không có tracker. Do chỉ nhằm đáp ứng nhu cầu send file giữa một
nhóm người có quen biết trước và số lượng người không đông lắm nên chương
trình hoạt động không cần một server lưu thông tin về IP và port, người dùng sẽ
tự nhập thông tin này. Chương trình sẽ có chức năng tự động tìm IP đễ hỗ trợ
người dùng.
- Các thông điệp giờ đây là đồng bộ, không đặt nặng vấn đề “bánh ít đi
bánh quy lại” (tick-tack-toe). Trong giao thức torrent có 4 thông điệp để quản
lý peers, torrent clients thường chỉ ưu tiên send dữ liệu cho peers nào có dữ liệu
để trao đổi với nó. Các peers mới tham gia chia sẻ file, không có tí dữ liệu nào
sẽ bị chặn (choke) và được send dữ liệu một cách rất hạn chế.
GVHD: Hoàng Văn Kiếm Trang 23/45
Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
Do chương trình của em phục vụ việc chia sẻ file giữa bạn bè với nhau nên mọi
đối tượng tham gia chia sẻ file đều bình đẳng, khi nhận được thông điệp
chương trình sẽ trả lời ngay.
b. SHA-1 Hash và file checksum
Giải thuật băm (hash) là thuật toán mã hóa, chuyển đổi một khối dữ liệu cho
trước thành một đoạn dữ liệu có kích thước cố định gọi là hash value, sao cho với mỗi
khối dữ liệu chỉ có thể có một hash value duy nhất. Một thuật toán hash được gọi là có

khả năng “chống trùng lặp” (collision resistance)
[5]
nếu không thể tìm được hai khối
dữ liệu khác nhau lại có hash value giống nhau, và khi khối dữ liệu này thay đổi thì
hash value cũng sẽ thay đổi. Thực tế rất khó có giải thuật nào đảm bảo 100% khả
năng chống trùng lặp, tuy nhiên ta vẫn có thể chấp nhận giải thuật có trùng lặp của nó
là thấp. Các giải thuật hash chống trùng lặp được ứng dụng phổ biến vào các chiến
thuật checksum, trong đó SHA-1 và MD5 là hai giải thuật hash được biết đến hơn cả.
MD5(Message-Digest algorithm 5) được thiết kế bởi Ron Rivest
[4]
vào năm
1991 để thay thế giải thuật hash MD4, MD5 được ứng dụng vào các phần mềm đảm
bảo độ tin cậy khi chuyển file .
Năm 1993, Den Boer và Bosselaers đã đưa ra lời cảnh báo về lỗ hổng của giải
thuật MD5. Năm 1996, Dobbertin đã tuyên bố về lỗi của MD5 và khuyên mọi người
thay thế MD5 bằng SHA-1 hay RIPED-160. Kích thước của hash(128 bit) là khá nhỏ
đủ cho các sự tấn công. Tháng 3 năm 2004 một dự án mang tên MD5CRK với mục
đích chứng minh MD5 trên thực tế không an toàn bằng việc tìm các lỗi bởi các sự tấn
công. Ngày 17 tháng 4 năm 2004, MD5CRK đã được kết thúc, khi mà Xiaoyun Wang,
Dengguo Feng, Xuejia Lai, và Hongbo Yu tuyên bố đã tìm được lỗi của MD5. Hiện
nay MD5 đã không còn được công nhận là chống trùng lặp, nhưng khả năng của nó
vẫn còn đủ để dùng trong việc checksum file và một số ứng dụng cần bảo mật thấp.
SHA (Secure Hash Algorithm) được phát triển bởi NSA (National Security
Agency) và được xuất bản thành chuẩn của chính phủ Mỹ bởi viện công nghệ và
chuẩn quốc gia Mỹ (National Institute of Standards and Technology hay NIST). SHA
được chấp nhận bởi FIPS nhờ khả năng chống trùng lặp tốt. SHA có 5 thuật toán khác
nhau: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512. Trong đó, SHA-1 được sử
dụng rộng rãi trong nhiều ứng dụng và giao thức khác nhau, SHA-1 sẽ cho ra đoạn mã
hóa (hash value) có độ dài 160 bit từ một dữ liệu có kích thước tối đa là (2^64 – 1) bit.
GVHD: Hoàng Văn Kiếm Trang 24/45

Phạm Nguyễn Trường An Phương pháp nghiên cứu khoa học trong tin học
SHA-1 được dùng trong việc checksum dữ liệu, bên gửi khi chuyển dữ liệu cho
bên nhận sẽ chuyển kèm hash value của khối dữ liệu, khi đã hoàn tất việc truyền dữ
liệu bên nhận sẽ đối chiếu (checksum) hash value nhận được với hash value của dữ
liệu vừa nhận, nếu giống nhau thì chứng tỏ dữ liệu đã được truyền chính xác. SHA-1
dựa trên cơ sở MD4 và MD5 của Ron Rivest, nhưng thiết kế phức tạp hơn.
Lưu đồ SHA-1:
Trước khi bắt đầu tính hash, giá trị hash value ban đầu phải được khởi
tạo (số ghi ở dạng thập lục phân)
A= 67452301
B= efcdab80
C= 98badcfe
D= 10325476
E = c3d2e1f0.
5 giá trị hash value A, B, C, D, E này cuối cùng sẽ được ghép với nhau thành
giá trị hash cho dữ liệu. Tuy nhiên, trước đó, dữ liệu sẽ được chia thành những khối
512 bit và được xử lý qua hai bước như hai hình bên dưới hình dưới:fffffff
Bước 1: Mỗi khố 512 bit (bao gồm 16 từ, mỗi từ 32bit) sẽ được mở rộng thành 80 từ.
GVHD: Hoàng Văn Kiếm Trang 25/45

×