ĐẠ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
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)
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
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
• 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
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
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
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
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.
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
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,
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